QtBase  v6.3.1
hb-common.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2007,2008,2009 Red Hat, Inc.
3  * Copyright © 2011,2012 Google, Inc.
4  *
5  * This is part of HarfBuzz, a text shaping library.
6  *
7  * Permission is hereby granted, without written agreement and without
8  * license or royalty fees, to use, copy, modify, and distribute this
9  * software and its documentation for any purpose, provided that the
10  * above copyright notice and the following two paragraphs appear in
11  * all copies of this software.
12  *
13  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
14  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
15  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
16  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
17  * DAMAGE.
18  *
19  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
20  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
22  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
23  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24  *
25  * Red Hat Author(s): Behdad Esfahbod
26  * Google Author(s): Behdad Esfahbod
27  */
28 
29 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
30 #error "Include <hb.h> instead."
31 #endif
32 
33 #ifndef HB_COMMON_H
34 #define HB_COMMON_H
35 
36 #ifndef HB_EXTERN
37 #define HB_EXTERN extern
38 #endif
39 
40 #ifndef HB_BEGIN_DECLS
41 # ifdef __cplusplus
42 # define HB_BEGIN_DECLS extern "C" {
43 # define HB_END_DECLS }
44 # else /* !__cplusplus */
45 # define HB_BEGIN_DECLS
46 # define HB_END_DECLS
47 # endif /* !__cplusplus */
48 #endif
49 
50 #if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \
51  defined (_sgi) || defined (__sun) || defined (sun) || \
52  defined (__digital__) || defined (__HP_cc)
53 # include <inttypes.h>
54 #elif defined (_AIX)
55 # include <sys/inttypes.h>
56 #elif defined (_MSC_VER) && _MSC_VER < 1600
57 /* VS 2010 (_MSC_VER 1600) has stdint.h */
58 typedef __int8 int8_t;
59 typedef unsigned __int8 uint8_t;
60 typedef __int16 int16_t;
61 typedef unsigned __int16 uint16_t;
62 typedef __int32 int32_t;
63 typedef unsigned __int32 uint32_t;
64 typedef __int64 int64_t;
65 typedef unsigned __int64 uint64_t;
66 #elif defined (__KERNEL__)
67 # include <linux/types.h>
68 #else
69 # include <stdint.h>
70 #endif
71 
72 #if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
73 #define HB_DEPRECATED __attribute__((__deprecated__))
74 #elif defined(_MSC_VER) && (_MSC_VER >= 1300)
75 #define HB_DEPRECATED __declspec(deprecated)
76 #else
77 #define HB_DEPRECATED
78 #endif
79 
80 #if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
81 #define HB_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
82 #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320)
83 #define HB_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead"))
84 #else
85 #define HB_DEPRECATED_FOR(f) HB_DEPRECATED
86 #endif
87 
88 
90 
97 typedef int hb_bool_t;
98 
106 typedef uint32_t hb_codepoint_t;
115 typedef int32_t hb_position_t;
122 typedef uint32_t hb_mask_t;
123 
124 typedef union _hb_var_int_t {
125  uint32_t u32;
126  int32_t i32;
127  uint16_t u16[2];
128  int16_t i16[2];
129  uint8_t u8[4];
130  int8_t i8[4];
132 
133 typedef union _hb_var_num_t {
134  float f;
135  uint32_t u32;
136  int32_t i32;
137  uint16_t u16[2];
138  int16_t i16[2];
139  uint8_t u8[4];
140  int8_t i8[4];
142 
143 
144 /* hb_tag_t */
145 
157 typedef uint32_t hb_tag_t;
158 
169 #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)))
170 
180 #define HB_UNTAG(tag) (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF)
181 
187 #define HB_TAG_NONE HB_TAG(0,0,0,0)
195 #define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
203 #define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
204 
205 /* len=-1 means str is NUL-terminated. */
207 hb_tag_from_string (const char *str, int len);
208 
209 /* buf should have 4 bytes. */
210 HB_EXTERN void
212 
213 
229 typedef enum {
236 
237 /* len=-1 means str is NUL-terminated */
239 hb_direction_from_string (const char *str, int len);
240 
241 HB_EXTERN const char *
243 
251 #define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
252 /* Direction must be valid for the following */
261 #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
270 #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
279 #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
288 #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
297 #define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
298 
299 
300 /* hb_language_t */
301 
309 typedef const struct hb_language_impl_t *hb_language_t;
310 
312 hb_language_from_string (const char *str, int len);
313 
314 HB_EXTERN const char *
316 
324 #define HB_LANGUAGE_INVALID ((hb_language_t) 0)
325 
328 
329 
504 /* https://docs.google.com/spreadsheets/d/1Y90M0Ie3MUJ6UVCRDOypOtijlMDLNNyyLk36T6iMu0o */
505 typedef enum
506 {
507  HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'), /*1.1*/
508  HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'), /*1.1*/
509  HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'), /*5.0*/
510 
511  HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'), /*1.1*/
512  HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'), /*1.1*/
513  HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'), /*1.1*/
514  HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'), /*1.1*/
515  HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'), /*1.1*/
516  HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'), /*1.1*/
517  HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'), /*1.1*/
518  HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'), /*1.1*/
519  HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'), /*1.1*/
520  HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'), /*1.1*/
521  HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'), /*1.1*/
522  HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'), /*1.1*/
523  HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'), /*1.1*/
524  HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'), /*1.1*/
525  HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'), /*1.1*/
526  HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'), /*1.1*/
527  HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'), /*1.1*/
528  HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'), /*1.1*/
529  HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'), /*1.1*/
530  HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'), /*1.1*/
531  HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'), /*1.1*/
532  HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'), /*1.1*/
533 
534  HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'), /*2.0*/
535 
536  HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'), /*3.0*/
537  HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'), /*3.0*/
538  HB_SCRIPT_CANADIAN_SYLLABICS = HB_TAG ('C','a','n','s'), /*3.0*/
539  HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'), /*3.0*/
540  HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'), /*3.0*/
541  HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'), /*3.0*/
542  HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'), /*3.0*/
543  HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'), /*3.0*/
544  HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'), /*3.0*/
545  HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'), /*3.0*/
546  HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'), /*3.0*/
547  HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'), /*3.0*/
548  HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'), /*3.0*/
549  HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'), /*3.0*/
550 
551  HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'), /*3.1*/
552  HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'), /*3.1*/
553  HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'), /*3.1*/
554 
555  HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'), /*3.2*/
556  HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'), /*3.2*/
557  HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'), /*3.2*/
558  HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'), /*3.2*/
559 
560  HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'), /*4.0*/
561  HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'), /*4.0*/
562  HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'), /*4.0*/
563  HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'), /*4.0*/
564  HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'), /*4.0*/
565  HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'), /*4.0*/
566  HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'), /*4.0*/
567 
568  HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'), /*4.1*/
569  HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'), /*4.1*/
570  HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'), /*4.1*/
571  HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'), /*4.1*/
572  HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'), /*4.1*/
573  HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'), /*4.1*/
574  HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'), /*4.1*/
575  HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'), /*4.1*/
576 
577  HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'), /*5.0*/
578  HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'), /*5.0*/
579  HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'), /*5.0*/
580  HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'), /*5.0*/
581  HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'), /*5.0*/
582 
583  HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'), /*5.1*/
584  HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'), /*5.1*/
585  HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'), /*5.1*/
586  HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'), /*5.1*/
587  HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'), /*5.1*/
588  HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'), /*5.1*/
589  HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'), /*5.1*/
590  HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'), /*5.1*/
591  HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'), /*5.1*/
592  HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'), /*5.1*/
593  HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'), /*5.1*/
594 
595  HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'), /*5.2*/
596  HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'), /*5.2*/
597  HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'), /*5.2*/
598  HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'), /*5.2*/
599  HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'), /*5.2*/
600  HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'), /*5.2*/
601  HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'), /*5.2*/
602  HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'), /*5.2*/
603  HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'), /*5.2*/
604  HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'), /*5.2*/
605  HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'), /*5.2*/
606  HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'), /*5.2*/
607  HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'), /*5.2*/
608  HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'), /*5.2*/
609  HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'), /*5.2*/
610 
611  HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'), /*6.0*/
612  HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'), /*6.0*/
613  HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'), /*6.0*/
614 
615  HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'), /*6.1*/
616  HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'), /*6.1*/
617  HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'), /*6.1*/
618  HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'), /*6.1*/
619  HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'), /*6.1*/
620  HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'), /*6.1*/
621  HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'), /*6.1*/
622 
623  /*
624  * Since: 0.9.30
625  */
626  HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'), /*7.0*/
627  HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'), /*7.0*/
628  HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'), /*7.0*/
629  HB_SCRIPT_ELBASAN = HB_TAG ('E','l','b','a'), /*7.0*/
630  HB_SCRIPT_GRANTHA = HB_TAG ('G','r','a','n'), /*7.0*/
631  HB_SCRIPT_KHOJKI = HB_TAG ('K','h','o','j'), /*7.0*/
632  HB_SCRIPT_KHUDAWADI = HB_TAG ('S','i','n','d'), /*7.0*/
633  HB_SCRIPT_LINEAR_A = HB_TAG ('L','i','n','a'), /*7.0*/
634  HB_SCRIPT_MAHAJANI = HB_TAG ('M','a','h','j'), /*7.0*/
635  HB_SCRIPT_MANICHAEAN = HB_TAG ('M','a','n','i'), /*7.0*/
636  HB_SCRIPT_MENDE_KIKAKUI = HB_TAG ('M','e','n','d'), /*7.0*/
637  HB_SCRIPT_MODI = HB_TAG ('M','o','d','i'), /*7.0*/
638  HB_SCRIPT_MRO = HB_TAG ('M','r','o','o'), /*7.0*/
639  HB_SCRIPT_NABATAEAN = HB_TAG ('N','b','a','t'), /*7.0*/
640  HB_SCRIPT_OLD_NORTH_ARABIAN = HB_TAG ('N','a','r','b'), /*7.0*/
641  HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'), /*7.0*/
642  HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'), /*7.0*/
643  HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'), /*7.0*/
644  HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), /*7.0*/
645  HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), /*7.0*/
646  HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), /*7.0*/
647  HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), /*7.0*/
648  HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), /*7.0*/
649 
650  HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'), /*8.0*/
651  HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'), /*8.0*/
652  HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'), /*8.0*/
653  HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'), /*8.0*/
654  HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'), /*8.0*/
655  HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'), /*8.0*/
656 
657  /*
658  * Since 1.3.0
659  */
660  HB_SCRIPT_ADLAM = HB_TAG ('A','d','l','m'), /*9.0*/
661  HB_SCRIPT_BHAIKSUKI = HB_TAG ('B','h','k','s'), /*9.0*/
662  HB_SCRIPT_MARCHEN = HB_TAG ('M','a','r','c'), /*9.0*/
663  HB_SCRIPT_OSAGE = HB_TAG ('O','s','g','e'), /*9.0*/
664  HB_SCRIPT_TANGUT = HB_TAG ('T','a','n','g'), /*9.0*/
665  HB_SCRIPT_NEWA = HB_TAG ('N','e','w','a'), /*9.0*/
666 
667  /*
668  * Since 1.6.0
669  */
670  HB_SCRIPT_MASARAM_GONDI = HB_TAG ('G','o','n','m'), /*10.0*/
671  HB_SCRIPT_NUSHU = HB_TAG ('N','s','h','u'), /*10.0*/
672  HB_SCRIPT_SOYOMBO = HB_TAG ('S','o','y','o'), /*10.0*/
673  HB_SCRIPT_ZANABAZAR_SQUARE = HB_TAG ('Z','a','n','b'), /*10.0*/
674 
675  /*
676  * Since 1.8.0
677  */
678  HB_SCRIPT_DOGRA = HB_TAG ('D','o','g','r'), /*11.0*/
679  HB_SCRIPT_GUNJALA_GONDI = HB_TAG ('G','o','n','g'), /*11.0*/
680  HB_SCRIPT_HANIFI_ROHINGYA = HB_TAG ('R','o','h','g'), /*11.0*/
681  HB_SCRIPT_MAKASAR = HB_TAG ('M','a','k','a'), /*11.0*/
682  HB_SCRIPT_MEDEFAIDRIN = HB_TAG ('M','e','d','f'), /*11.0*/
683  HB_SCRIPT_OLD_SOGDIAN = HB_TAG ('S','o','g','o'), /*11.0*/
684  HB_SCRIPT_SOGDIAN = HB_TAG ('S','o','g','d'), /*11.0*/
685 
686  /*
687  * Since 2.4.0
688  */
689  HB_SCRIPT_ELYMAIC = HB_TAG ('E','l','y','m'), /*12.0*/
690  HB_SCRIPT_NANDINAGARI = HB_TAG ('N','a','n','d'), /*12.0*/
691  HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'), /*12.0*/
692  HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'), /*12.0*/
693 
694  /*
695  * Since 2.6.7
696  */
697  HB_SCRIPT_CHORASMIAN = HB_TAG ('C','h','r','s'), /*13.0*/
698  HB_SCRIPT_DIVES_AKURU = HB_TAG ('D','i','a','k'), /*13.0*/
699  HB_SCRIPT_KHITAN_SMALL_SCRIPT = HB_TAG ('K','i','t','s'), /*13.0*/
700  HB_SCRIPT_YEZIDI = HB_TAG ('Y','e','z','i'), /*13.0*/
701 
702  /*
703  * Since 3.0.0
704  */
705  HB_SCRIPT_CYPRO_MINOAN = HB_TAG ('C','p','m','n'), /*14.0*/
706  HB_SCRIPT_OLD_UYGHUR = HB_TAG ('O','u','g','r'), /*14.0*/
707  HB_SCRIPT_TANGSA = HB_TAG ('T','n','s','a'), /*14.0*/
708  HB_SCRIPT_TOTO = HB_TAG ('T','o','t','o'), /*14.0*/
709  HB_SCRIPT_VITHKUQI = HB_TAG ('V','i','t','h'), /*14.0*/
710 
711  /*
712  * Since 3.4.0
713  */
714  HB_SCRIPT_MATH = HB_TAG ('Z','m','t','h'),
715 
716  /* No script set. */
718 
719  /*< private >*/
720 
721  /* Dummy values to ensure any hb_tag_t value can be passed/stored as hb_script_t
722  * without risking undefined behavior. We have two, for historical reasons.
723  * HB_TAG_MAX used to be unsigned, but that was invalid Ansi C, so was changed
724  * to _HB_SCRIPT_MAX_VALUE to be equal to HB_TAG_MAX_SIGNED as well.
725  *
726  * See this thread for technicalities:
727  *
728  * https://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html
729  */
732 
734 
735 
736 /* Script functions */
737 
740 
742 hb_script_from_string (const char *str, int len);
743 
746 
749 
750 
751 /* User data */
752 
759 typedef struct hb_user_data_key_t {
760  /*< private >*/
761  char unused;
763 
771 typedef void (*hb_destroy_func_t) (void *user_data);
772 
773 
774 /* Font features and variations. */
775 
784 #define HB_FEATURE_GLOBAL_START 0
785 
794 #define HB_FEATURE_GLOBAL_END ((unsigned int) -1)
795 
811 typedef struct hb_feature_t {
813  uint32_t value;
814  unsigned int start;
815  unsigned int end;
817 
819 hb_feature_from_string (const char *str, int len,
820  hb_feature_t *feature);
821 
822 HB_EXTERN void
824  char *buf, unsigned int size);
825 
837 typedef struct hb_variation_t {
839  float value;
841 
843 hb_variation_from_string (const char *str, int len,
844  hb_variation_t *variation);
845 
846 HB_EXTERN void
848  char *buf, unsigned int size);
849 
858 typedef uint32_t hb_color_t;
859 
871 #define HB_COLOR(b,g,r,a) ((hb_color_t) HB_TAG ((b),(g),(r),(a)))
872 
873 HB_EXTERN uint8_t
875 #define hb_color_get_alpha(color) ((color) & 0xFF)
876 
877 HB_EXTERN uint8_t
879 #define hb_color_get_red(color) (((color) >> 8) & 0xFF)
880 
881 HB_EXTERN uint8_t
883 #define hb_color_get_green(color) (((color) >> 16) & 0xFF)
884 
885 HB_EXTERN uint8_t
887 #define hb_color_get_blue(color) (((color) >> 24) & 0xFF)
888 
890 
891 #endif /* HB_COMMON_H */
xD9 x84 xD8 xAD xD9 x80 xF0 x90 xAC x9A xE0 xA7 xA6 xE0 xA7 xAA xF0 x91 x84 xA4 xF0 x91 x84 x89 xF0 x91 x84 x9B xF0 x90 x8A xAB xF0 x90 x8B x89 xE2 xB2 x9E xE2 xB2 x9F xD0 xBE xD0 x9E xF0 x90 x90 x84 xF0 x90 x90 xAC xE1 x83 x98 xE1 x83 x94 xE1 x83 x90 xE1 xB2 xBF xE2 xB0 x95 xE2 xB1 x85 xCE xBF xCE x9F xE0 xA8 xA0 xE0 xA8 xB0 xE0 xA9 xA6 Kayah xEA xA4 x8D xEA xA4 x80 Khmer xE1 xA7 xA1 xE1 xA7 xAA xE0 xBB x90 Latin Subscript xE2 x82 x92 xE2 x82 x80 xEA x93 xB3 xF0 x96 xB9 xA1 xF0 x96 xB9 x9B xF0 x96 xB9 xAF xE1 x80 x9D xE1 x80 x84 xE1 x80 x82 no script
Definition: afscript.h:271
QString str
[2]
direction
void
Definition: png.h:1080
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint color
[2]
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLsizei len
Definition: qopenglext.h:3292
UINT16_TYPE u16
Definition: sqlite3.c:13905
UINT8_TYPE u8
Definition: sqlite3.c:13907
INT16_TYPE i16
Definition: sqlite3.c:13906
INT8_TYPE i8
Definition: sqlite3.c:13908
HB_EXTERN hb_script_t hb_script_from_iso15924_tag(hb_tag_t tag)
Definition: hb-common.cc:459
HB_EXTERN hb_language_t hb_language_from_string(const char *str, int len)
Definition: hb-common.cc:371
void(* hb_destroy_func_t)(void *user_data)
Definition: hb-common.h:771
const struct hb_language_impl_t * hb_language_t
Definition: hb-common.h:309
#define hb_color_get_alpha(color)
Definition: hb-common.h:875
HB_EXTERN const char * hb_direction_to_string(hb_direction_t direction)
Definition: hb-common.cc:214
HB_EXTERN hb_tag_t hb_script_to_iso15924_tag(hb_script_t script)
Definition: hb-common.cc:530
HB_BEGIN_DECLS typedef int hb_bool_t
Definition: hb-common.h:97
struct hb_feature_t hb_feature_t
HB_EXTERN hb_bool_t hb_variation_from_string(const char *str, int len, hb_variation_t *variation)
Definition: hb-common.cc:1043
uint32_t hb_codepoint_t
Definition: hb-common.h:106
#define HB_TAG(c1, c2, c3, c4)
Definition: hb-common.h:169
HB_EXTERN const char * hb_language_to_string(hb_language_t language)
Definition: hb-common.cc:405
uint32_t hb_mask_t
Definition: hb-common.h:122
#define hb_color_get_red(color)
Definition: hb-common.h:879
#define hb_color_get_green(color)
Definition: hb-common.h:883
HB_EXTERN void hb_variation_to_string(hb_variation_t *variation, char *buf, unsigned int size)
Definition: hb-common.cc:1117
HB_EXTERN hb_direction_t hb_direction_from_string(const char *str, int len)
Definition: hb-common.cc:187
#define HB_TAG_MAX_SIGNED
Definition: hb-common.h:203
uint32_t hb_color_t
Definition: hb-common.h:858
struct hb_variation_t hb_variation_t
struct hb_user_data_key_t hb_user_data_key_t
int32_t hb_position_t
Definition: hb-common.h:115
HB_EXTERN hb_script_t hb_script_from_string(const char *str, int len)
Definition: hb-common.cc:513
hb_script_t
Definition: hb-common.h:506
@ HB_SCRIPT_MEROITIC_CURSIVE
Definition: hb-common.h:616
@ HB_SCRIPT_AVESTAN
Definition: hb-common.h:595
@ HB_SCRIPT_TANGUT
Definition: hb-common.h:664
@ HB_SCRIPT_KATAKANA
Definition: hb-common.h:525
@ HB_SCRIPT_SORA_SOMPENG
Definition: hb-common.h:620
@ HB_SCRIPT_CHEROKEE
Definition: hb-common.h:539
@ HB_SCRIPT_MRO
Definition: hb-common.h:638
@ HB_SCRIPT_TAKRI
Definition: hb-common.h:621
@ HB_SCRIPT_WANCHO
Definition: hb-common.h:692
@ HB_SCRIPT_MANDAIC
Definition: hb-common.h:613
@ HB_SCRIPT_AHOM
Definition: hb-common.h:650
@ HB_SCRIPT_ELBASAN
Definition: hb-common.h:629
@ HB_SCRIPT_HAN
Definition: hb-common.h:521
@ HB_SCRIPT_JAVANESE
Definition: hb-common.h:601
@ HB_SCRIPT_DOGRA
Definition: hb-common.h:678
@ HB_SCRIPT_CHAM
Definition: hb-common.h:584
@ HB_SCRIPT_BRAHMI
Definition: hb-common.h:612
@ HB_SCRIPT_WARANG_CITI
Definition: hb-common.h:648
@ HB_SCRIPT_CARIAN
Definition: hb-common.h:583
@ HB_SCRIPT_ETHIOPIC
Definition: hb-common.h:540
@ HB_SCRIPT_CYPRIOT
Definition: hb-common.h:560
@ HB_SCRIPT_ZANABAZAR_SQUARE
Definition: hb-common.h:673
@ HB_SCRIPT_SIDDHAM
Definition: hb-common.h:646
@ HB_SCRIPT_MATH
Definition: hb-common.h:714
@ HB_SCRIPT_BHAIKSUKI
Definition: hb-common.h:661
@ HB_SCRIPT_CAUCASIAN_ALBANIAN
Definition: hb-common.h:627
@ HB_SCRIPT_DEVANAGARI
Definition: hb-common.h:515
@ HB_SCRIPT_RUNIC
Definition: hb-common.h:545
@ HB_SCRIPT_LIMBU
Definition: hb-common.h:561
@ HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
Definition: hb-common.h:600
@ HB_SCRIPT_TAGBANWA
Definition: hb-common.h:558
@ HB_SCRIPT_MEDEFAIDRIN
Definition: hb-common.h:682
@ HB_SCRIPT_YEZIDI
Definition: hb-common.h:700
@ HB_SCRIPT_KAYAH_LI
Definition: hb-common.h:585
@ HB_SCRIPT_SIGNWRITING
Definition: hb-common.h:655
@ HB_SCRIPT_ARABIC
Definition: hb-common.h:511
@ HB_SCRIPT_UNKNOWN
Definition: hb-common.h:509
@ HB_SCRIPT_OLD_NORTH_ARABIAN
Definition: hb-common.h:640
@ HB_SCRIPT_BALINESE
Definition: hb-common.h:577
@ HB_SCRIPT_OLD_UYGHUR
Definition: hb-common.h:706
@ HB_SCRIPT_ARMENIAN
Definition: hb-common.h:512
@ HB_SCRIPT_BATAK
Definition: hb-common.h:611
@ HB_SCRIPT_TAI_LE
Definition: hb-common.h:565
@ HB_SCRIPT_MANICHAEAN
Definition: hb-common.h:635
@ HB_SCRIPT_OGHAM
Definition: hb-common.h:544
@ HB_SCRIPT_TIFINAGH
Definition: hb-common.h:575
@ HB_SCRIPT_MALAYALAM
Definition: hb-common.h:528
@ HB_SCRIPT_HIRAGANA
Definition: hb-common.h:523
@ HB_SCRIPT_DIVES_AKURU
Definition: hb-common.h:698
@ HB_SCRIPT_VAI
Definition: hb-common.h:593
@ HB_SCRIPT_LATIN
Definition: hb-common.h:527
@ HB_SCRIPT_ADLAM
Definition: hb-common.h:660
@ HB_SCRIPT_OLD_ITALIC
Definition: hb-common.h:553
@ HB_SCRIPT_MONGOLIAN
Definition: hb-common.h:542
@ HB_SCRIPT_HANGUL
Definition: hb-common.h:520
@ HB_SCRIPT_KHMER
Definition: hb-common.h:541
@ HB_SCRIPT_OLD_PERMIC
Definition: hb-common.h:641
@ HB_SCRIPT_SUNDANESE
Definition: hb-common.h:592
@ HB_SCRIPT_TIBETAN
Definition: hb-common.h:534
@ HB_SCRIPT_TELUGU
Definition: hb-common.h:531
@ HB_SCRIPT_TOTO
Definition: hb-common.h:708
@ HB_SCRIPT_COMMON
Definition: hb-common.h:507
@ HB_SCRIPT_SYRIAC
Definition: hb-common.h:547
@ HB_SCRIPT_MODI
Definition: hb-common.h:637
@ HB_SCRIPT_SYLOTI_NAGRI
Definition: hb-common.h:574
@ HB_SCRIPT_OLD_TURKIC
Definition: hb-common.h:606
@ HB_SCRIPT_INHERITED
Definition: hb-common.h:508
@ HB_SCRIPT_BAMUM
Definition: hb-common.h:596
@ HB_SCRIPT_HEBREW
Definition: hb-common.h:522
@ HB_SCRIPT_LYDIAN
Definition: hb-common.h:588
@ HB_SCRIPT_VITHKUQI
Definition: hb-common.h:709
@ HB_SCRIPT_OLD_SOGDIAN
Definition: hb-common.h:683
@ HB_SCRIPT_BENGALI
Definition: hb-common.h:513
@ HB_SCRIPT_KHUDAWADI
Definition: hb-common.h:632
@ HB_SCRIPT_PHOENICIAN
Definition: hb-common.h:581
@ HB_SCRIPT_CYRILLIC
Definition: hb-common.h:514
@ HB_SCRIPT_GOTHIC
Definition: hb-common.h:552
@ HB_SCRIPT_ORIYA
Definition: hb-common.h:529
@ HB_SCRIPT_PAHAWH_HMONG
Definition: hb-common.h:642
@ HB_SCRIPT_TAI_VIET
Definition: hb-common.h:609
@ HB_SCRIPT_NEWA
Definition: hb-common.h:665
@ HB_SCRIPT_PHAGS_PA
Definition: hb-common.h:580
@ HB_SCRIPT_DUPLOYAN
Definition: hb-common.h:628
@ HB_SCRIPT_MENDE_KIKAKUI
Definition: hb-common.h:636
@ HB_SCRIPT_GRANTHA
Definition: hb-common.h:630
@ _HB_SCRIPT_MAX_VALUE
Definition: hb-common.h:730
@ HB_SCRIPT_NANDINAGARI
Definition: hb-common.h:690
@ HB_SCRIPT_NABATAEAN
Definition: hb-common.h:639
@ HB_SCRIPT_GUJARATI
Definition: hb-common.h:518
@ HB_SCRIPT_IMPERIAL_ARAMAIC
Definition: hb-common.h:598
@ HB_SCRIPT_PAU_CIN_HAU
Definition: hb-common.h:644
@ HB_SCRIPT_UGARITIC
Definition: hb-common.h:566
@ HB_SCRIPT_COPTIC
Definition: hb-common.h:569
@ HB_SCRIPT_TAMIL
Definition: hb-common.h:530
@ HB_SCRIPT_GUNJALA_GONDI
Definition: hb-common.h:679
@ HB_SCRIPT_BRAILLE
Definition: hb-common.h:537
@ HB_SCRIPT_OSMANYA
Definition: hb-common.h:563
@ HB_SCRIPT_MEROITIC_HIEROGLYPHS
Definition: hb-common.h:617
@ HB_SCRIPT_HATRAN
Definition: hb-common.h:652
@ HB_SCRIPT_MIAO
Definition: hb-common.h:618
@ HB_SCRIPT_PSALTER_PAHLAVI
Definition: hb-common.h:645
@ HB_SCRIPT_HANUNOO
Definition: hb-common.h:556
@ HB_SCRIPT_GURMUKHI
Definition: hb-common.h:519
@ HB_SCRIPT_BASSA_VAH
Definition: hb-common.h:626
@ HB_SCRIPT_LINEAR_B
Definition: hb-common.h:562
@ HB_SCRIPT_OLD_HUNGARIAN
Definition: hb-common.h:654
@ HB_SCRIPT_MARCHEN
Definition: hb-common.h:662
@ HB_SCRIPT_NYIAKENG_PUACHUE_HMONG
Definition: hb-common.h:691
@ HB_SCRIPT_TIRHUTA
Definition: hb-common.h:647
@ HB_SCRIPT_CANADIAN_SYLLABICS
Definition: hb-common.h:538
@ HB_SCRIPT_MEETEI_MAYEK
Definition: hb-common.h:604
@ HB_SCRIPT_KHAROSHTHI
Definition: hb-common.h:571
@ HB_SCRIPT_MAHAJANI
Definition: hb-common.h:634
@ HB_SCRIPT_SHARADA
Definition: hb-common.h:619
@ HB_SCRIPT_NKO
Definition: hb-common.h:579
@ HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
Definition: hb-common.h:597
@ HB_SCRIPT_SOGDIAN
Definition: hb-common.h:684
@ HB_SCRIPT_KHITAN_SMALL_SCRIPT
Definition: hb-common.h:699
@ HB_SCRIPT_THAANA
Definition: hb-common.h:548
@ HB_SCRIPT_MYANMAR
Definition: hb-common.h:543
@ HB_SCRIPT_OLD_SOUTH_ARABIAN
Definition: hb-common.h:605
@ HB_SCRIPT_BOPOMOFO
Definition: hb-common.h:536
@ HB_SCRIPT_HANIFI_ROHINGYA
Definition: hb-common.h:680
@ HB_SCRIPT_CYPRO_MINOAN
Definition: hb-common.h:705
@ HB_SCRIPT_NUSHU
Definition: hb-common.h:671
@ HB_SCRIPT_NEW_TAI_LUE
Definition: hb-common.h:572
@ HB_SCRIPT_LYCIAN
Definition: hb-common.h:587
@ HB_SCRIPT_LAO
Definition: hb-common.h:526
@ HB_SCRIPT_TAGALOG
Definition: hb-common.h:557
@ HB_SCRIPT_PALMYRENE
Definition: hb-common.h:643
@ HB_SCRIPT_GEORGIAN
Definition: hb-common.h:516
@ HB_SCRIPT_DESERET
Definition: hb-common.h:551
@ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS
Definition: hb-common.h:651
@ HB_SCRIPT_OL_CHIKI
Definition: hb-common.h:589
@ HB_SCRIPT_TAI_THAM
Definition: hb-common.h:608
@ HB_SCRIPT_SHAVIAN
Definition: hb-common.h:564
@ HB_SCRIPT_GLAGOLITIC
Definition: hb-common.h:570
@ HB_SCRIPT_REJANG
Definition: hb-common.h:590
@ HB_SCRIPT_ELYMAIC
Definition: hb-common.h:689
@ HB_SCRIPT_LEPCHA
Definition: hb-common.h:586
@ _HB_SCRIPT_MAX_VALUE_SIGNED
Definition: hb-common.h:731
@ HB_SCRIPT_YI
Definition: hb-common.h:549
@ HB_SCRIPT_SAMARITAN
Definition: hb-common.h:607
@ HB_SCRIPT_MAKASAR
Definition: hb-common.h:681
@ HB_SCRIPT_GREEK
Definition: hb-common.h:517
@ HB_SCRIPT_BUGINESE
Definition: hb-common.h:568
@ HB_SCRIPT_SOYOMBO
Definition: hb-common.h:672
@ HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
Definition: hb-common.h:599
@ HB_SCRIPT_BUHID
Definition: hb-common.h:555
@ HB_SCRIPT_SINHALA
Definition: hb-common.h:546
@ HB_SCRIPT_KAITHI
Definition: hb-common.h:602
@ HB_SCRIPT_TANGSA
Definition: hb-common.h:707
@ HB_SCRIPT_LISU
Definition: hb-common.h:603
@ HB_SCRIPT_MASARAM_GONDI
Definition: hb-common.h:670
@ HB_SCRIPT_MULTANI
Definition: hb-common.h:653
@ HB_SCRIPT_KANNADA
Definition: hb-common.h:524
@ HB_SCRIPT_THAI
Definition: hb-common.h:532
@ HB_SCRIPT_CHORASMIAN
Definition: hb-common.h:697
@ HB_SCRIPT_KHOJKI
Definition: hb-common.h:631
@ HB_SCRIPT_SAURASHTRA
Definition: hb-common.h:591
@ HB_SCRIPT_CUNEIFORM
Definition: hb-common.h:578
@ HB_SCRIPT_LINEAR_A
Definition: hb-common.h:633
@ HB_SCRIPT_CHAKMA
Definition: hb-common.h:615
@ HB_SCRIPT_OLD_PERSIAN
Definition: hb-common.h:573
@ HB_SCRIPT_INVALID
Definition: hb-common.h:717
@ HB_SCRIPT_OSAGE
Definition: hb-common.h:663
#define hb_color_get_blue(color)
Definition: hb-common.h:887
HB_EXTERN hb_direction_t hb_script_get_horizontal_direction(hb_script_t script)
Definition: hb-common.cc:551
#define HB_BEGIN_DECLS
Definition: hb-common.h:45
uint32_t hb_tag_t
Definition: hb-common.h:157
#define HB_TAG_NONE
Definition: hb-common.h:187
union _hb_var_int_t hb_var_int_t
HB_EXTERN hb_bool_t hb_feature_from_string(const char *str, int len, hb_feature_t *feature)
Definition: hb-common.cc:931
HB_EXTERN void hb_tag_to_string(hb_tag_t tag, char *buf)
Definition: hb-common.cc:152
HB_EXTERN hb_tag_t hb_tag_from_string(const char *str, int len)
Definition: hb-common.cc:123
hb_direction_t
Definition: hb-common.h:229
@ HB_DIRECTION_BTT
Definition: hb-common.h:234
@ HB_DIRECTION_TTB
Definition: hb-common.h:233
@ HB_DIRECTION_INVALID
Definition: hb-common.h:230
@ HB_DIRECTION_RTL
Definition: hb-common.h:232
@ HB_DIRECTION_LTR
Definition: hb-common.h:231
#define HB_END_DECLS
Definition: hb-common.h:46
HB_EXTERN hb_language_t hb_language_get_default(void)
Definition: hb-common.cc:430
HB_EXTERN void hb_feature_to_string(hb_feature_t *feature, char *buf, unsigned int size)
Definition: hb-common.cc:964
union _hb_var_num_t hb_var_num_t
#define HB_EXTERN
Definition: hb-common.h:37
HB_EXTERN hb_font_get_glyph_func_t void * user_data
unsigned int end
Definition: hb-common.h:815
unsigned int start
Definition: hb-common.h:814
hb_tag_t tag
Definition: hb-common.h:812
uint32_t value
Definition: hb-common.h:813
hb_tag_t tag
Definition: hb-common.h:838
int32_t i32
Definition: hb-common.h:126
uint32_t u32
Definition: hb-common.h:125
int32_t i32
Definition: hb-common.h:136
uint32_t u32
Definition: hb-common.h:135
XmlOutput::xml_output tag(const QString &name)
Definition: xmloutput.h:154