File indexing completed on 2025-02-21 10:04:01
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
0030 #error "Include <hb.h> instead."
0031 #endif
0032
0033 #ifndef HB_COMMON_H
0034 #define HB_COMMON_H
0035
0036 #ifndef HB_EXTERN
0037 #define HB_EXTERN extern
0038 #endif
0039
0040 #ifndef HB_BEGIN_DECLS
0041 # ifdef __cplusplus
0042 # define HB_BEGIN_DECLS extern "C" {
0043 # define HB_END_DECLS }
0044 # else
0045 # define HB_BEGIN_DECLS
0046 # define HB_END_DECLS
0047 # endif
0048 #endif
0049
0050 #if defined (_AIX)
0051 # include <sys/inttypes.h>
0052 #elif defined (_MSC_VER) && _MSC_VER < 1600
0053
0054 typedef __int8 int8_t;
0055 typedef unsigned __int8 uint8_t;
0056 typedef __int16 int16_t;
0057 typedef unsigned __int16 uint16_t;
0058 typedef __int32 int32_t;
0059 typedef unsigned __int32 uint32_t;
0060 typedef __int64 int64_t;
0061 typedef unsigned __int64 uint64_t;
0062 #elif defined (_MSC_VER) && _MSC_VER < 1800
0063
0064 # include <stdint.h>
0065 #else
0066 # include <inttypes.h>
0067 #endif
0068
0069 #if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
0070 #define HB_DEPRECATED __attribute__((__deprecated__))
0071 #elif defined(_MSC_VER) && (_MSC_VER >= 1300)
0072 #define HB_DEPRECATED __declspec(deprecated)
0073 #else
0074 #define HB_DEPRECATED
0075 #endif
0076
0077 #if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
0078 #define HB_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
0079 #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320)
0080 #define HB_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead"))
0081 #else
0082 #define HB_DEPRECATED_FOR(f) HB_DEPRECATED
0083 #endif
0084
0085
0086 HB_BEGIN_DECLS
0087
0088
0089
0090
0091
0092
0093
0094 typedef int hb_bool_t;
0095
0096
0097
0098
0099
0100
0101
0102
0103 typedef uint32_t hb_codepoint_t;
0104
0105
0106
0107
0108
0109
0110
0111
0112 #define HB_CODEPOINT_INVALID ((hb_codepoint_t) -1)
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122 typedef int32_t hb_position_t;
0123
0124
0125
0126
0127
0128
0129 typedef uint32_t hb_mask_t;
0130
0131 typedef union _hb_var_int_t {
0132 uint32_t u32;
0133 int32_t i32;
0134 uint16_t u16[2];
0135 int16_t i16[2];
0136 uint8_t u8[4];
0137 int8_t i8[4];
0138 } hb_var_int_t;
0139
0140 typedef union _hb_var_num_t {
0141 float f;
0142 uint32_t u32;
0143 int32_t i32;
0144 uint16_t u16[2];
0145 int16_t i16[2];
0146 uint8_t u8[4];
0147 int8_t i8[4];
0148 } hb_var_num_t;
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164 typedef uint32_t hb_tag_t;
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176 #define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint32_t)(c1)&0xFF)<<24)|(((uint32_t)(c2)&0xFF)<<16)|(((uint32_t)(c3)&0xFF)<<8)|((uint32_t)(c4)&0xFF)))
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187 #define HB_UNTAG(tag) (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF)
0188
0189
0190
0191
0192
0193
0194 #define HB_TAG_NONE HB_TAG(0,0,0,0)
0195
0196
0197
0198
0199
0200
0201
0202 #define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
0203
0204
0205
0206
0207
0208
0209
0210 #define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
0211
0212
0213 HB_EXTERN hb_tag_t
0214 hb_tag_from_string (const char *str, int len);
0215
0216
0217 HB_EXTERN void
0218 hb_tag_to_string (hb_tag_t tag, char *buf);
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236 typedef enum {
0237 HB_DIRECTION_INVALID = 0,
0238 HB_DIRECTION_LTR = 4,
0239 HB_DIRECTION_RTL,
0240 HB_DIRECTION_TTB,
0241 HB_DIRECTION_BTT
0242 } hb_direction_t;
0243
0244
0245 HB_EXTERN hb_direction_t
0246 hb_direction_from_string (const char *str, int len);
0247
0248 HB_EXTERN const char *
0249 hb_direction_to_string (hb_direction_t direction);
0250
0251
0252
0253
0254
0255
0256
0257
0258 #define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268 #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
0269
0270
0271
0272
0273
0274
0275
0276
0277 #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
0278
0279
0280
0281
0282
0283
0284
0285
0286 #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
0287
0288
0289
0290
0291
0292
0293
0294
0295 #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
0296
0297
0298
0299
0300
0301
0302
0303
0304 #define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316 typedef const struct hb_language_impl_t *hb_language_t;
0317
0318 HB_EXTERN hb_language_t
0319 hb_language_from_string (const char *str, int len);
0320
0321 HB_EXTERN const char *
0322 hb_language_to_string (hb_language_t language);
0323
0324
0325
0326
0327
0328
0329
0330
0331 #define HB_LANGUAGE_INVALID ((hb_language_t) 0)
0332
0333 HB_EXTERN hb_language_t
0334 hb_language_get_default (void);
0335
0336 HB_EXTERN hb_bool_t
0337 hb_language_matches (hb_language_t language,
0338 hb_language_t specific);
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442
0443
0444
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524 typedef enum
0525 {
0526 HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'),
0527 HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'),
0528 HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'),
0529
0530 HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'),
0531 HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'),
0532 HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'),
0533 HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'),
0534 HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'),
0535 HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'),
0536 HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'),
0537 HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'),
0538 HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'),
0539 HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'),
0540 HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'),
0541 HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'),
0542 HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'),
0543 HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'),
0544 HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'),
0545 HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'),
0546 HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'),
0547 HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'),
0548 HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'),
0549 HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'),
0550 HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'),
0551 HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'),
0552
0553 HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'),
0554
0555 HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'),
0556 HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'),
0557 HB_SCRIPT_CANADIAN_SYLLABICS = HB_TAG ('C','a','n','s'),
0558 HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'),
0559 HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'),
0560 HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'),
0561 HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'),
0562 HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'),
0563 HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'),
0564 HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'),
0565 HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'),
0566 HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'),
0567 HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'),
0568 HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'),
0569
0570 HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'),
0571 HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'),
0572 HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'),
0573
0574 HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'),
0575 HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'),
0576 HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'),
0577 HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'),
0578
0579 HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'),
0580 HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'),
0581 HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'),
0582 HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'),
0583 HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'),
0584 HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'),
0585 HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'),
0586
0587 HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'),
0588 HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'),
0589 HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'),
0590 HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'),
0591 HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'),
0592 HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'),
0593 HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'),
0594 HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'),
0595
0596 HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'),
0597 HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'),
0598 HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'),
0599 HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'),
0600 HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'),
0601
0602 HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'),
0603 HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'),
0604 HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'),
0605 HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'),
0606 HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'),
0607 HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'),
0608 HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'),
0609 HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'),
0610 HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'),
0611 HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'),
0612 HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'),
0613
0614 HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'),
0615 HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'),
0616 HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'),
0617 HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'),
0618 HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'),
0619 HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'),
0620 HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'),
0621 HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'),
0622 HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'),
0623 HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'),
0624 HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'),
0625 HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'),
0626 HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'),
0627 HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'),
0628 HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'),
0629
0630 HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'),
0631 HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'),
0632 HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'),
0633
0634 HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'),
0635 HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'),
0636 HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'),
0637 HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'),
0638 HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'),
0639 HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'),
0640 HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'),
0641
0642
0643
0644
0645 HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'),
0646 HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'),
0647 HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'),
0648 HB_SCRIPT_ELBASAN = HB_TAG ('E','l','b','a'),
0649 HB_SCRIPT_GRANTHA = HB_TAG ('G','r','a','n'),
0650 HB_SCRIPT_KHOJKI = HB_TAG ('K','h','o','j'),
0651 HB_SCRIPT_KHUDAWADI = HB_TAG ('S','i','n','d'),
0652 HB_SCRIPT_LINEAR_A = HB_TAG ('L','i','n','a'),
0653 HB_SCRIPT_MAHAJANI = HB_TAG ('M','a','h','j'),
0654 HB_SCRIPT_MANICHAEAN = HB_TAG ('M','a','n','i'),
0655 HB_SCRIPT_MENDE_KIKAKUI = HB_TAG ('M','e','n','d'),
0656 HB_SCRIPT_MODI = HB_TAG ('M','o','d','i'),
0657 HB_SCRIPT_MRO = HB_TAG ('M','r','o','o'),
0658 HB_SCRIPT_NABATAEAN = HB_TAG ('N','b','a','t'),
0659 HB_SCRIPT_OLD_NORTH_ARABIAN = HB_TAG ('N','a','r','b'),
0660 HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'),
0661 HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'),
0662 HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'),
0663 HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'),
0664 HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'),
0665 HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'),
0666 HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'),
0667 HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'),
0668
0669 HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'),
0670 HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'),
0671 HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'),
0672 HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'),
0673 HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'),
0674 HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'),
0675
0676
0677
0678
0679 HB_SCRIPT_ADLAM = HB_TAG ('A','d','l','m'),
0680 HB_SCRIPT_BHAIKSUKI = HB_TAG ('B','h','k','s'),
0681 HB_SCRIPT_MARCHEN = HB_TAG ('M','a','r','c'),
0682 HB_SCRIPT_OSAGE = HB_TAG ('O','s','g','e'),
0683 HB_SCRIPT_TANGUT = HB_TAG ('T','a','n','g'),
0684 HB_SCRIPT_NEWA = HB_TAG ('N','e','w','a'),
0685
0686
0687
0688
0689 HB_SCRIPT_MASARAM_GONDI = HB_TAG ('G','o','n','m'),
0690 HB_SCRIPT_NUSHU = HB_TAG ('N','s','h','u'),
0691 HB_SCRIPT_SOYOMBO = HB_TAG ('S','o','y','o'),
0692 HB_SCRIPT_ZANABAZAR_SQUARE = HB_TAG ('Z','a','n','b'),
0693
0694
0695
0696
0697 HB_SCRIPT_DOGRA = HB_TAG ('D','o','g','r'),
0698 HB_SCRIPT_GUNJALA_GONDI = HB_TAG ('G','o','n','g'),
0699 HB_SCRIPT_HANIFI_ROHINGYA = HB_TAG ('R','o','h','g'),
0700 HB_SCRIPT_MAKASAR = HB_TAG ('M','a','k','a'),
0701 HB_SCRIPT_MEDEFAIDRIN = HB_TAG ('M','e','d','f'),
0702 HB_SCRIPT_OLD_SOGDIAN = HB_TAG ('S','o','g','o'),
0703 HB_SCRIPT_SOGDIAN = HB_TAG ('S','o','g','d'),
0704
0705
0706
0707
0708 HB_SCRIPT_ELYMAIC = HB_TAG ('E','l','y','m'),
0709 HB_SCRIPT_NANDINAGARI = HB_TAG ('N','a','n','d'),
0710 HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'),
0711 HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'),
0712
0713
0714
0715
0716 HB_SCRIPT_CHORASMIAN = HB_TAG ('C','h','r','s'),
0717 HB_SCRIPT_DIVES_AKURU = HB_TAG ('D','i','a','k'),
0718 HB_SCRIPT_KHITAN_SMALL_SCRIPT = HB_TAG ('K','i','t','s'),
0719 HB_SCRIPT_YEZIDI = HB_TAG ('Y','e','z','i'),
0720
0721
0722
0723
0724 HB_SCRIPT_CYPRO_MINOAN = HB_TAG ('C','p','m','n'),
0725 HB_SCRIPT_OLD_UYGHUR = HB_TAG ('O','u','g','r'),
0726 HB_SCRIPT_TANGSA = HB_TAG ('T','n','s','a'),
0727 HB_SCRIPT_TOTO = HB_TAG ('T','o','t','o'),
0728 HB_SCRIPT_VITHKUQI = HB_TAG ('V','i','t','h'),
0729
0730
0731
0732
0733 HB_SCRIPT_MATH = HB_TAG ('Z','m','t','h'),
0734
0735
0736
0737
0738 HB_SCRIPT_KAWI = HB_TAG ('K','a','w','i'),
0739 HB_SCRIPT_NAG_MUNDARI = HB_TAG ('N','a','g','m'),
0740
0741
0742
0743
0744 HB_SCRIPT_GARAY = HB_TAG ('G','a','r','a'),
0745 HB_SCRIPT_GURUNG_KHEMA = HB_TAG ('G','u','k','h'),
0746 HB_SCRIPT_KIRAT_RAI = HB_TAG ('K','r','a','i'),
0747 HB_SCRIPT_OL_ONAL = HB_TAG ('O','n','a','o'),
0748 HB_SCRIPT_SUNUWAR = HB_TAG ('S','u','n','u'),
0749 HB_SCRIPT_TODHRI = HB_TAG ('T','o','d','r'),
0750 HB_SCRIPT_TULU_TIGALARI = HB_TAG ('T','u','t','g'),
0751
0752
0753 HB_SCRIPT_INVALID = HB_TAG_NONE,
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766 _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX_SIGNED,
0767 _HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED
0768
0769 } hb_script_t;
0770
0771
0772
0773
0774 HB_EXTERN hb_script_t
0775 hb_script_from_iso15924_tag (hb_tag_t tag);
0776
0777 HB_EXTERN hb_script_t
0778 hb_script_from_string (const char *str, int len);
0779
0780 HB_EXTERN hb_tag_t
0781 hb_script_to_iso15924_tag (hb_script_t script);
0782
0783 HB_EXTERN hb_direction_t
0784 hb_script_get_horizontal_direction (hb_script_t script);
0785
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795 typedef struct hb_user_data_key_t {
0796
0797 char unused;
0798 } hb_user_data_key_t;
0799
0800
0801
0802
0803
0804
0805
0806
0807 typedef void (*hb_destroy_func_t) (void *user_data);
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820 #define HB_FEATURE_GLOBAL_START 0
0821
0822
0823
0824
0825
0826
0827
0828
0829
0830 #define HB_FEATURE_GLOBAL_END ((unsigned int) -1)
0831
0832
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845
0846
0847 typedef struct hb_feature_t {
0848 hb_tag_t tag;
0849 uint32_t value;
0850 unsigned int start;
0851 unsigned int end;
0852 } hb_feature_t;
0853
0854 HB_EXTERN hb_bool_t
0855 hb_feature_from_string (const char *str, int len,
0856 hb_feature_t *feature);
0857
0858 HB_EXTERN void
0859 hb_feature_to_string (hb_feature_t *feature,
0860 char *buf, unsigned int size);
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873 typedef struct hb_variation_t {
0874 hb_tag_t tag;
0875 float value;
0876 } hb_variation_t;
0877
0878 HB_EXTERN hb_bool_t
0879 hb_variation_from_string (const char *str, int len,
0880 hb_variation_t *variation);
0881
0882 HB_EXTERN void
0883 hb_variation_to_string (hb_variation_t *variation,
0884 char *buf, unsigned int size);
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894 typedef uint32_t hb_color_t;
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907 #define HB_COLOR(b,g,r,a) ((hb_color_t) HB_TAG ((b),(g),(r),(a)))
0908
0909 HB_EXTERN uint8_t
0910 hb_color_get_alpha (hb_color_t color);
0911 #define hb_color_get_alpha(color) ((color) & 0xFF)
0912
0913 HB_EXTERN uint8_t
0914 hb_color_get_red (hb_color_t color);
0915 #define hb_color_get_red(color) (((color) >> 8) & 0xFF)
0916
0917 HB_EXTERN uint8_t
0918 hb_color_get_green (hb_color_t color);
0919 #define hb_color_get_green(color) (((color) >> 16) & 0xFF)
0920
0921 HB_EXTERN uint8_t
0922 hb_color_get_blue (hb_color_t color);
0923 #define hb_color_get_blue(color) (((color) >> 24) & 0xFF)
0924
0925
0926
0927
0928
0929
0930
0931
0932
0933
0934
0935
0936 typedef struct hb_glyph_extents_t {
0937 hb_position_t x_bearing;
0938 hb_position_t y_bearing;
0939 hb_position_t width;
0940 hb_position_t height;
0941 } hb_glyph_extents_t;
0942
0943
0944
0945
0946
0947
0948
0949 typedef struct hb_font_t hb_font_t;
0950
0951 HB_END_DECLS
0952
0953 #endif