?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/harfbuzz.zip
???????
PK �9�[):�A A hb-map.hnu �[��� /* * Copyright © 2018 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_MAP_H #define HB_MAP_H #include "hb-common.h" HB_BEGIN_DECLS /* * Since: 1.7.7 */ #define HB_MAP_VALUE_INVALID ((hb_codepoint_t) -1) /** * hb_map_t: * * Data type for holding integer-to-integer hash maps. * **/ typedef struct hb_map_t hb_map_t; HB_EXTERN hb_map_t * hb_map_create (void); HB_EXTERN hb_map_t * hb_map_get_empty (void); HB_EXTERN hb_map_t * hb_map_reference (hb_map_t *map); HB_EXTERN void hb_map_destroy (hb_map_t *map); HB_EXTERN hb_bool_t hb_map_set_user_data (hb_map_t *map, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_map_get_user_data (hb_map_t *map, hb_user_data_key_t *key); /* Returns false if allocation has failed before */ HB_EXTERN hb_bool_t hb_map_allocation_successful (const hb_map_t *map); HB_EXTERN void hb_map_clear (hb_map_t *map); HB_EXTERN hb_bool_t hb_map_is_empty (const hb_map_t *map); HB_EXTERN unsigned int hb_map_get_population (const hb_map_t *map); HB_EXTERN void hb_map_set (hb_map_t *map, hb_codepoint_t key, hb_codepoint_t value); HB_EXTERN hb_codepoint_t hb_map_get (const hb_map_t *map, hb_codepoint_t key); HB_EXTERN void hb_map_del (hb_map_t *map, hb_codepoint_t key); HB_EXTERN hb_bool_t hb_map_has (const hb_map_t *map, hb_codepoint_t key); HB_END_DECLS #endif /* HB_MAP_H */ PK �9�[#� �% % hb-version.hnu �[��� /* * Copyright © 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_VERSION_H #define HB_VERSION_H #include "hb-common.h" HB_BEGIN_DECLS #define HB_VERSION_MAJOR 2 #define HB_VERSION_MINOR 7 #define HB_VERSION_MICRO 4 #define HB_VERSION_STRING "2.7.4" #define HB_VERSION_ATLEAST(major,minor,micro) \ ((major)*10000+(minor)*100+(micro) <= \ HB_VERSION_MAJOR*10000+HB_VERSION_MINOR*100+HB_VERSION_MICRO) HB_EXTERN void hb_version (unsigned int *major, unsigned int *minor, unsigned int *micro); HB_EXTERN const char * hb_version_string (void); HB_EXTERN hb_bool_t hb_version_atleast (unsigned int major, unsigned int minor, unsigned int micro); HB_END_DECLS #endif /* HB_VERSION_H */ PK �9�[9l�W2 2 hb-ft.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * Copyright © 2015 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ #ifndef HB_FT_H #define HB_FT_H #include "hb.h" #include <ft2build.h> #include FT_FREETYPE_H HB_BEGIN_DECLS /* * Note: FreeType is not thread-safe. * Hence, these functions are not either. */ /* * hb-face from ft-face. */ /* This one creates a new hb-face for given ft-face. * When the returned hb-face is destroyed, the destroy * callback is called (if not NULL), with the ft-face passed * to it. * * The client is responsible to make sure that ft-face is * destroyed after hb-face is destroyed. * * Most often you don't want this function. You should use either * hb_ft_face_create_cached(), or hb_ft_face_create_referenced(). * In particular, if you are going to pass NULL as destroy, you * probably should use (the more recent) hb_ft_face_create_referenced() * instead. */ HB_EXTERN hb_face_t * hb_ft_face_create (FT_Face ft_face, hb_destroy_func_t destroy); /* This version is like hb_ft_face_create(), except that it caches * the hb-face using the generic pointer of the ft-face. This means * that subsequent calls to this function with the same ft-face will * return the same hb-face (correctly referenced). * * Client is still responsible for making sure that ft-face is destroyed * after hb-face is. */ HB_EXTERN hb_face_t * hb_ft_face_create_cached (FT_Face ft_face); /* This version is like hb_ft_face_create(), except that it calls * FT_Reference_Face() on ft-face, as such keeping ft-face alive * as long as the hb-face is. * * This is the most convenient version to use. Use it unless you have * very good reasons not to. */ HB_EXTERN hb_face_t * hb_ft_face_create_referenced (FT_Face ft_face); /* * hb-font from ft-face. */ /* * Note: * * Set face size on ft-face before creating hb-font from it. * Otherwise hb-ft would NOT pick up the font size correctly. */ /* See notes on hb_ft_face_create(). Same issues re lifecycle-management * apply here. Use hb_ft_font_create_referenced() if you can. */ HB_EXTERN hb_font_t * hb_ft_font_create (FT_Face ft_face, hb_destroy_func_t destroy); /* See notes on hb_ft_face_create_referenced() re lifecycle-management * issues. */ HB_EXTERN hb_font_t * hb_ft_font_create_referenced (FT_Face ft_face); HB_EXTERN FT_Face hb_ft_font_get_face (hb_font_t *font); HB_EXTERN FT_Face hb_ft_font_lock_face (hb_font_t *font); HB_EXTERN void hb_ft_font_unlock_face (hb_font_t *font); HB_EXTERN void hb_ft_font_set_load_flags (hb_font_t *font, int load_flags); HB_EXTERN int hb_ft_font_get_load_flags (hb_font_t *font); /* Call when size or variations settings on underlying FT_Face change. */ HB_EXTERN void hb_ft_font_changed (hb_font_t *font); /* Makes an hb_font_t use FreeType internally to implement font functions. * Note: this internally creates an FT_Face. Use it when you create your * hb_face_t using hb_face_create(). */ HB_EXTERN void hb_ft_font_set_funcs (hb_font_t *font); HB_END_DECLS #endif /* HB_FT_H */ PK �9�[B��MR R hb-buffer.hnu �[��� /* * Copyright © 1998-2004 David Turner and Werner Lemberg * Copyright © 2004,2007,2009 Red Hat, Inc. * Copyright © 2011,2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Owen Taylor, Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_BUFFER_H #define HB_BUFFER_H #include "hb-common.h" #include "hb-unicode.h" #include "hb-font.h" HB_BEGIN_DECLS /** * hb_glyph_info_t: * @codepoint: either a Unicode code point (before shaping) or a glyph index * (after shaping). * @cluster: the index of the character in the original text that corresponds * to this #hb_glyph_info_t, or whatever the client passes to * hb_buffer_add(). More than one #hb_glyph_info_t can have the same * @cluster value, if they resulted from the same character (e.g. one * to many glyph substitution), and when more than one character gets * merged in the same glyph (e.g. many to one glyph substitution) the * #hb_glyph_info_t will have the smallest cluster value of them. * By default some characters are merged into the same cluster * (e.g. combining marks have the same cluster as their bases) * even if they are separate glyphs, hb_buffer_set_cluster_level() * allow selecting more fine-grained cluster handling. * * The #hb_glyph_info_t is the structure that holds information about the * glyphs and their relation to input text. */ typedef struct hb_glyph_info_t { hb_codepoint_t codepoint; /*< private >*/ hb_mask_t mask; /*< public >*/ uint32_t cluster; /*< private >*/ hb_var_int_t var1; hb_var_int_t var2; } hb_glyph_info_t; /** * hb_glyph_flags_t: * @HB_GLYPH_FLAG_UNSAFE_TO_BREAK: Indicates that if input text is broken at the * beginning of the cluster this glyph is part of, * then both sides need to be re-shaped, as the * result might be different. On the flip side, * it means that when this flag is not present, * then it's safe to break the glyph-run at the * beginning of this cluster, and the two sides * represent the exact same result one would get * if breaking input text at the beginning of * this cluster and shaping the two sides * separately. This can be used to optimize * paragraph layout, by avoiding re-shaping * of each line after line-breaking, or limiting * the reshaping to a small piece around the * breaking point only. * @HB_GLYPH_FLAG_DEFINED: All the currently defined flags. * * Since: 1.5.0 */ typedef enum { /*< flags >*/ HB_GLYPH_FLAG_UNSAFE_TO_BREAK = 0x00000001, HB_GLYPH_FLAG_DEFINED = 0x00000001 /* OR of all defined flags */ } hb_glyph_flags_t; HB_EXTERN hb_glyph_flags_t hb_glyph_info_get_glyph_flags (const hb_glyph_info_t *info); #define hb_glyph_info_get_glyph_flags(info) \ ((hb_glyph_flags_t) ((unsigned int) (info)->mask & HB_GLYPH_FLAG_DEFINED)) /** * hb_glyph_position_t: * @x_advance: how much the line advances after drawing this glyph when setting * text in horizontal direction. * @y_advance: how much the line advances after drawing this glyph when setting * text in vertical direction. * @x_offset: how much the glyph moves on the X-axis before drawing it, this * should not affect how much the line advances. * @y_offset: how much the glyph moves on the Y-axis before drawing it, this * should not affect how much the line advances. * * The #hb_glyph_position_t is the structure that holds the positions of the * glyph in both horizontal and vertical directions. All positions in * #hb_glyph_position_t are relative to the current point. * */ typedef struct hb_glyph_position_t { hb_position_t x_advance; hb_position_t y_advance; hb_position_t x_offset; hb_position_t y_offset; /*< private >*/ hb_var_int_t var; } hb_glyph_position_t; /** * hb_segment_properties_t: * @direction: the #hb_direction_t of the buffer, see hb_buffer_set_direction(). * @script: the #hb_script_t of the buffer, see hb_buffer_set_script(). * @language: the #hb_language_t of the buffer, see hb_buffer_set_language(). * * The structure that holds various text properties of an #hb_buffer_t. Can be * set and retrieved using hb_buffer_set_segment_properties() and * hb_buffer_get_segment_properties(), respectively. */ typedef struct hb_segment_properties_t { hb_direction_t direction; hb_script_t script; hb_language_t language; /*< private >*/ void *reserved1; void *reserved2; } hb_segment_properties_t; #define HB_SEGMENT_PROPERTIES_DEFAULT {HB_DIRECTION_INVALID, \ HB_SCRIPT_INVALID, \ HB_LANGUAGE_INVALID, \ (void *) 0, \ (void *) 0} HB_EXTERN hb_bool_t hb_segment_properties_equal (const hb_segment_properties_t *a, const hb_segment_properties_t *b); HB_EXTERN unsigned int hb_segment_properties_hash (const hb_segment_properties_t *p); /** * hb_buffer_t: * * The main structure holding the input text and its properties before shaping, * and output glyphs and their information after shaping. */ typedef struct hb_buffer_t hb_buffer_t; HB_EXTERN hb_buffer_t * hb_buffer_create (void); HB_EXTERN hb_buffer_t * hb_buffer_get_empty (void); HB_EXTERN hb_buffer_t * hb_buffer_reference (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_destroy (hb_buffer_t *buffer); HB_EXTERN hb_bool_t hb_buffer_set_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_buffer_get_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key); /** * hb_buffer_content_type_t: * @HB_BUFFER_CONTENT_TYPE_INVALID: Initial value for new buffer. * @HB_BUFFER_CONTENT_TYPE_UNICODE: The buffer contains input characters (before shaping). * @HB_BUFFER_CONTENT_TYPE_GLYPHS: The buffer contains output glyphs (after shaping). */ typedef enum { HB_BUFFER_CONTENT_TYPE_INVALID = 0, HB_BUFFER_CONTENT_TYPE_UNICODE, HB_BUFFER_CONTENT_TYPE_GLYPHS } hb_buffer_content_type_t; HB_EXTERN void hb_buffer_set_content_type (hb_buffer_t *buffer, hb_buffer_content_type_t content_type); HB_EXTERN hb_buffer_content_type_t hb_buffer_get_content_type (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, hb_unicode_funcs_t *unicode_funcs); HB_EXTERN hb_unicode_funcs_t * hb_buffer_get_unicode_funcs (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_set_direction (hb_buffer_t *buffer, hb_direction_t direction); HB_EXTERN hb_direction_t hb_buffer_get_direction (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_set_script (hb_buffer_t *buffer, hb_script_t script); HB_EXTERN hb_script_t hb_buffer_get_script (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_set_language (hb_buffer_t *buffer, hb_language_t language); HB_EXTERN hb_language_t hb_buffer_get_language (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_set_segment_properties (hb_buffer_t *buffer, const hb_segment_properties_t *props); HB_EXTERN void hb_buffer_get_segment_properties (hb_buffer_t *buffer, hb_segment_properties_t *props); HB_EXTERN void hb_buffer_guess_segment_properties (hb_buffer_t *buffer); /** * hb_buffer_flags_t: * @HB_BUFFER_FLAG_DEFAULT: the default buffer flag. * @HB_BUFFER_FLAG_BOT: flag indicating that special handling of the beginning * of text paragraph can be applied to this buffer. Should usually * be set, unless you are passing to the buffer only part * of the text without the full context. * @HB_BUFFER_FLAG_EOT: flag indicating that special handling of the end of text * paragraph can be applied to this buffer, similar to * @HB_BUFFER_FLAG_BOT. * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: * flag indication that character with Default_Ignorable * Unicode property should use the corresponding glyph * from the font, instead of hiding them (done by * replacing them with the space glyph and zeroing the * advance width.) This flag takes precedence over * @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES. * @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES: * flag indication that character with Default_Ignorable * Unicode property should be removed from glyph string * instead of hiding them (done by replacing them with the * space glyph and zeroing the advance width.) * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes * precedence over this flag. Since: 1.8.0 * @HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE: * flag indicating that a dotted circle should * not be inserted in the rendering of incorrect * character sequences (such at <0905 093E>). Since: 2.4 * * Since: 0.9.20 */ typedef enum { /*< flags >*/ HB_BUFFER_FLAG_DEFAULT = 0x00000000u, HB_BUFFER_FLAG_BOT = 0x00000001u, /* Beginning-of-text */ HB_BUFFER_FLAG_EOT = 0x00000002u, /* End-of-text */ HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u, HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES = 0x00000008u, HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE = 0x00000010u } hb_buffer_flags_t; HB_EXTERN void hb_buffer_set_flags (hb_buffer_t *buffer, hb_buffer_flags_t flags); HB_EXTERN hb_buffer_flags_t hb_buffer_get_flags (hb_buffer_t *buffer); /** * hb_buffer_cluster_level_t: * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: Return cluster values grouped by graphemes into * monotone order. * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: Return cluster values grouped into monotone order. * @HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: Don't group cluster values. * @HB_BUFFER_CLUSTER_LEVEL_DEFAULT: Default cluster level, * equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES. * * Data type for holding HarfBuzz's clustering behavior options. The cluster level * dictates one aspect of how HarfBuzz will treat non-base characters * during shaping. * * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, non-base * characters are merged into the cluster of the base character that precedes them. * * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, non-base characters are initially * assigned their own cluster values, which are not merged into preceding base * clusters. This allows HarfBuzz to perform additional operations like reorder * sequences of adjacent marks. * * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES is the default, because it maintains * backward compatibility with older versions of HarfBuzz. New client programs that * do not need to maintain such backward compatibility are recommended to use * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS instead of the default. * * Since: 0.9.42 */ typedef enum { HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1, HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2, HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES } hb_buffer_cluster_level_t; HB_EXTERN void hb_buffer_set_cluster_level (hb_buffer_t *buffer, hb_buffer_cluster_level_t cluster_level); HB_EXTERN hb_buffer_cluster_level_t hb_buffer_get_cluster_level (hb_buffer_t *buffer); /** * HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT: * * The default code point for replacing invalid characters in a given encoding. * Set to U+FFFD REPLACEMENT CHARACTER. * * Since: 0.9.31 */ #define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu HB_EXTERN void hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, hb_codepoint_t replacement); HB_EXTERN hb_codepoint_t hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_set_invisible_glyph (hb_buffer_t *buffer, hb_codepoint_t invisible); HB_EXTERN hb_codepoint_t hb_buffer_get_invisible_glyph (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_reset (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_clear_contents (hb_buffer_t *buffer); HB_EXTERN hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size); HB_EXTERN hb_bool_t hb_buffer_allocation_successful (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_reverse (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_reverse_range (hb_buffer_t *buffer, unsigned int start, unsigned int end); HB_EXTERN void hb_buffer_reverse_clusters (hb_buffer_t *buffer); /* Filling the buffer in */ HB_EXTERN void hb_buffer_add (hb_buffer_t *buffer, hb_codepoint_t codepoint, unsigned int cluster); HB_EXTERN void hb_buffer_add_utf8 (hb_buffer_t *buffer, const char *text, int text_length, unsigned int item_offset, int item_length); HB_EXTERN void hb_buffer_add_utf16 (hb_buffer_t *buffer, const uint16_t *text, int text_length, unsigned int item_offset, int item_length); HB_EXTERN void hb_buffer_add_utf32 (hb_buffer_t *buffer, const uint32_t *text, int text_length, unsigned int item_offset, int item_length); HB_EXTERN void hb_buffer_add_latin1 (hb_buffer_t *buffer, const uint8_t *text, int text_length, unsigned int item_offset, int item_length); HB_EXTERN void hb_buffer_add_codepoints (hb_buffer_t *buffer, const hb_codepoint_t *text, int text_length, unsigned int item_offset, int item_length); HB_EXTERN void hb_buffer_append (hb_buffer_t *buffer, hb_buffer_t *source, unsigned int start, unsigned int end); HB_EXTERN hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, unsigned int length); HB_EXTERN unsigned int hb_buffer_get_length (hb_buffer_t *buffer); /* Getting glyphs out of the buffer */ HB_EXTERN hb_glyph_info_t * hb_buffer_get_glyph_infos (hb_buffer_t *buffer, unsigned int *length); HB_EXTERN hb_glyph_position_t * hb_buffer_get_glyph_positions (hb_buffer_t *buffer, unsigned int *length); HB_EXTERN hb_bool_t hb_buffer_has_positions (hb_buffer_t *buffer); HB_EXTERN void hb_buffer_normalize_glyphs (hb_buffer_t *buffer); /* * Serialize */ /** * hb_buffer_serialize_flags_t: * @HB_BUFFER_SERIALIZE_FLAG_DEFAULT: serialize glyph names, clusters and positions. * @HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: do not serialize glyph cluster. * @HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: do not serialize glyph position information. * @HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: do no serialize glyph name. * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents. * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: serialize glyph flags. Since: 1.5.0 * @HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: do not serialize glyph advances, * glyph offsets will reflect absolute glyph positions. Since: 1.8.0 * * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). * * Since: 0.9.20 */ typedef enum { /*< flags >*/ HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u, HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u, HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u, HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u, HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u, HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS = 0x00000010u, HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES = 0x00000020u } hb_buffer_serialize_flags_t; /** * hb_buffer_serialize_format_t: * @HB_BUFFER_SERIALIZE_FORMAT_TEXT: a human-readable, plain text format. * @HB_BUFFER_SERIALIZE_FORMAT_JSON: a machine-readable JSON format. * @HB_BUFFER_SERIALIZE_FORMAT_INVALID: invalid format. * * The buffer serialization and de-serialization format used in * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). * * Since: 0.9.2 */ typedef enum { HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T','E','X','T'), HB_BUFFER_SERIALIZE_FORMAT_JSON = HB_TAG('J','S','O','N'), HB_BUFFER_SERIALIZE_FORMAT_INVALID = HB_TAG_NONE } hb_buffer_serialize_format_t; HB_EXTERN hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len); HB_EXTERN const char * hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format); HB_EXTERN const char ** hb_buffer_serialize_list_formats (void); HB_EXTERN unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); HB_EXTERN unsigned int hb_buffer_serialize_unicode (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); HB_EXTERN unsigned int hb_buffer_serialize (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); HB_EXTERN hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, int buf_len, const char **end_ptr, hb_font_t *font, hb_buffer_serialize_format_t format); HB_EXTERN hb_bool_t hb_buffer_deserialize_unicode (hb_buffer_t *buffer, const char *buf, int buf_len, const char **end_ptr, hb_buffer_serialize_format_t format); /* * Compare buffers */ typedef enum { /*< flags >*/ HB_BUFFER_DIFF_FLAG_EQUAL = 0x0000, /* Buffers with different content_type cannot be meaningfully compared * in any further detail. */ HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH = 0x0001, /* For buffers with differing length, the per-glyph comparison is not * attempted, though we do still scan reference for dottedcircle / .notdef * glyphs. */ HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH = 0x0002, /* We want to know if dottedcircle / .notdef glyphs are present in the * reference, as we may not care so much about other differences in this * case. */ HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT = 0x0004, HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT = 0x0008, /* If the buffers have the same length, we compare them glyph-by-glyph * and report which aspect(s) of the glyph info/position are different. */ HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH = 0x0010, HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH = 0x0020, HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH = 0x0040, HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH = 0x0080 } hb_buffer_diff_flags_t; /* Compare the contents of two buffers, report types of differences. */ HB_EXTERN hb_buffer_diff_flags_t hb_buffer_diff (hb_buffer_t *buffer, hb_buffer_t *reference, hb_codepoint_t dottedcircle_glyph, unsigned int position_fuzz); /* * Debugging. */ typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, hb_font_t *font, const char *message, void *user_data); HB_EXTERN void hb_buffer_set_message_func (hb_buffer_t *buffer, hb_buffer_message_func_t func, void *user_data, hb_destroy_func_t destroy); HB_END_DECLS #endif /* HB_BUFFER_H */ PK �9�[��M3\ 3\ hb-unicode.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * Copyright © 2011 Codethink Limited * Copyright © 2011,2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod * Codethink Author(s): Ryan Lortie * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_UNICODE_H #define HB_UNICODE_H #include "hb-common.h" HB_BEGIN_DECLS /** * HB_UNICODE_MAX * * Since: 1.9.0 **/ #define HB_UNICODE_MAX 0x10FFFFu /** * hb_unicode_general_category_t: * @HB_UNICODE_GENERAL_CATEGORY_CONTROL: [Cc] * @HB_UNICODE_GENERAL_CATEGORY_FORMAT: [Cf] * @HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED: [Cn] * @HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE: [Co] * @HB_UNICODE_GENERAL_CATEGORY_SURROGATE: [Cs] * @HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER: [Ll] * @HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER: [Lm] * @HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER: [Lo] * @HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER: [Lt] * @HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER: [Lu] * @HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK: [Mc] * @HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK: [Me] * @HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK: [Mn] * @HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER: [Nd] * @HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER: [Nl] * @HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER: [No] * @HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION: [Pc] * @HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION: [Pd] * @HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION: [Pe] * @HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION: [Pf] * @HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION: [Pi] * @HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION: [Po] * @HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION: [Ps] * @HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL: [Sc] * @HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL: [Sk] * @HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL: [Sm] * @HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL: [So] * @HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR: [Zl] * @HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR: [Zp] * @HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR: [Zs] * * Data type for the "General_Category" (gc) property from * the Unicode Character Database. **/ /* Unicode Character Database property: General_Category (gc) */ typedef enum { HB_UNICODE_GENERAL_CATEGORY_CONTROL, /* Cc */ HB_UNICODE_GENERAL_CATEGORY_FORMAT, /* Cf */ HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, /* Cn */ HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, /* Co */ HB_UNICODE_GENERAL_CATEGORY_SURROGATE, /* Cs */ HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, /* Ll */ HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, /* Lm */ HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, /* Lo */ HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, /* Lt */ HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, /* Lu */ HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK, /* Mc */ HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, /* Me */ HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, /* Mn */ HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, /* Nd */ HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, /* Nl */ HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, /* No */ HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, /* Pc */ HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, /* Pd */ HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, /* Pe */ HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, /* Pf */ HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, /* Pi */ HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, /* Po */ HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, /* Ps */ HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, /* Sc */ HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, /* Sk */ HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, /* Sm */ HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, /* So */ HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, /* Zl */ HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, /* Zp */ HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR /* Zs */ } hb_unicode_general_category_t; /** * hb_unicode_combining_class_t: * @HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing * @HB_UNICODE_COMBINING_CLASS_OVERLAY: Marks which overlay a base letter or symbol * @HB_UNICODE_COMBINING_CLASS_NUKTA: Diacritic nukta marks in Brahmi-derived scripts * @HB_UNICODE_COMBINING_CLASS_KANA_VOICING: Hiragana/Katakana voicing marks * @HB_UNICODE_COMBINING_CLASS_VIRAMA: Viramas * @HB_UNICODE_COMBINING_CLASS_CCC10: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC11: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC12: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC13: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC14: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC15: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC16: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC17: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC18: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC19: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC20: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC21: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC22: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC23: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC24: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC25: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC26: [Hebrew] * @HB_UNICODE_COMBINING_CLASS_CCC27: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC28: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC29: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC30: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC31: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC32: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC33: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC34: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC35: [Arabic] * @HB_UNICODE_COMBINING_CLASS_CCC36: [Syriac] * @HB_UNICODE_COMBINING_CLASS_CCC84: [Telugu] * @HB_UNICODE_COMBINING_CLASS_CCC91: [Telugu] * @HB_UNICODE_COMBINING_CLASS_CCC103: [Thai] * @HB_UNICODE_COMBINING_CLASS_CCC107: [Thai] * @HB_UNICODE_COMBINING_CLASS_CCC118: [Lao] * @HB_UNICODE_COMBINING_CLASS_CCC122: [Lao] * @HB_UNICODE_COMBINING_CLASS_CCC129: [Tibetan] * @HB_UNICODE_COMBINING_CLASS_CCC130: [Tibetan] * @HB_UNICODE_COMBINING_CLASS_CCC133: [Tibetan] * @HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: Marks attached at the bottom left * @HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: Marks attached directly below * @HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: Marks attached directly above * @HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: Marks attached at the top right * @HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: Distinct marks at the bottom left * @HB_UNICODE_COMBINING_CLASS_BELOW: Distinct marks directly below * @HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: Distinct marks at the bottom right * @HB_UNICODE_COMBINING_CLASS_LEFT: Distinct marks to the left * @HB_UNICODE_COMBINING_CLASS_RIGHT: Distinct marks to the right * @HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: Distinct marks at the top left * @HB_UNICODE_COMBINING_CLASS_ABOVE: Distinct marks directly above * @HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: Distinct marks at the top right * @HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: Distinct marks subtending two bases * @HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: Distinct marks extending above two bases * @HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: Greek iota subscript only * @HB_UNICODE_COMBINING_CLASS_INVALID: Invalid combining class * * Data type for the Canonical_Combining_Class (ccc) property * from the Unicode Character Database. * * <note>Note: newer versions of Unicode may add new values. * Client programs should be ready to handle any value in the 0..254 range * being returned from hb_unicode_combining_class().</note> * **/ typedef enum { HB_UNICODE_COMBINING_CLASS_NOT_REORDERED = 0, HB_UNICODE_COMBINING_CLASS_OVERLAY = 1, HB_UNICODE_COMBINING_CLASS_NUKTA = 7, HB_UNICODE_COMBINING_CLASS_KANA_VOICING = 8, HB_UNICODE_COMBINING_CLASS_VIRAMA = 9, /* Hebrew */ HB_UNICODE_COMBINING_CLASS_CCC10 = 10, HB_UNICODE_COMBINING_CLASS_CCC11 = 11, HB_UNICODE_COMBINING_CLASS_CCC12 = 12, HB_UNICODE_COMBINING_CLASS_CCC13 = 13, HB_UNICODE_COMBINING_CLASS_CCC14 = 14, HB_UNICODE_COMBINING_CLASS_CCC15 = 15, HB_UNICODE_COMBINING_CLASS_CCC16 = 16, HB_UNICODE_COMBINING_CLASS_CCC17 = 17, HB_UNICODE_COMBINING_CLASS_CCC18 = 18, HB_UNICODE_COMBINING_CLASS_CCC19 = 19, HB_UNICODE_COMBINING_CLASS_CCC20 = 20, HB_UNICODE_COMBINING_CLASS_CCC21 = 21, HB_UNICODE_COMBINING_CLASS_CCC22 = 22, HB_UNICODE_COMBINING_CLASS_CCC23 = 23, HB_UNICODE_COMBINING_CLASS_CCC24 = 24, HB_UNICODE_COMBINING_CLASS_CCC25 = 25, HB_UNICODE_COMBINING_CLASS_CCC26 = 26, /* Arabic */ HB_UNICODE_COMBINING_CLASS_CCC27 = 27, HB_UNICODE_COMBINING_CLASS_CCC28 = 28, HB_UNICODE_COMBINING_CLASS_CCC29 = 29, HB_UNICODE_COMBINING_CLASS_CCC30 = 30, HB_UNICODE_COMBINING_CLASS_CCC31 = 31, HB_UNICODE_COMBINING_CLASS_CCC32 = 32, HB_UNICODE_COMBINING_CLASS_CCC33 = 33, HB_UNICODE_COMBINING_CLASS_CCC34 = 34, HB_UNICODE_COMBINING_CLASS_CCC35 = 35, /* Syriac */ HB_UNICODE_COMBINING_CLASS_CCC36 = 36, /* Telugu */ HB_UNICODE_COMBINING_CLASS_CCC84 = 84, HB_UNICODE_COMBINING_CLASS_CCC91 = 91, /* Thai */ HB_UNICODE_COMBINING_CLASS_CCC103 = 103, HB_UNICODE_COMBINING_CLASS_CCC107 = 107, /* Lao */ HB_UNICODE_COMBINING_CLASS_CCC118 = 118, HB_UNICODE_COMBINING_CLASS_CCC122 = 122, /* Tibetan */ HB_UNICODE_COMBINING_CLASS_CCC129 = 129, HB_UNICODE_COMBINING_CLASS_CCC130 = 130, HB_UNICODE_COMBINING_CLASS_CCC133 = 132, HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT = 200, HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW = 202, HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE = 214, HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT = 216, HB_UNICODE_COMBINING_CLASS_BELOW_LEFT = 218, HB_UNICODE_COMBINING_CLASS_BELOW = 220, HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT = 222, HB_UNICODE_COMBINING_CLASS_LEFT = 224, HB_UNICODE_COMBINING_CLASS_RIGHT = 226, HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT = 228, HB_UNICODE_COMBINING_CLASS_ABOVE = 230, HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT = 232, HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW = 233, HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE = 234, HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT = 240, HB_UNICODE_COMBINING_CLASS_INVALID = 255 } hb_unicode_combining_class_t; /* * hb_unicode_funcs_t */ /** * hb_unicode_funcs_t: * * Data type containing a set of virtual methods used for * accessing various Unicode character properties. * * HarfBuzz provides a default function for each of the * methods in #hb_unicode_funcs_t. Client programs can implement * their own replacements for the individual Unicode functions, as * needed, and replace the default by calling the setter for a * method. **/ typedef struct hb_unicode_funcs_t hb_unicode_funcs_t; /* * just give me the best implementation you've got there. */ HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_get_default (void); HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_create (hb_unicode_funcs_t *parent); HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_get_empty (void); HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs); HB_EXTERN void hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs); HB_EXTERN hb_bool_t hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key); HB_EXTERN void hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs); HB_EXTERN hb_bool_t hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs); HB_EXTERN hb_unicode_funcs_t * hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs); /* * funcs */ /* typedefs */ /** * hb_unicode_combining_class_func_t: * @ufuncs: A Unicode-functions structure * @unicode: The code point to query * @user_data: User data pointer passed by the caller * * A virtual method for the #hb_unicode_funcs_t structure. * * This method should retrieve the Canonical Combining Class (ccc) * property for a specified Unicode code point. * * Return value: The #hb_unicode_combining_class_t of @unicode * **/ typedef hb_unicode_combining_class_t (*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); /** * hb_unicode_general_category_func_t: * @ufuncs: A Unicode-functions structure * @unicode: The code point to query * @user_data: User data pointer passed by the caller * * A virtual method for the #hb_unicode_funcs_t structure. * * This method should retrieve the General Category property for * a specified Unicode code point. * * Return value: The #hb_unicode_general_category_t of @unicode * **/ typedef hb_unicode_general_category_t (*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); /** * hb_unicode_mirroring_func_t: * @ufuncs: A Unicode-functions structure * @unicode: The code point to query * @user_data: User data pointer passed by the caller * * A virtual method for the #hb_unicode_funcs_t structure. * * This method should retrieve the Bi-Directional Mirroring Glyph * code point for a specified Unicode code point. * * <note>Note: If a code point does not have a specified * Bi-Directional Mirroring Glyph defined, the method should * return the original code point.</note> * * Return value: The #hb_codepoint_t of the Mirroring Glyph for @unicode * **/ typedef hb_codepoint_t (*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); /** * hb_unicode_script_func_t: * @ufuncs: A Unicode-functions structure * @unicode: The code point to query * @user_data: User data pointer passed by the caller * * A virtual method for the #hb_unicode_funcs_t structure. * * This method should retrieve the Script property for a * specified Unicode code point. * * Return value: The #hb_script_t of @unicode * **/ typedef hb_script_t (*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); /** * hb_unicode_compose_func_t: * @ufuncs: A Unicode-functions structure * @a: The first code point to compose * @b: The second code point to compose * @ab: (out): The composed code point * @user_data: user data pointer passed by the caller * * A virtual method for the #hb_unicode_funcs_t structure. * * This method should compose a sequence of two input Unicode code * points by canonical equivalence, returning the composed code * point in a #hb_codepoint_t output parameter (if successful). * The method must return an #hb_bool_t indicating the success * of the composition. * * Return value: True is @a,@b composed, false otherwise * **/ typedef hb_bool_t (*hb_unicode_compose_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab, void *user_data); /** * hb_unicode_decompose_func_t: * @ufuncs: A Unicode-functions structure * @ab: The code point to decompose * @a: (out): The first decomposed code point * @b: (out): The second decomposed code point * @user_data: user data pointer passed by the caller * * A virtual method for the #hb_unicode_funcs_t structure. * * This method should decompose an input Unicode code point, * returning the two decomposed code points in #hb_codepoint_t * output parameters (if successful). The method must return an * #hb_bool_t indicating the success of the composition. * * Return value: True if @ab decomposed, false otherwise * **/ typedef hb_bool_t (*hb_unicode_decompose_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b, void *user_data); /* func setters */ /** * hb_unicode_funcs_set_combining_class_func: * @ufuncs: A Unicode-functions structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_unicode_combining_class_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs, hb_unicode_combining_class_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_unicode_funcs_set_general_category_func: * @ufuncs: A Unicode-functions structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_unicode_general_category_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs, hb_unicode_general_category_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_unicode_funcs_set_mirroring_func: * @ufuncs: A Unicode-functions structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_unicode_mirroring_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs, hb_unicode_mirroring_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_unicode_funcs_set_script_func: * @ufuncs: A Unicode-functions structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_unicode_script_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs, hb_unicode_script_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_unicode_funcs_set_compose_func: * @ufuncs: A Unicode-functions structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_unicode_compose_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs, hb_unicode_compose_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_unicode_funcs_set_decompose_func: * @ufuncs: A Unicode-functions structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_unicode_decompose_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_func_t func, void *user_data, hb_destroy_func_t destroy); /* accessors */ /** * hb_unicode_combining_class: * @ufuncs: The Unicode-functions structure * @unicode: The code point to query * * Retrieves the Canonical Combining Class (ccc) property * of code point @unicode. * * Return value: The #hb_unicode_combining_class_t of @unicode * * Since: 0.9.2 **/ HB_EXTERN hb_unicode_combining_class_t hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** * hb_unicode_general_category: * @ufuncs: The Unicode-functions structure * @unicode: The code point to query * * Retrieves the General Category (gc) property * of code point @unicode. * * Return value: The #hb_unicode_general_category_t of @unicode * * Since: 0.9.2 **/ HB_EXTERN hb_unicode_general_category_t hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** * hb_unicode_mirroring: * @ufuncs: The Unicode-functions structure * @unicode: The code point to query * * Retrieves the Bi-directional Mirroring Glyph code * point defined for code point @unicode. * * Return value: The #hb_codepoint_t of the Mirroring Glyph for @unicode * * Since: 0.9.2 **/ HB_EXTERN hb_codepoint_t hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** * hb_unicode_script: * @ufuncs: The Unicode-functions structure * @unicode: The code point to query * * Retrieves the #hb_script_t script to which code * point @unicode belongs. * * Return value: The #hb_script_t of @unicode * * Since: 0.9.2 **/ HB_EXTERN hb_script_t hb_unicode_script (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** * hb_unicode_compose: * @ufuncs: The Unicode-functions structure * @a: The first code point to compose * @b: The second code point to compose * @ab: (out): The composed code point * * Composes the code point sequence @a,@b by canonical equivalence into * code point @ab. * * Return value: True is @a,@b composed, false otherwise * * Since: 0.9.2 **/ HB_EXTERN hb_bool_t hb_unicode_compose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab); /** * hb_unicode_decompose: * @ufuncs: The Unicode-functions structure * @ab: The code point to decompose * @a: (out): The first decomposed code point * @b: (out): The second decomposed code point * * Decomposes code point @ab by canonical equivalence, into code points * @a and @b. * * Return value: True if @ab decomposed, false otherwise * * Since: 0.9.2 **/ HB_EXTERN hb_bool_t hb_unicode_decompose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b); HB_END_DECLS #endif /* HB_UNICODE_H */ PK �9�[�~�o� � hb-ot-shape.hnu �[��� /* * Copyright © 2013 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_SHAPE_H #define HB_OT_SHAPE_H #include "hb.h" HB_BEGIN_DECLS /* TODO port to shape-plan / set. */ HB_EXTERN void hb_ot_shape_glyphs_closure (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, hb_set_t *glyphs); HB_EXTERN void hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan, hb_tag_t table_tag, hb_set_t *lookup_indexes /* OUT */); HB_END_DECLS #endif /* HB_OT_SHAPE_H */ PK �9�[!�|K? K? hb-ot-layout.hnu �[��� /* * Copyright © 2007,2008,2009 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_LAYOUT_H #define HB_OT_LAYOUT_H #include "hb.h" #include "hb-ot-name.h" HB_BEGIN_DECLS #define HB_OT_TAG_BASE HB_TAG('B','A','S','E') #define HB_OT_TAG_GDEF HB_TAG('G','D','E','F') #define HB_OT_TAG_GSUB HB_TAG('G','S','U','B') #define HB_OT_TAG_GPOS HB_TAG('G','P','O','S') #define HB_OT_TAG_JSTF HB_TAG('J','S','T','F') /* * Script & Language tags. */ #define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T') #define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't') /** * HB_OT_MAX_TAGS_PER_SCRIPT: * * Since: 2.0.0 **/ #define HB_OT_MAX_TAGS_PER_SCRIPT 3u /** * HB_OT_MAX_TAGS_PER_LANGUAGE: * * Since: 2.0.0 **/ #define HB_OT_MAX_TAGS_PER_LANGUAGE 3u HB_EXTERN void hb_ot_tags_from_script_and_language (hb_script_t script, hb_language_t language, unsigned int *script_count /* IN/OUT */, hb_tag_t *script_tags /* OUT */, unsigned int *language_count /* IN/OUT */, hb_tag_t *language_tags /* OUT */); HB_EXTERN hb_script_t hb_ot_tag_to_script (hb_tag_t tag); HB_EXTERN hb_language_t hb_ot_tag_to_language (hb_tag_t tag); HB_EXTERN void hb_ot_tags_to_script_and_language (hb_tag_t script_tag, hb_tag_t language_tag, hb_script_t *script /* OUT */, hb_language_t *language /* OUT */); /* * GDEF */ HB_EXTERN hb_bool_t hb_ot_layout_has_glyph_classes (hb_face_t *face); /** * hb_ot_layout_glyph_class_t: * @HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED: Glyphs not matching the other classifications * @HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH: Spacing, single characters, capable of accepting marks * @HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: Glyphs that represent ligation of multiple characters * @HB_OT_LAYOUT_GLYPH_CLASS_MARK: Non-spacing, combining glyphs that represent marks * @HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT: Spacing glyphs that represent part of a single character * * The GDEF classes defined for glyphs. * **/ typedef enum { HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0, HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH = 1, HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE = 2, HB_OT_LAYOUT_GLYPH_CLASS_MARK = 3, HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT = 4 } hb_ot_layout_glyph_class_t; HB_EXTERN hb_ot_layout_glyph_class_t hb_ot_layout_get_glyph_class (hb_face_t *face, hb_codepoint_t glyph); HB_EXTERN void hb_ot_layout_get_glyphs_in_class (hb_face_t *face, hb_ot_layout_glyph_class_t klass, hb_set_t *glyphs /* OUT */); /* Not that useful. Provides list of attach points for a glyph that a * client may want to cache */ HB_EXTERN unsigned int hb_ot_layout_get_attach_points (hb_face_t *face, hb_codepoint_t glyph, unsigned int start_offset, unsigned int *point_count /* IN/OUT */, unsigned int *point_array /* OUT */); /* Ligature caret positions */ HB_EXTERN unsigned int hb_ot_layout_get_ligature_carets (hb_font_t *font, hb_direction_t direction, hb_codepoint_t glyph, unsigned int start_offset, unsigned int *caret_count /* IN/OUT */, hb_position_t *caret_array /* OUT */); /* * GSUB/GPOS feature query and enumeration interface */ #define HB_OT_LAYOUT_NO_SCRIPT_INDEX 0xFFFFu #define HB_OT_LAYOUT_NO_FEATURE_INDEX 0xFFFFu #define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu #define HB_OT_LAYOUT_NO_VARIATIONS_INDEX 0xFFFFFFFFu HB_EXTERN unsigned int hb_ot_layout_table_get_script_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int start_offset, unsigned int *script_count /* IN/OUT */, hb_tag_t *script_tags /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_table_find_script (hb_face_t *face, hb_tag_t table_tag, hb_tag_t script_tag, unsigned int *script_index /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_table_select_script (hb_face_t *face, hb_tag_t table_tag, unsigned int script_count, const hb_tag_t *script_tags, unsigned int *script_index /* OUT */, hb_tag_t *chosen_script /* OUT */); HB_EXTERN unsigned int hb_ot_layout_table_get_feature_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int start_offset, unsigned int *feature_count /* IN/OUT */, hb_tag_t *feature_tags /* OUT */); HB_EXTERN unsigned int hb_ot_layout_script_get_language_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int start_offset, unsigned int *language_count /* IN/OUT */, hb_tag_t *language_tags /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_script_select_language (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_count, const hb_tag_t *language_tags, unsigned int *language_index /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_language_get_required_feature_index (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int *feature_index /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_language_get_required_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int *feature_index /* OUT */, hb_tag_t *feature_tag /* OUT */); HB_EXTERN unsigned int hb_ot_layout_language_get_feature_indexes (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int start_offset, unsigned int *feature_count /* IN/OUT */, unsigned int *feature_indexes /* OUT */); HB_EXTERN unsigned int hb_ot_layout_language_get_feature_tags (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, unsigned int start_offset, unsigned int *feature_count /* IN/OUT */, hb_tag_t *feature_tags /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_language_find_feature (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, unsigned int language_index, hb_tag_t feature_tag, unsigned int *feature_index /* OUT */); HB_EXTERN unsigned int hb_ot_layout_feature_get_lookups (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, unsigned int start_offset, unsigned int *lookup_count /* IN/OUT */, unsigned int *lookup_indexes /* OUT */); HB_EXTERN unsigned int hb_ot_layout_table_get_lookup_count (hb_face_t *face, hb_tag_t table_tag); HB_EXTERN void hb_ot_layout_collect_features (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *scripts, const hb_tag_t *languages, const hb_tag_t *features, hb_set_t *feature_indexes /* OUT */); HB_EXTERN void hb_ot_layout_collect_lookups (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *scripts, const hb_tag_t *languages, const hb_tag_t *features, hb_set_t *lookup_indexes /* OUT */); HB_EXTERN void hb_ot_layout_lookup_collect_glyphs (hb_face_t *face, hb_tag_t table_tag, unsigned int lookup_index, hb_set_t *glyphs_before, /* OUT. May be NULL */ hb_set_t *glyphs_input, /* OUT. May be NULL */ hb_set_t *glyphs_after, /* OUT. May be NULL */ hb_set_t *glyphs_output /* OUT. May be NULL */); #ifdef HB_NOT_IMPLEMENTED typedef struct { const hb_codepoint_t *before, unsigned int before_length, const hb_codepoint_t *input, unsigned int input_length, const hb_codepoint_t *after, unsigned int after_length, } hb_ot_layout_glyph_sequence_t; typedef hb_bool_t (*hb_ot_layout_glyph_sequence_func_t) (hb_font_t *font, hb_tag_t table_tag, unsigned int lookup_index, const hb_ot_layout_glyph_sequence_t *sequence, void *user_data); HB_EXTERN void Xhb_ot_layout_lookup_enumerate_sequences (hb_face_t *face, hb_tag_t table_tag, unsigned int lookup_index, hb_ot_layout_glyph_sequence_func_t callback, void *user_data); #endif /* Variations support */ HB_EXTERN hb_bool_t hb_ot_layout_table_find_feature_variations (hb_face_t *face, hb_tag_t table_tag, const int *coords, unsigned int num_coords, unsigned int *variations_index /* out */); HB_EXTERN unsigned int hb_ot_layout_feature_with_variations_get_lookups (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, unsigned int variations_index, unsigned int start_offset, unsigned int *lookup_count /* IN/OUT */, unsigned int *lookup_indexes /* OUT */); /* * GSUB */ HB_EXTERN hb_bool_t hb_ot_layout_has_substitution (hb_face_t *face); HB_EXTERN unsigned hb_ot_layout_lookup_get_glyph_alternates (hb_face_t *face, unsigned lookup_index, hb_codepoint_t glyph, unsigned start_offset, unsigned *alternate_count /* IN/OUT */, hb_codepoint_t *alternate_glyphs /* OUT */); HB_EXTERN hb_bool_t hb_ot_layout_lookup_would_substitute (hb_face_t *face, unsigned int lookup_index, const hb_codepoint_t *glyphs, unsigned int glyphs_length, hb_bool_t zero_context); HB_EXTERN void hb_ot_layout_lookup_substitute_closure (hb_face_t *face, unsigned int lookup_index, hb_set_t *glyphs /*TODO , hb_bool_t inclusive */); HB_EXTERN void hb_ot_layout_lookups_substitute_closure (hb_face_t *face, const hb_set_t *lookups, hb_set_t *glyphs); #ifdef HB_NOT_IMPLEMENTED /* Note: You better have GDEF when using this API, or marks won't do much. */ HB_EXTERN hb_bool_t Xhb_ot_layout_lookup_substitute (hb_font_t *font, unsigned int lookup_index, const hb_ot_layout_glyph_sequence_t *sequence, unsigned int out_size, hb_codepoint_t *glyphs_out, /* OUT */ unsigned int *clusters_out, /* OUT */ unsigned int *out_length /* OUT */); #endif /* * GPOS */ HB_EXTERN hb_bool_t hb_ot_layout_has_positioning (hb_face_t *face); #ifdef HB_NOT_IMPLEMENTED /* Note: You better have GDEF when using this API, or marks won't do much. */ HB_EXTERN hb_bool_t Xhb_ot_layout_lookup_position (hb_font_t *font, unsigned int lookup_index, const hb_ot_layout_glyph_sequence_t *sequence, hb_glyph_position_t *positions /* IN / OUT */); #endif /* Optical 'size' feature info. Returns true if found. * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */ HB_EXTERN hb_bool_t hb_ot_layout_get_size_params (hb_face_t *face, unsigned int *design_size, /* OUT. May be NULL */ unsigned int *subfamily_id, /* OUT. May be NULL */ hb_ot_name_id_t *subfamily_name_id, /* OUT. May be NULL */ unsigned int *range_start, /* OUT. May be NULL */ unsigned int *range_end /* OUT. May be NULL */); HB_EXTERN hb_bool_t hb_ot_layout_feature_get_name_ids (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, hb_ot_name_id_t *label_id /* OUT. May be NULL */, hb_ot_name_id_t *tooltip_id /* OUT. May be NULL */, hb_ot_name_id_t *sample_id /* OUT. May be NULL */, unsigned int *num_named_parameters /* OUT. May be NULL */, hb_ot_name_id_t *first_param_id /* OUT. May be NULL */); HB_EXTERN unsigned int hb_ot_layout_feature_get_characters (hb_face_t *face, hb_tag_t table_tag, unsigned int feature_index, unsigned int start_offset, unsigned int *char_count /* IN/OUT. May be NULL */, hb_codepoint_t *characters /* OUT. May be NULL */); /* * BASE */ /** * hb_ot_layout_baseline_tag_t: * @HB_OT_LAYOUT_BASELINE_TAG_ROMAN: The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek. * In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise. * (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these * characters are not rotated.) * @HB_OT_LAYOUT_BASELINE_TAG_HANGING: The hanging baseline. In horizontal direction, this is the horizontal * line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode, * for Tibetan (or some other similar script) characters rotated 90 degrees clockwise. * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT: Ideographic character face bottom or left edge, * if the direction is horizontal or vertical, respectively. * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT: Ideographic character face top or right edge, * if the direction is horizontal or vertical, respectively. * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: Ideographic em-box bottom or left edge, * if the direction is horizontal or vertical, respectively. * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: Ideographic em-box top or right edge baseline, * if the direction is horizontal or vertical, respectively. * @HB_OT_LAYOUT_BASELINE_TAG_MATH: The baseline about which mathematical characters are centered. * In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered. * * Baseline tags from https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags * * Since: 2.6.0 */ typedef enum { HB_OT_LAYOUT_BASELINE_TAG_ROMAN = HB_TAG ('r','o','m','n'), HB_OT_LAYOUT_BASELINE_TAG_HANGING = HB_TAG ('h','a','n','g'), HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT = HB_TAG ('i','c','f','b'), HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT = HB_TAG ('i','c','f','t'), HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT = HB_TAG ('i','d','e','o'), HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT = HB_TAG ('i','d','t','p'), HB_OT_LAYOUT_BASELINE_TAG_MATH = HB_TAG ('m','a','t','h'), _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ } hb_ot_layout_baseline_tag_t; HB_EXTERN hb_bool_t hb_ot_layout_get_baseline (hb_font_t *font, hb_ot_layout_baseline_tag_t baseline_tag, hb_direction_t direction, hb_tag_t script_tag, hb_tag_t language_tag, hb_position_t *coord /* OUT. May be NULL. */); HB_END_DECLS #endif /* HB_OT_LAYOUT_H */ PK �9�[א% hb-face.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_FACE_H #define HB_FACE_H #include "hb-common.h" #include "hb-blob.h" #include "hb-set.h" HB_BEGIN_DECLS HB_EXTERN unsigned int hb_face_count (hb_blob_t *blob); /* * hb_face_t */ /** * hb_face_t: * * Data type for holding font faces. * **/ typedef struct hb_face_t hb_face_t; HB_EXTERN hb_face_t * hb_face_create (hb_blob_t *blob, unsigned int index); typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); /* calls destroy() when not needing user_data anymore */ HB_EXTERN hb_face_t * hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, void *user_data, hb_destroy_func_t destroy); HB_EXTERN hb_face_t * hb_face_get_empty (void); HB_EXTERN hb_face_t * hb_face_reference (hb_face_t *face); HB_EXTERN void hb_face_destroy (hb_face_t *face); HB_EXTERN hb_bool_t hb_face_set_user_data (hb_face_t *face, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_face_get_user_data (const hb_face_t *face, hb_user_data_key_t *key); HB_EXTERN void hb_face_make_immutable (hb_face_t *face); HB_EXTERN hb_bool_t hb_face_is_immutable (const hb_face_t *face); HB_EXTERN hb_blob_t * hb_face_reference_table (const hb_face_t *face, hb_tag_t tag); HB_EXTERN hb_blob_t * hb_face_reference_blob (hb_face_t *face); HB_EXTERN void hb_face_set_index (hb_face_t *face, unsigned int index); HB_EXTERN unsigned int hb_face_get_index (const hb_face_t *face); HB_EXTERN void hb_face_set_upem (hb_face_t *face, unsigned int upem); HB_EXTERN unsigned int hb_face_get_upem (const hb_face_t *face); HB_EXTERN void hb_face_set_glyph_count (hb_face_t *face, unsigned int glyph_count); HB_EXTERN unsigned int hb_face_get_glyph_count (const hb_face_t *face); HB_EXTERN unsigned int hb_face_get_table_tags (const hb_face_t *face, unsigned int start_offset, unsigned int *table_count, /* IN/OUT */ hb_tag_t *table_tags /* OUT */); /* * Character set. */ HB_EXTERN void hb_face_collect_unicodes (hb_face_t *face, hb_set_t *out); HB_EXTERN void hb_face_collect_variation_selectors (hb_face_t *face, hb_set_t *out); HB_EXTERN void hb_face_collect_variation_unicodes (hb_face_t *face, hb_codepoint_t variation_selector, hb_set_t *out); /* * Builder face. */ HB_EXTERN hb_face_t * hb_face_builder_create (void); HB_EXTERN hb_bool_t hb_face_builder_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob); HB_END_DECLS #endif /* HB_FACE_H */ PK �9�[-B�� � hb-ot-math.hnu �[��� /* * Copyright © 2016 Igalia S.L. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Igalia Author(s): Frédéric Wang */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_MATH_H #define HB_OT_MATH_H #include "hb.h" HB_BEGIN_DECLS /* * MATH */ #define HB_OT_TAG_MATH HB_TAG('M','A','T','H') /* Use with hb_buffer_set_script() for math shaping. */ #define HB_OT_MATH_SCRIPT HB_TAG('m','a','t','h') /* Types */ /** * hb_ot_math_constant_t: * * The 'MATH' table constants specified at * https://docs.microsoft.com/en-us/typography/opentype/spec/math * * Since: 1.3.3 */ typedef enum { HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN = 0, HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN = 1, HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT = 2, HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT = 3, HB_OT_MATH_CONSTANT_MATH_LEADING = 4, HB_OT_MATH_CONSTANT_AXIS_HEIGHT = 5, HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT = 6, HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT = 7, HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN = 8, HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX = 9, HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN = 10, HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP = 11, HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED = 12, HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN = 13, HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX = 14, HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN = 15, HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT = 16, HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT = 17, HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN = 18, HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN = 19, HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN = 20, HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN = 21, HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP = 22, HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP = 23, HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN = 24, HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN = 25, HB_OT_MATH_CONSTANT_STACK_GAP_MIN = 26, HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN = 27, HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP = 28, HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN = 29, HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN = 30, HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN = 31, HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP = 32, HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP = 33, HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN = 34, HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN = 35, HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN = 36, HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN = 37, HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS = 38, HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN = 39, HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN = 40, HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP = 41, HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP = 42, HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP = 43, HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS = 44, HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER = 45, HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP = 46, HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS = 47, HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER = 48, HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP = 49, HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP = 50, HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS = 51, HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER = 52, HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE = 53, HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE = 54, HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT = 55 } hb_ot_math_constant_t; /** * hb_ot_math_kern_t: * * The math kerning-table types defined for the four corners * of a glyph. * * Since: 1.3.3 */ typedef enum { HB_OT_MATH_KERN_TOP_RIGHT = 0, HB_OT_MATH_KERN_TOP_LEFT = 1, HB_OT_MATH_KERN_BOTTOM_RIGHT = 2, HB_OT_MATH_KERN_BOTTOM_LEFT = 3 } hb_ot_math_kern_t; /** * hb_ot_math_glyph_variant_t: * @glyph: The glyph index of the variant * @advance: The advance width of the variant * * Data type to hold math-variant information for a glyph. * * Since: 1.3.3 */ typedef struct hb_ot_math_glyph_variant_t { hb_codepoint_t glyph; hb_position_t advance; } hb_ot_math_glyph_variant_t; /** * hb_ot_math_glyph_part_flags_t: * * Flags for math glyph parts. * * Since: 1.3.3 */ typedef enum { /*< flags >*/ HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u /* Extender glyph */ } hb_ot_math_glyph_part_flags_t; /** * hb_ot_math_glyph_part_t: * @glyph: The glyph index of the variant part * @start_connector_length: The length of the connector on the starting side of the variant part * @end_connector_length: The length of the connector on the ending side of the variant part * @full_advance: The total advance of the part * @flags: #hb_ot_math_glyph_part_flags_t flags for the part * * Data type to hold information for a "part" component of a math-variant glyph. * Large variants for stretchable math glyphs (such as parentheses) can be constructed * on the fly from parts. * * Since: 1.3.3 */ typedef struct hb_ot_math_glyph_part_t { hb_codepoint_t glyph; hb_position_t start_connector_length; hb_position_t end_connector_length; hb_position_t full_advance; hb_ot_math_glyph_part_flags_t flags; } hb_ot_math_glyph_part_t; /* Methods */ HB_EXTERN hb_bool_t hb_ot_math_has_data (hb_face_t *face); HB_EXTERN hb_position_t hb_ot_math_get_constant (hb_font_t *font, hb_ot_math_constant_t constant); HB_EXTERN hb_position_t hb_ot_math_get_glyph_italics_correction (hb_font_t *font, hb_codepoint_t glyph); HB_EXTERN hb_position_t hb_ot_math_get_glyph_top_accent_attachment (hb_font_t *font, hb_codepoint_t glyph); HB_EXTERN hb_bool_t hb_ot_math_is_glyph_extended_shape (hb_face_t *face, hb_codepoint_t glyph); HB_EXTERN hb_position_t hb_ot_math_get_glyph_kerning (hb_font_t *font, hb_codepoint_t glyph, hb_ot_math_kern_t kern, hb_position_t correction_height); HB_EXTERN unsigned int hb_ot_math_get_glyph_variants (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, unsigned int start_offset, unsigned int *variants_count, /* IN/OUT */ hb_ot_math_glyph_variant_t *variants /* OUT */); HB_EXTERN hb_position_t hb_ot_math_get_min_connector_overlap (hb_font_t *font, hb_direction_t direction); HB_EXTERN unsigned int hb_ot_math_get_glyph_assembly (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, unsigned int start_offset, unsigned int *parts_count, /* IN/OUT */ hb_ot_math_glyph_part_t *parts, /* OUT */ hb_position_t *italics_correction /* OUT */); HB_END_DECLS #endif /* HB_OT_MATH_H */ PK �9�["�U�*� *� hb-aat-layout.hnu �[��� /* * Copyright © 2018 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_AAT_H_IN #error "Include <hb-aat.h> instead." #endif #ifndef HB_AAT_LAYOUT_H #define HB_AAT_LAYOUT_H #include "hb.h" #include "hb-ot.h" HB_BEGIN_DECLS /** * hb_aat_layout_feature_type_t: * @HB_AAT_LAYOUT_FEATURE_TYPE_INVALID: Initial, unset feature type * @HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC: * @HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES: * @HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION: * @HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE: * @HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION: * @HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT: * @HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING: * @HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION: * @HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS: * @HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS: * @HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS: * @HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES: * @HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS: * @HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE: * @HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING: * @HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION: * @HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA: * @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN: * @HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT: * @HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA: * @HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES: * @HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES: * @HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE: * @HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE: * @HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE: * @HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE: * * The possible feature types defined for AAT shaping. * * Since: 2.2.0 */ typedef enum { HB_AAT_LAYOUT_FEATURE_TYPE_INVALID = 0xFFFF, HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC = 0, HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES = 1, HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION = 2, HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE = 3, HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION = 4, HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT = 5, HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING = 6, HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE = 8, HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE = 9, HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION = 10, HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS = 11, HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE = 13, HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS = 14, HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS = 15, HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE = 16, HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES = 17, HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE = 18, HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS = 19, HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE = 20, HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE = 21, HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING = 22, HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION = 23, HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE = 24, HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE = 25, HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE = 26, HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE = 27, HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA = 28, HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE = 29, HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE = 30, HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE = 31, HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN = 32, HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT = 33, HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA = 34, HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES = 35, HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES = 36, HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE = 37, HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE = 38, HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE = 39, HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE = 103, /*< private >*/ _HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ } hb_aat_layout_feature_type_t; /** * hb_aat_layout_feature_selector_t: * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID: Initial, unset feature selector * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE: Deprecated * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS: Deprecated * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE: Deprecated * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS: Deprecated * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS: Deprecated * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS: Deprecated * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS: for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS: for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS: for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5: for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS: for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT: for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION: for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA: for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA * @HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE: for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN: Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA * @HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA * @HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF: for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS: for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE * @HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN: for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE * * The selectors defined for specifying AAT feature settings. * * Since: 2.2.0 */ typedef enum { HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID = 0xFFFF, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC */ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES */ HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF = 9, HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON = 10, HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF = 11, HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON = 12, HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF = 13, HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON = 14, HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF = 15, HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON = 16, HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF = 17, HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON = 18, HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF = 19, HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON = 20, HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF = 21, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES */ HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE = 2, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE = 0, /* deprecated */ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS = 1, /* deprecated */ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE = 2, /* deprecated */ HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS = 3, /* deprecated */ HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS = 4, /* deprecated */ HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS = 5, /* deprecated */ /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION */ HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT */ HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING */ HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS = 3, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF = 9, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS = 2, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS = 4, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS = 2, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS */ HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF = 9, HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON = 10, HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF = 11, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS */ HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF = 9, HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON = 10, HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF = 11, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS = 6, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES = 0, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1 = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2 = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3 = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4 = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5 = 4, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS = 5, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE = 9, HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS = 10, HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS = 11, HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS = 12, HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS = 13, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS = 14, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING */ HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT = 6, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE = 9, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION = 9, HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION= 10, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS = 2, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF = 5, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA = 0, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead */ HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA = 1, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead */ HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF = 3, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE = 5, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE = 5, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE = 1, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN = 0, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead */ HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN = 1, /* deprecated - use HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead */ HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF = 3, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT */ HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF = 3, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA */ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF = 3, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES */ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF = 5, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON = 6, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF = 7, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON = 8, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF = 9, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON = 10, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF = 11, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON = 12, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF = 13, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON = 14, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF = 15, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON = 16, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF = 17, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON = 18, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF = 19, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON = 20, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF = 21, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON = 22, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF = 23, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON = 24, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF = 25, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON = 26, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF = 27, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON = 28, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF = 29, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON = 30, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF = 31, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON = 32, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF = 33, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON = 34, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF = 35, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON = 36, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF = 37, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON = 38, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF = 39, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON = 40, HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF = 41, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES */ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF = 3, HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON = 4, HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF= 5, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS = 2, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS = 2, /* Selectors for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE */ HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN = 0, HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN = 1, HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN = 2, HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN = 3, /*< private >*/ _HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ } hb_aat_layout_feature_selector_t; HB_EXTERN unsigned int hb_aat_layout_get_feature_types (hb_face_t *face, unsigned int start_offset, unsigned int *feature_count, /* IN/OUT. May be NULL. */ hb_aat_layout_feature_type_t *features /* OUT. May be NULL. */); HB_EXTERN hb_ot_name_id_t hb_aat_layout_feature_type_get_name_id (hb_face_t *face, hb_aat_layout_feature_type_t feature_type); typedef struct hb_aat_layout_feature_selector_info_t { hb_ot_name_id_t name_id; hb_aat_layout_feature_selector_t enable; hb_aat_layout_feature_selector_t disable; /*< private >*/ unsigned int reserved; } hb_aat_layout_feature_selector_info_t; /** * HB_AAT_LAYOUT_NO_SELECTOR_INDEX * * Used when getting or setting AAT feature selectors. Indicates that * there is no selector index corresponding to the selector of interest. * */ #define HB_AAT_LAYOUT_NO_SELECTOR_INDEX 0xFFFFu HB_EXTERN unsigned int hb_aat_layout_feature_type_get_selector_infos (hb_face_t *face, hb_aat_layout_feature_type_t feature_type, unsigned int start_offset, unsigned int *selector_count, /* IN/OUT. May be NULL. */ hb_aat_layout_feature_selector_info_t *selectors, /* OUT. May be NULL. */ unsigned int *default_index /* OUT. May be NULL. */); /* * morx/mort */ HB_EXTERN hb_bool_t hb_aat_layout_has_substitution (hb_face_t *face); /* * kerx */ HB_EXTERN hb_bool_t hb_aat_layout_has_positioning (hb_face_t *face); /* * trak */ HB_EXTERN hb_bool_t hb_aat_layout_has_tracking (hb_face_t *face); HB_END_DECLS #endif /* HB_AAT_LAYOUT_H */ PK �9�[�j�n�a �a hb-common.hnu �[��� /* * Copyright © 2007,2008,2009 Red Hat, Inc. * Copyright © 2011,2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_COMMON_H #define HB_COMMON_H #ifndef HB_EXTERN #define HB_EXTERN extern #endif #ifndef HB_BEGIN_DECLS # ifdef __cplusplus # define HB_BEGIN_DECLS extern "C" { # define HB_END_DECLS } # else /* !__cplusplus */ # define HB_BEGIN_DECLS # define HB_END_DECLS # endif /* !__cplusplus */ #endif #if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \ defined (_sgi) || defined (__sun) || defined (sun) || \ defined (__digital__) || defined (__HP_cc) # include <inttypes.h> #elif defined (_AIX) # include <sys/inttypes.h> #elif defined (_MSC_VER) && _MSC_VER < 1600 /* VS 2010 (_MSC_VER 1600) has stdint.h */ typedef __int8 int8_t; typedef unsigned __int8 uint8_t; typedef __int16 int16_t; typedef unsigned __int16 uint16_t; typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #elif defined (__KERNEL__) # include <linux/types.h> #else # include <stdint.h> #endif #if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) #define HB_DEPRECATED __attribute__((__deprecated__)) #elif defined(_MSC_VER) && (_MSC_VER >= 1300) #define HB_DEPRECATED __declspec(deprecated) #else #define HB_DEPRECATED #endif #if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) #define HB_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) #elif defined(_MSC_FULL_VER) && (_MSC_FULL_VER > 140050320) #define HB_DEPRECATED_FOR(f) __declspec(deprecated("is deprecated. Use '" #f "' instead")) #else #define HB_DEPRECATED_FOR(f) HB_DEPRECATED #endif HB_BEGIN_DECLS /** * hb_bool_t: * * Data type for booleans. * **/ typedef int hb_bool_t; /** * hb_codepoint_t: * * Data type for holding Unicode codepoints. Also * used to hold glyph IDs. * **/ typedef uint32_t hb_codepoint_t; /** * hb_position_t: * * Data type for holding a single coordinate value. * Contour points and other multi-dimensional data are * stored as tuples of #hb_position_t's. * **/ typedef int32_t hb_position_t; /** * hb_mask_t: * * Data type for bitmasks. * **/ typedef uint32_t hb_mask_t; typedef union _hb_var_int_t { uint32_t u32; int32_t i32; uint16_t u16[2]; int16_t i16[2]; uint8_t u8[4]; int8_t i8[4]; } hb_var_int_t; /* hb_tag_t */ /** * hb_tag_t: * * Data type for tag identifiers. Tags are four * byte integers, each byte representing a character. * * Tags are used to identify tables, design-variation axes, * scripts, languages, font features, and baselines with * human-readable names. * **/ typedef uint32_t hb_tag_t; /** * HB_TAG: * * Constructs an #hb_tag_t from four characters. * **/ #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))) /** * HB_UNTAG: * * Extracts the characters from an #hb_tag_t. * **/ #define HB_UNTAG(tag) (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF) #define HB_TAG_NONE HB_TAG(0,0,0,0) #define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff) #define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff) /* len=-1 means str is NUL-terminated. */ HB_EXTERN hb_tag_t hb_tag_from_string (const char *str, int len); /* buf should have 4 bytes. */ HB_EXTERN void hb_tag_to_string (hb_tag_t tag, char *buf); /** * hb_direction_t: * @HB_DIRECTION_INVALID: Initial, unset direction. * @HB_DIRECTION_LTR: Text is set horizontally from left to right. * @HB_DIRECTION_RTL: Text is set horizontally from right to left. * @HB_DIRECTION_TTB: Text is set vertically from top to bottom. * @HB_DIRECTION_BTT: Text is set vertically from bottom to top. * * The direction of a text segment or buffer. * * A segment can also be tested for horizontal or vertical * orientation (irrespective of specific direction) with * HB_DIRECTION_IS_HORIZONTAL() or HB_DIRECTION_IS_VERTICAL(). * */ typedef enum { HB_DIRECTION_INVALID = 0, HB_DIRECTION_LTR = 4, HB_DIRECTION_RTL, HB_DIRECTION_TTB, HB_DIRECTION_BTT } hb_direction_t; /* len=-1 means str is NUL-terminated */ HB_EXTERN hb_direction_t hb_direction_from_string (const char *str, int len); HB_EXTERN const char * hb_direction_to_string (hb_direction_t direction); /** * HB_DIRECTION_IS_VALID: * @dir: #hb_direction_t to test * * Tests whether a text direction is valid. * **/ #define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4) /* Direction must be valid for the following */ /** * HB_DIRECTION_IS_HORIZONTAL: * @dir: #hb_direction_t to test * * Tests whether a text direction is horizontal. Requires * that the direction be valid. * **/ #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4) /** * HB_DIRECTION_IS_VERTICAL: * @dir: #hb_direction_t to test * * Tests whether a text direction is vertical. Requires * that the direction be valid. * **/ #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6) /** * HB_DIRECTION_IS_FORWARD: * @dir: #hb_direction_t to test * * Tests whether a text direction moves forward (from left to right, or from * top to bottom). Requires that the direction be valid. * **/ #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4) /** * HB_DIRECTION_IS_BACKWARD: * @dir: #hb_direction_t to test * * Tests whether a text direction moves backward (from right to left, or from * bottom to top). Requires that the direction be valid. * **/ #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5) /** * HB_DIRECTION_REVERSE: * @dir: #hb_direction_t to reverse * * Reverses a text direction. Requires that the direction * be valid. * **/ #define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) /* hb_language_t */ typedef const struct hb_language_impl_t *hb_language_t; HB_EXTERN hb_language_t hb_language_from_string (const char *str, int len); HB_EXTERN const char * hb_language_to_string (hb_language_t language); #define HB_LANGUAGE_INVALID ((hb_language_t) 0) HB_EXTERN hb_language_t hb_language_get_default (void); /** * hb_script_t: * @HB_SCRIPT_COMMON: HB_TAG ('Z','y','y','y') * @HB_SCRIPT_INHERITED: HB_TAG ('Z','i','n','h') * @HB_SCRIPT_UNKNOWN: HB_TAG ('Z','z','z','z') * @HB_SCRIPT_ARABIC * @HB_SCRIPT_ARMENIAN * @HB_SCRIPT_BENGALI * @HB_SCRIPT_CYRILLIC * @HB_SCRIPT_DEVANAGARI * @HB_SCRIPT_GEORGIAN * @HB_SCRIPT_GREEK * @HB_SCRIPT_GUJARATI * @HB_SCRIPT_GURMUKHI * @HB_SCRIPT_HANGUL * @HB_SCRIPT_HAN * @HB_SCRIPT_HEBREW * @HB_SCRIPT_HIRAGANA * @HB_SCRIPT_KANNADA * @HB_SCRIPT_KATAKANA * @HB_SCRIPT_LAO * @HB_SCRIPT_LATIN * @HB_SCRIPT_MALAYALAM * @HB_SCRIPT_ORIYA * @HB_SCRIPT_TAMIL * @HB_SCRIPT_TELUGU * @HB_SCRIPT_THAI * @HB_SCRIPT_TIBETAN * @HB_SCRIPT_BOPOMOFO * @HB_SCRIPT_BRAILLE * @HB_SCRIPT_CANADIAN_SYLLABICS * @HB_SCRIPT_CHEROKEE * @HB_SCRIPT_ETHIOPIC * @HB_SCRIPT_KHMER * @HB_SCRIPT_MONGOLIAN * @HB_SCRIPT_MYANMAR * @HB_SCRIPT_OGHAM * @HB_SCRIPT_RUNIC * @HB_SCRIPT_SINHALA * @HB_SCRIPT_SYRIAC * @HB_SCRIPT_THAANA * @HB_SCRIPT_YI * @HB_SCRIPT_DESERET * @HB_SCRIPT_GOTHIC * @HB_SCRIPT_OLD_ITALIC * @HB_SCRIPT_BUHID * @HB_SCRIPT_HANUNOO * @HB_SCRIPT_TAGALOG * @HB_SCRIPT_TAGBANWA * @HB_SCRIPT_CYPRIOT * @HB_SCRIPT_LIMBU * @HB_SCRIPT_LINEAR_B * @HB_SCRIPT_OSMANYA * @HB_SCRIPT_SHAVIAN * @HB_SCRIPT_TAI_LE * @HB_SCRIPT_UGARITIC * @HB_SCRIPT_BUGINESE * @HB_SCRIPT_COPTIC * @HB_SCRIPT_GLAGOLITIC * @HB_SCRIPT_KHAROSHTHI * @HB_SCRIPT_NEW_TAI_LUE * @HB_SCRIPT_OLD_PERSIAN * @HB_SCRIPT_SYLOTI_NAGRI * @HB_SCRIPT_TIFINAGH * @HB_SCRIPT_BALINESE * @HB_SCRIPT_CUNEIFORM * @HB_SCRIPT_NKO * @HB_SCRIPT_PHAGS_PA * @HB_SCRIPT_PHOENICIAN * @HB_SCRIPT_CARIAN * @HB_SCRIPT_CHAM * @HB_SCRIPT_KAYAH_LI * @HB_SCRIPT_LEPCHA * @HB_SCRIPT_LYCIAN * @HB_SCRIPT_LYDIAN * @HB_SCRIPT_OL_CHIKI * @HB_SCRIPT_REJANG * @HB_SCRIPT_SAURASHTRA * @HB_SCRIPT_SUNDANESE * @HB_SCRIPT_VAI * @HB_SCRIPT_AVESTAN * @HB_SCRIPT_BAMUM * @HB_SCRIPT_EGYPTIAN_HIEROGLYPHS * @HB_SCRIPT_IMPERIAL_ARAMAIC * @HB_SCRIPT_INSCRIPTIONAL_PAHLAVI * @HB_SCRIPT_INSCRIPTIONAL_PARTHIAN * @HB_SCRIPT_JAVANESE * @HB_SCRIPT_KAITHI * @HB_SCRIPT_LISU * @HB_SCRIPT_MEETEI_MAYEK * @HB_SCRIPT_OLD_SOUTH_ARABIAN * @HB_SCRIPT_OLD_TURKIC * @HB_SCRIPT_SAMARITAN * @HB_SCRIPT_TAI_THAM * @HB_SCRIPT_TAI_VIET * @HB_SCRIPT_BATAK * @HB_SCRIPT_BRAHMI * @HB_SCRIPT_MANDAIC * @HB_SCRIPT_CHAKMA * @HB_SCRIPT_MEROITIC_CURSIVE * @HB_SCRIPT_MEROITIC_HIEROGLYPHS * @HB_SCRIPT_MIAO * @HB_SCRIPT_SHARADA * @HB_SCRIPT_SORA_SOMPENG * @HB_SCRIPT_TAKRI * @HB_SCRIPT_BASSA_VAH * @HB_SCRIPT_CAUCASIAN_ALBANIAN * @HB_SCRIPT_DUPLOYAN * @HB_SCRIPT_ELBASAN * @HB_SCRIPT_GRANTHA * @HB_SCRIPT_KHOJKI * @HB_SCRIPT_KHUDAWADI * @HB_SCRIPT_LINEAR_A * @HB_SCRIPT_MAHAJANI * @HB_SCRIPT_MANICHAEAN * @HB_SCRIPT_MENDE_KIKAKUI * @HB_SCRIPT_MODI * @HB_SCRIPT_MRO * @HB_SCRIPT_NABATAEAN * @HB_SCRIPT_OLD_NORTH_ARABIAN * @HB_SCRIPT_OLD_PERMIC * @HB_SCRIPT_PAHAWH_HMONG * @HB_SCRIPT_PALMYRENE * @HB_SCRIPT_PAU_CIN_HAU * @HB_SCRIPT_PSALTER_PAHLAVI * @HB_SCRIPT_SIDDHAM * @HB_SCRIPT_TIRHUTA * @HB_SCRIPT_WARANG_CITI * @HB_SCRIPT_AHOM * @HB_SCRIPT_ANATOLIAN_HIEROGLYPHS * @HB_SCRIPT_HATRAN * @HB_SCRIPT_MULTANI * @HB_SCRIPT_OLD_HUNGARIAN * @HB_SCRIPT_SIGNWRITING * @HB_SCRIPT_ADLAM * @HB_SCRIPT_BHAIKSUKI * @HB_SCRIPT_MARCHEN * @HB_SCRIPT_OSAGE * @HB_SCRIPT_TANGUT * @HB_SCRIPT_NEWA * @HB_SCRIPT_MASARAM_GONDI * @HB_SCRIPT_NUSHU * @HB_SCRIPT_SOYOMBO * @HB_SCRIPT_ZANABAZAR_SQUARE * @HB_SCRIPT_DOGRA * @HB_SCRIPT_GUNJALA_GONDI * @HB_SCRIPT_HANIFI_ROHINGYA * @HB_SCRIPT_MAKASAR * @HB_SCRIPT_MEDEFAIDRIN * @HB_SCRIPT_OLD_SOGDIAN * @HB_SCRIPT_SOGDIAN * @HB_SCRIPT_ELYMAIC * @HB_SCRIPT_NANDINAGARI * @HB_SCRIPT_NYIAKENG_PUACHUE_HMONG * @HB_SCRIPT_WANCHO * @HB_SCRIPT_INVALID: #HB_TAG_NONE * * Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding * to the four-letter values defined by [ISO 15924](https://unicode.org/iso15924/). * * See also the Script (sc) property of the Unicode Character Database. * **/ /* https://unicode.org/iso15924/ */ /* https://docs.google.com/spreadsheets/d/1Y90M0Ie3MUJ6UVCRDOypOtijlMDLNNyyLk36T6iMu0o */ /* Unicode Character Database property: Script (sc) */ typedef enum { /*1.1*/ HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'), /*1.1*/ HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'), /*5.0*/ HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'), /*1.1*/ HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'), /*1.1*/ HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'), /*1.1*/ HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'), /*1.1*/ HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'), /*1.1*/ HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'), /*1.1*/ HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'), /*1.1*/ HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'), /*1.1*/ HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'), /*1.1*/ HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'), /*1.1*/ HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'), /*1.1*/ HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'), /*1.1*/ HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'), /*1.1*/ HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'), /*1.1*/ HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'), /*1.1*/ HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'), /*1.1*/ HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'), /*1.1*/ HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'), /*1.1*/ HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'), /*1.1*/ HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'), /*1.1*/ HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'), /*1.1*/ HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'), /*1.1*/ HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'), /*2.0*/ HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'), /*3.0*/ HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'), /*3.0*/ HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'), /*3.0*/ HB_SCRIPT_CANADIAN_SYLLABICS = HB_TAG ('C','a','n','s'), /*3.0*/ HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'), /*3.0*/ HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'), /*3.0*/ HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'), /*3.0*/ HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'), /*3.0*/ HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'), /*3.0*/ HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'), /*3.0*/ HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'), /*3.0*/ HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'), /*3.0*/ HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'), /*3.0*/ HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'), /*3.0*/ HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'), /*3.1*/ HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'), /*3.1*/ HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'), /*3.1*/ HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'), /*3.2*/ HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'), /*3.2*/ HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'), /*3.2*/ HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'), /*3.2*/ HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'), /*4.0*/ HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'), /*4.0*/ HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'), /*4.0*/ HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'), /*4.0*/ HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'), /*4.0*/ HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'), /*4.0*/ HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'), /*4.0*/ HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'), /*4.1*/ HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'), /*4.1*/ HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'), /*4.1*/ HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'), /*4.1*/ HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'), /*4.1*/ HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'), /*4.1*/ HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'), /*4.1*/ HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'), /*4.1*/ HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'), /*5.0*/ HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'), /*5.0*/ HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'), /*5.0*/ HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'), /*5.0*/ HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'), /*5.0*/ HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'), /*5.1*/ HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'), /*5.1*/ HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'), /*5.1*/ HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'), /*5.1*/ HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'), /*5.1*/ HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'), /*5.1*/ HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'), /*5.1*/ HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'), /*5.1*/ HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'), /*5.1*/ HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'), /*5.1*/ HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'), /*5.1*/ HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'), /*5.2*/ HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'), /*5.2*/ HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'), /*5.2*/ HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'), /*5.2*/ HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'), /*5.2*/ HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'), /*5.2*/ HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'), /*5.2*/ HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'), /*5.2*/ HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'), /*5.2*/ HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'), /*5.2*/ HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'), /*5.2*/ HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'), /*5.2*/ HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'), /*5.2*/ HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'), /*5.2*/ HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'), /*5.2*/ HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'), /*6.0*/ HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'), /*6.0*/ HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'), /*6.0*/ HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'), /*6.1*/ HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'), /*6.1*/ HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'), /*6.1*/ HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'), /*6.1*/ HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'), /*6.1*/ HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'), /*6.1*/ HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'), /*6.1*/ HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'), /* * Since: 0.9.30 */ /*7.0*/ HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'), /*7.0*/ HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'), /*7.0*/ HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'), /*7.0*/ HB_SCRIPT_ELBASAN = HB_TAG ('E','l','b','a'), /*7.0*/ HB_SCRIPT_GRANTHA = HB_TAG ('G','r','a','n'), /*7.0*/ HB_SCRIPT_KHOJKI = HB_TAG ('K','h','o','j'), /*7.0*/ HB_SCRIPT_KHUDAWADI = HB_TAG ('S','i','n','d'), /*7.0*/ HB_SCRIPT_LINEAR_A = HB_TAG ('L','i','n','a'), /*7.0*/ HB_SCRIPT_MAHAJANI = HB_TAG ('M','a','h','j'), /*7.0*/ HB_SCRIPT_MANICHAEAN = HB_TAG ('M','a','n','i'), /*7.0*/ HB_SCRIPT_MENDE_KIKAKUI = HB_TAG ('M','e','n','d'), /*7.0*/ HB_SCRIPT_MODI = HB_TAG ('M','o','d','i'), /*7.0*/ HB_SCRIPT_MRO = HB_TAG ('M','r','o','o'), /*7.0*/ HB_SCRIPT_NABATAEAN = HB_TAG ('N','b','a','t'), /*7.0*/ HB_SCRIPT_OLD_NORTH_ARABIAN = HB_TAG ('N','a','r','b'), /*7.0*/ HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'), /*7.0*/ HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'), /*7.0*/ HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'), /*7.0*/ HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), /*7.0*/ HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), /*7.0*/ HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), /*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), /*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), /*8.0*/ HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'), /*8.0*/ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'), /*8.0*/ HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'), /*8.0*/ HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'), /*8.0*/ HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'), /*8.0*/ HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'), /* * Since 1.3.0 */ /*9.0*/ HB_SCRIPT_ADLAM = HB_TAG ('A','d','l','m'), /*9.0*/ HB_SCRIPT_BHAIKSUKI = HB_TAG ('B','h','k','s'), /*9.0*/ HB_SCRIPT_MARCHEN = HB_TAG ('M','a','r','c'), /*9.0*/ HB_SCRIPT_OSAGE = HB_TAG ('O','s','g','e'), /*9.0*/ HB_SCRIPT_TANGUT = HB_TAG ('T','a','n','g'), /*9.0*/ HB_SCRIPT_NEWA = HB_TAG ('N','e','w','a'), /* * Since 1.6.0 */ /*10.0*/HB_SCRIPT_MASARAM_GONDI = HB_TAG ('G','o','n','m'), /*10.0*/HB_SCRIPT_NUSHU = HB_TAG ('N','s','h','u'), /*10.0*/HB_SCRIPT_SOYOMBO = HB_TAG ('S','o','y','o'), /*10.0*/HB_SCRIPT_ZANABAZAR_SQUARE = HB_TAG ('Z','a','n','b'), /* * Since 1.8.0 */ /*11.0*/HB_SCRIPT_DOGRA = HB_TAG ('D','o','g','r'), /*11.0*/HB_SCRIPT_GUNJALA_GONDI = HB_TAG ('G','o','n','g'), /*11.0*/HB_SCRIPT_HANIFI_ROHINGYA = HB_TAG ('R','o','h','g'), /*11.0*/HB_SCRIPT_MAKASAR = HB_TAG ('M','a','k','a'), /*11.0*/HB_SCRIPT_MEDEFAIDRIN = HB_TAG ('M','e','d','f'), /*11.0*/HB_SCRIPT_OLD_SOGDIAN = HB_TAG ('S','o','g','o'), /*11.0*/HB_SCRIPT_SOGDIAN = HB_TAG ('S','o','g','d'), /* * Since 2.4.0 */ /*12.0*/HB_SCRIPT_ELYMAIC = HB_TAG ('E','l','y','m'), /*12.0*/HB_SCRIPT_NANDINAGARI = HB_TAG ('N','a','n','d'), /*12.0*/HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'), /*12.0*/HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'), /* * Since 2.6.7 */ /*13.0*/HB_SCRIPT_CHORASMIAN = HB_TAG ('C','h','r','s'), /*13.0*/HB_SCRIPT_DIVES_AKURU = HB_TAG ('D','i','a','k'), /*13.0*/HB_SCRIPT_KHITAN_SMALL_SCRIPT = HB_TAG ('K','i','t','s'), /*13.0*/HB_SCRIPT_YEZIDI = HB_TAG ('Y','e','z','i'), /* No script set. */ HB_SCRIPT_INVALID = HB_TAG_NONE, /* Dummy values to ensure any hb_tag_t value can be passed/stored as hb_script_t * without risking undefined behavior. We have two, for historical reasons. * HB_TAG_MAX used to be unsigned, but that was invalid Ansi C, so was changed * to _HB_SCRIPT_MAX_VALUE to be equal to HB_TAG_MAX_SIGNED as well. * * See this thread for technicalities: * * https://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html */ _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX_SIGNED, /*< skip >*/ _HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED /*< skip >*/ } hb_script_t; /* Script functions */ HB_EXTERN hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag); HB_EXTERN hb_script_t hb_script_from_string (const char *str, int len); HB_EXTERN hb_tag_t hb_script_to_iso15924_tag (hb_script_t script); HB_EXTERN hb_direction_t hb_script_get_horizontal_direction (hb_script_t script); /* User data */ /** * hb_user_data_key_t: * * Data structure for holding user-data keys. * **/ typedef struct hb_user_data_key_t { /*< private >*/ char unused; } hb_user_data_key_t; typedef void (*hb_destroy_func_t) (void *user_data); /* Font features and variations. */ /** * HB_FEATURE_GLOBAL_START * * Since: 2.0.0 */ #define HB_FEATURE_GLOBAL_START 0 /** * HB_FEATURE_GLOBAL_END * * Since: 2.0.0 */ #define HB_FEATURE_GLOBAL_END ((unsigned int) -1) /** * hb_feature_t: * @tag: The #hb_tag_t tag of the feature * @value: The value of the feature. 0 disables the feature, non-zero (usually * 1) enables the feature. For features implemented as lookup type 3 (like * 'salt') the @value is a one based index into the alternates. * @start: the cluster to start applying this feature setting (inclusive). * @end: the cluster to end applying this feature setting (exclusive). * * The #hb_feature_t is the structure that holds information about requested * feature application. The feature will be applied with the given value to all * glyphs which are in clusters between @start (inclusive) and @end (exclusive). * Setting start to @HB_FEATURE_GLOBAL_START and end to @HB_FEATURE_GLOBAL_END * specifies that the feature always applies to the entire buffer. */ typedef struct hb_feature_t { hb_tag_t tag; uint32_t value; unsigned int start; unsigned int end; } hb_feature_t; HB_EXTERN hb_bool_t hb_feature_from_string (const char *str, int len, hb_feature_t *feature); HB_EXTERN void hb_feature_to_string (hb_feature_t *feature, char *buf, unsigned int size); /** * hb_variation_t: * @tag: The #hb_tag_t tag of the variation-axis name * @value: The value of the variation axis * * Data type for holding variation data. Registered OpenType * variation-axis tags are listed at * https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg * * Since: 1.4.2 */ typedef struct hb_variation_t { hb_tag_t tag; float value; } hb_variation_t; HB_EXTERN hb_bool_t hb_variation_from_string (const char *str, int len, hb_variation_t *variation); HB_EXTERN void hb_variation_to_string (hb_variation_t *variation, char *buf, unsigned int size); /** * hb_color_t: * * Data type for holding color values. Colors are eight bits per * channel RGB plus alpha transparency. * * Since: 2.1.0 */ typedef uint32_t hb_color_t; #define HB_COLOR(b,g,r,a) ((hb_color_t) HB_TAG ((b),(g),(r),(a))) HB_EXTERN uint8_t hb_color_get_alpha (hb_color_t color); #define hb_color_get_alpha(color) ((color) & 0xFF) HB_EXTERN uint8_t hb_color_get_red (hb_color_t color); #define hb_color_get_red(color) (((color) >> 8) & 0xFF) HB_EXTERN uint8_t hb_color_get_green (hb_color_t color); #define hb_color_get_green(color) (((color) >> 16) & 0xFF) HB_EXTERN uint8_t hb_color_get_blue (hb_color_t color); #define hb_color_get_blue(color) (((color) >> 24) & 0xFF) HB_END_DECLS #endif /* HB_COMMON_H */ PK �9�[��p�� � hb-ot.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_OT_H #define HB_OT_H #define HB_OT_H_IN #include "hb.h" #include "hb-ot-color.h" #include "hb-ot-deprecated.h" #include "hb-ot-font.h" #include "hb-ot-layout.h" #include "hb-ot-math.h" #include "hb-ot-meta.h" #include "hb-ot-metrics.h" #include "hb-ot-name.h" #include "hb-ot-shape.h" #include "hb-ot-var.h" HB_BEGIN_DECLS HB_END_DECLS #undef HB_OT_H_IN #endif /* HB_OT_H */ PK �9�[�?�6� � hb-ot-meta.hnu �[��� /* * Copyright © 2019 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_META_H #define HB_OT_META_H #include "hb.h" HB_BEGIN_DECLS /** * hb_ot_meta_tag_t: * @HB_OT_META_TAG_DESIGN_LANGUAGES: Design languages. Text, using only * Basic Latin (ASCII) characters. Indicates languages and/or scripts * for the user audiences that the font was primarily designed for. * @HB_OT_META_TAG_SUPPORTED_LANGUAGES: Supported languages. Text, using * only Basic Latin (ASCII) characters. Indicates languages and/or scripts * that the font is declared to be capable of supporting. * * Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta * * Since: 2.6.0 **/ typedef enum { /* HB_OT_META_TAG_APPL = HB_TAG ('a','p','p','l'), HB_OT_META_TAG_BILD = HB_TAG ('b','i','l','d'), */ HB_OT_META_TAG_DESIGN_LANGUAGES = HB_TAG ('d','l','n','g'), HB_OT_META_TAG_SUPPORTED_LANGUAGES = HB_TAG ('s','l','n','g'), _HB_OT_META_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ } hb_ot_meta_tag_t; HB_EXTERN unsigned int hb_ot_meta_get_entry_tags (hb_face_t *face, unsigned int start_offset, unsigned int *entries_count, /* IN/OUT. May be NULL. */ hb_ot_meta_tag_t *entries /* OUT. May be NULL. */); HB_EXTERN hb_blob_t * hb_ot_meta_reference_entry (hb_face_t *face, hb_ot_meta_tag_t meta_tag); HB_END_DECLS #endif /* HB_OT_META_H */ PK �9�[���7 7 hb-blob.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_BLOB_H #define HB_BLOB_H #include "hb-common.h" HB_BEGIN_DECLS /** * hb_memory_mode_t: * @HB_MEMORY_MODE_DUPLICATE * @HB_MEMORY_MODE_READONLY * @HB_MEMORY_MODE_WRITABLE * @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE * * Data type holding the memory modes available to * client programs. * * Regarding these various memory-modes: * * - In no case shall the HarfBuzz client modify memory * that is passed to HarfBuzz in a blob. If there is * any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used * such that HarfBuzz makes a copy immediately, * * - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really * really know what you are doing, * * - @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a * copy of data solely for the purpose of passing to * HarfBuzz and doing that just once (no reuse!), * * - If the font is mmap()ed, it's okay to use * @HB_MEMORY_READONLY_MAY_MAKE_WRITABLE, however, using that mode * correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead. **/ typedef enum { HB_MEMORY_MODE_DUPLICATE, HB_MEMORY_MODE_READONLY, HB_MEMORY_MODE_WRITABLE, HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE } hb_memory_mode_t; /** * hb_blob_t: * * Data type for blobs. A blob wraps a chunk of binary * data and facilitates its lifecycle management between * a client program and HarfBuzz. * **/ typedef struct hb_blob_t hb_blob_t; HB_EXTERN hb_blob_t * hb_blob_create (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy); HB_EXTERN hb_blob_t * hb_blob_create_from_file (const char *file_name); /* Always creates with MEMORY_MODE_READONLY. * Even if the parent blob is writable, we don't * want the user of the sub-blob to be able to * modify the parent data as that data may be * shared among multiple sub-blobs. */ HB_EXTERN hb_blob_t * hb_blob_create_sub_blob (hb_blob_t *parent, unsigned int offset, unsigned int length); HB_EXTERN hb_blob_t * hb_blob_copy_writable_or_fail (hb_blob_t *blob); HB_EXTERN hb_blob_t * hb_blob_get_empty (void); HB_EXTERN hb_blob_t * hb_blob_reference (hb_blob_t *blob); HB_EXTERN void hb_blob_destroy (hb_blob_t *blob); HB_EXTERN hb_bool_t hb_blob_set_user_data (hb_blob_t *blob, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_blob_get_user_data (hb_blob_t *blob, hb_user_data_key_t *key); HB_EXTERN void hb_blob_make_immutable (hb_blob_t *blob); HB_EXTERN hb_bool_t hb_blob_is_immutable (hb_blob_t *blob); HB_EXTERN unsigned int hb_blob_get_length (hb_blob_t *blob); HB_EXTERN const char * hb_blob_get_data (hb_blob_t *blob, unsigned int *length); HB_EXTERN char * hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length); HB_END_DECLS #endif /* HB_BLOB_H */ PK �9�[��(� � hb-ot-name.hnu �[��� /* * Copyright © 2018 Ebrahim Byagowi. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_NAME_H #define HB_OT_NAME_H #include "hb.h" HB_BEGIN_DECLS /** * hb_ot_name_id_t: * @HB_OT_NAME_ID_INVALID: Value to represent a nonexistent name ID. * * An integral type representing an OpenType 'name' table name identifier. * There are predefined name IDs, as well as name IDs return from other * API. These can be used to fetch name strings from a font face. * * Since: 2.0.0 **/ enum { HB_OT_NAME_ID_COPYRIGHT = 0, HB_OT_NAME_ID_FONT_FAMILY = 1, HB_OT_NAME_ID_FONT_SUBFAMILY = 2, HB_OT_NAME_ID_UNIQUE_ID = 3, HB_OT_NAME_ID_FULL_NAME = 4, HB_OT_NAME_ID_VERSION_STRING = 5, HB_OT_NAME_ID_POSTSCRIPT_NAME = 6, HB_OT_NAME_ID_TRADEMARK = 7, HB_OT_NAME_ID_MANUFACTURER = 8, HB_OT_NAME_ID_DESIGNER = 9, HB_OT_NAME_ID_DESCRIPTION = 10, HB_OT_NAME_ID_VENDOR_URL = 11, HB_OT_NAME_ID_DESIGNER_URL = 12, HB_OT_NAME_ID_LICENSE = 13, HB_OT_NAME_ID_LICENSE_URL = 14, /*HB_OT_NAME_ID_RESERVED = 15,*/ HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY = 16, HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY = 17, HB_OT_NAME_ID_MAC_FULL_NAME = 18, HB_OT_NAME_ID_SAMPLE_TEXT = 19, HB_OT_NAME_ID_CID_FINDFONT_NAME = 20, HB_OT_NAME_ID_WWS_FAMILY = 21, HB_OT_NAME_ID_WWS_SUBFAMILY = 22, HB_OT_NAME_ID_LIGHT_BACKGROUND = 23, HB_OT_NAME_ID_DARK_BACKGROUND = 24, HB_OT_NAME_ID_VARIATIONS_PS_PREFIX = 25, HB_OT_NAME_ID_INVALID = 0xFFFF }; typedef unsigned int hb_ot_name_id_t; /** * hb_ot_name_entry_t: * @name_id: name ID * @language: language * * Structure representing a name ID in a particular language. * * Since: 2.1.0 **/ typedef struct hb_ot_name_entry_t { hb_ot_name_id_t name_id; /*< private >*/ hb_var_int_t var; /*< public >*/ hb_language_t language; } hb_ot_name_entry_t; HB_EXTERN const hb_ot_name_entry_t * hb_ot_name_list_names (hb_face_t *face, unsigned int *num_entries /* OUT */); HB_EXTERN unsigned int hb_ot_name_get_utf8 (hb_face_t *face, hb_ot_name_id_t name_id, hb_language_t language, unsigned int *text_size /* IN/OUT */, char *text /* OUT */); HB_EXTERN unsigned int hb_ot_name_get_utf16 (hb_face_t *face, hb_ot_name_id_t name_id, hb_language_t language, unsigned int *text_size /* IN/OUT */, uint16_t *text /* OUT */); HB_EXTERN unsigned int hb_ot_name_get_utf32 (hb_face_t *face, hb_ot_name_id_t name_id, hb_language_t language, unsigned int *text_size /* IN/OUT */, uint32_t *text /* OUT */); HB_END_DECLS #endif /* HB_OT_NAME_H */ PK �9�[�wf� � hb-graphite2.hnu �[��� /* * Copyright © 2011 Martin Hosken * Copyright © 2011 SIL International * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_GRAPHITE2_H #define HB_GRAPHITE2_H #include "hb.h" #include <graphite2/Font.h> HB_BEGIN_DECLS /** * HB_GRAPHITE2_TAG_SILF: * * The #hb_tag_t tag for the `Silf` table, which holds Graphite * features. * * For more information, see http://graphite.sil.org/ * **/ #define HB_GRAPHITE2_TAG_SILF HB_TAG('S','i','l','f') HB_EXTERN gr_face * hb_graphite2_face_get_gr_face (hb_face_t *face); #ifndef HB_DISABLE_DEPRECATED HB_EXTERN HB_DEPRECATED_FOR (hb_graphite2_face_get_gr_face) gr_font * hb_graphite2_font_get_gr_font (hb_font_t *font); #endif HB_END_DECLS #endif /* HB_GRAPHITE2_H */ PK �9�[�(<�7 7 hb-gobject.hnu �[��� /* * Copyright (C) 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_GOBJECT_H #define HB_GOBJECT_H #define HB_GOBJECT_H_IN #include "hb.h" #include "hb-gobject-enums.h" #include "hb-gobject-structs.h" HB_BEGIN_DECLS HB_END_DECLS #undef HB_GOBJECT_H_IN #endif /* HB_GOBJECT_H */ PK �9�[�^c�x x hb-draw.hnu �[��� /* * Copyright © 2019-2020 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_DRAW_H #define HB_DRAW_H #include "hb.h" HB_BEGIN_DECLS #ifdef HB_EXPERIMENTAL_API typedef void (*hb_draw_move_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data); typedef void (*hb_draw_line_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data); typedef void (*hb_draw_quadratic_to_func_t) (hb_position_t control_x, hb_position_t control_y, hb_position_t to_x, hb_position_t to_y, void *user_data); typedef void (*hb_draw_cubic_to_func_t) (hb_position_t control1_x, hb_position_t control1_y, hb_position_t control2_x, hb_position_t control2_y, hb_position_t to_x, hb_position_t to_y, void *user_data); typedef void (*hb_draw_close_path_func_t) (void *user_data); /** * hb_draw_funcs_t: * * Glyph draw callbacks. * * _move_to, _line_to and _cubic_to calls are nessecary to be defined but we * translate _quadratic_to calls to _cubic_to if the callback isn't defined. * * Since: EXPERIMENTAL **/ typedef struct hb_draw_funcs_t hb_draw_funcs_t; HB_EXTERN void hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs, hb_draw_move_to_func_t move_to); HB_EXTERN void hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs, hb_draw_line_to_func_t line_to); HB_EXTERN void hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs, hb_draw_quadratic_to_func_t quadratic_to); HB_EXTERN void hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs, hb_draw_cubic_to_func_t cubic_to); HB_EXTERN void hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs, hb_draw_close_path_func_t close_path); HB_EXTERN hb_draw_funcs_t * hb_draw_funcs_create (void); HB_EXTERN hb_draw_funcs_t * hb_draw_funcs_reference (hb_draw_funcs_t *funcs); HB_EXTERN void hb_draw_funcs_destroy (hb_draw_funcs_t *funcs); HB_EXTERN void hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs); HB_EXTERN hb_bool_t hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs); #endif HB_END_DECLS #endif /* HB_DRAW_H */ PK �9�[�Ї� hb-ot-var.hnu �[��� /* * Copyright © 2017 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_VAR_H #define HB_OT_VAR_H #include "hb.h" HB_BEGIN_DECLS /** * hb_tag_t: * @HB_OT_TAG_VAR_AXIS_ITALIC: Registered tag for the roman/italic axis */ #define HB_OT_TAG_VAR_AXIS_ITALIC HB_TAG('i','t','a','l') /** * hb_tag_t: * @HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE: Registered tag for the optical-size axis * * <note>Note: The optical-size axis supersedes the OpenType `size` feature.</note> */ #define HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE HB_TAG('o','p','s','z') /** * hb_tag_t: * @HB_OT_TAG_VAR_AXIS_SLANT: Registered tag for the slant axis */ #define HB_OT_TAG_VAR_AXIS_SLANT HB_TAG('s','l','n','t') /** * hb_tag_t: * @HB_OT_TAG_VAR_AXIS_WIDTH: Registered tag for the width axis */ #define HB_OT_TAG_VAR_AXIS_WIDTH HB_TAG('w','d','t','h') /** * hb_tag_t: * @HB_OT_TAG_VAR_AXIS_WEIGHT: Registered tag for the weight axis */ #define HB_OT_TAG_VAR_AXIS_WEIGHT HB_TAG('w','g','h','t') /* * fvar / avar */ HB_EXTERN hb_bool_t hb_ot_var_has_data (hb_face_t *face); /* * Variation axes. */ HB_EXTERN unsigned int hb_ot_var_get_axis_count (hb_face_t *face); /** * hb_ot_var_axis_flags_t: * @HB_OT_VAR_AXIS_FLAG_HIDDEN: The axis should not be exposed directly in user interfaces. * * Since: 2.2.0 */ typedef enum { /*< flags >*/ HB_OT_VAR_AXIS_FLAG_HIDDEN = 0x00000001u, _HB_OT_VAR_AXIS_FLAG_MAX_VALUE= HB_TAG_MAX_SIGNED /*< skip >*/ } hb_ot_var_axis_flags_t; /** * hb_ot_var_axis_info_t: * @axis_index: Index of the axis in the variation-axis array * @tag: The #hb_tag_t tag identifying the design variation of the axis * @name_id: The `name` table Name ID that provides display names for the axis * @flags: The #hb_ot_var_axis_flags_t flags for the axis * @min_value: The mininum value on the variation axis that the font covers * @default_value: The position on the variation axis corresponding to the font's defaults * @max_value: The maximum value on the variation axis that the font covers * * Data type for holding variation-axis values. * * The minimum, default, and maximum values are in un-normalized, user scales. * * <note>Note: at present, the only flag defined for @flags is * #HB_OT_VAR_AXIS_FLAG_HIDDEN.</note> * * Since: 2.2.0 */ typedef struct hb_ot_var_axis_info_t { unsigned int axis_index; hb_tag_t tag; hb_ot_name_id_t name_id; hb_ot_var_axis_flags_t flags; float min_value; float default_value; float max_value; /*< private >*/ unsigned int reserved; } hb_ot_var_axis_info_t; HB_EXTERN unsigned int hb_ot_var_get_axis_infos (hb_face_t *face, unsigned int start_offset, unsigned int *axes_count /* IN/OUT */, hb_ot_var_axis_info_t *axes_array /* OUT */); HB_EXTERN hb_bool_t hb_ot_var_find_axis_info (hb_face_t *face, hb_tag_t axis_tag, hb_ot_var_axis_info_t *axis_info); /* * Named instances. */ HB_EXTERN unsigned int hb_ot_var_get_named_instance_count (hb_face_t *face); HB_EXTERN hb_ot_name_id_t hb_ot_var_named_instance_get_subfamily_name_id (hb_face_t *face, unsigned int instance_index); HB_EXTERN hb_ot_name_id_t hb_ot_var_named_instance_get_postscript_name_id (hb_face_t *face, unsigned int instance_index); HB_EXTERN unsigned int hb_ot_var_named_instance_get_design_coords (hb_face_t *face, unsigned int instance_index, unsigned int *coords_length, /* IN/OUT */ float *coords /* OUT */); /* * Conversions. */ HB_EXTERN void hb_ot_var_normalize_variations (hb_face_t *face, const hb_variation_t *variations, /* IN */ unsigned int variations_length, int *coords, /* OUT */ unsigned int coords_length); HB_EXTERN void hb_ot_var_normalize_coords (hb_face_t *face, unsigned int coords_length, const float *design_coords, /* IN */ int *normalized_coords /* OUT */); HB_END_DECLS #endif /* HB_OT_VAR_H */ PK �9�[�ɱ�D D hb-style.hnu �[��� /* * Copyright © 2019 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_STYLE_H #define HB_STYLE_H #include "hb.h" HB_BEGIN_DECLS #ifdef HB_EXPERIMENTAL_API HB_EXTERN float hb_style_get_value (hb_font_t *font, hb_tag_t style_tag); #endif HB_END_DECLS #endif /* HB_STYLE_H */ PK �9�[�P~� � hb-ot-deprecated.hnu �[��� /* * Copyright © 2018 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_DEPRECATED_H #define HB_OT_DEPRECATED_H #include "hb.h" #include "hb-ot-name.h" HB_BEGIN_DECLS #ifndef HB_DISABLE_DEPRECATED /* https://github.com/harfbuzz/harfbuzz/issues/1734 */ #define HB_MATH_GLYPH_PART_FLAG_EXTENDER HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER /* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */ HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_table_select_script) hb_bool_t hb_ot_layout_table_choose_script (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *script_tags, unsigned int *script_index, hb_tag_t *chosen_script); HB_EXTERN HB_DEPRECATED_FOR (hb_ot_layout_script_select_language) hb_bool_t hb_ot_layout_script_find_language (hb_face_t *face, hb_tag_t table_tag, unsigned int script_index, hb_tag_t language_tag, unsigned int *language_index); HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) void hb_ot_tags_from_script (hb_script_t script, hb_tag_t *script_tag_1, hb_tag_t *script_tag_2); HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) hb_tag_t hb_ot_tag_from_language (hb_language_t language); /** * HB_OT_VAR_NO_AXIS_INDEX: * * Since: 1.4.2 * Deprecated: 2.2.0 */ #define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu /** * hb_ot_var_axis_t: * * Since: 1.4.2 * Deprecated: 2.2.0 */ typedef struct hb_ot_var_axis_t { hb_tag_t tag; hb_ot_name_id_t name_id; float min_value; float default_value; float max_value; } hb_ot_var_axis_t; HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_get_axis_infos) unsigned int hb_ot_var_get_axes (hb_face_t *face, unsigned int start_offset, unsigned int *axes_count /* IN/OUT */, hb_ot_var_axis_t *axes_array /* OUT */); HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_find_axis_info) hb_bool_t hb_ot_var_find_axis (hb_face_t *face, hb_tag_t axis_tag, unsigned int *axis_index, hb_ot_var_axis_t *axis_info); #endif HB_END_DECLS #endif /* HB_OT_DEPRECATED_H */ PK �9�[�(��r �r hb-font.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_FONT_H #define HB_FONT_H #include "hb-common.h" #include "hb-face.h" #include "hb-draw.h" HB_BEGIN_DECLS typedef struct hb_font_t hb_font_t; /* * hb_font_funcs_t */ /** * hb_font_funcs_t: * * Data type containing a set of virtual methods used for * working on #hb_font_t font objects. * * HarfBuzz provides a lightweight default function for each of * the methods in #hb_font_funcs_t. Client programs can implement * their own replacements for the individual font functions, as * needed, and replace the default by calling the setter for a * method. * **/ typedef struct hb_font_funcs_t hb_font_funcs_t; HB_EXTERN hb_font_funcs_t * hb_font_funcs_create (void); HB_EXTERN hb_font_funcs_t * hb_font_funcs_get_empty (void); HB_EXTERN hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs); HB_EXTERN void hb_font_funcs_destroy (hb_font_funcs_t *ffuncs); HB_EXTERN hb_bool_t hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key); HB_EXTERN void hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs); HB_EXTERN hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); /* font and glyph extents */ /** * hb_font_extents_t: * @ascender: The height of typographic ascenders. * @descender: The depth of typographic descenders. * @line_gap: The suggested line-spacing gap. * * Font-wide extent values, measured in font units. * * Note that typically @ascender is positive and @descender * negative, in coordinate systems that grow up. **/ typedef struct hb_font_extents_t { hb_position_t ascender; hb_position_t descender; hb_position_t line_gap; /*< private >*/ hb_position_t reserved9; hb_position_t reserved8; hb_position_t reserved7; hb_position_t reserved6; hb_position_t reserved5; hb_position_t reserved4; hb_position_t reserved3; hb_position_t reserved2; hb_position_t reserved1; } hb_font_extents_t; /** * hb_glyph_extents_t: * @x_bearing: Distance from the x-origin to the left extremum of the glyph. * @y_bearing: Distance from the top extremum of the glyph to the y-origin. * @width: Distance from the left extremum of the glyph to the right extremum. * @height: Distance from the top extremum of the glyph to the bottom extremum. * * Glyph extent values, measured in font units. * * Note that @height is negative, in coordinate systems that grow up. **/ typedef struct hb_glyph_extents_t { hb_position_t x_bearing; hb_position_t y_bearing; hb_position_t width; hb_position_t height; } hb_glyph_extents_t; /* func types */ typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data, hb_font_extents_t *extents, void *user_data); /** * hb_font_get_font_h_extents_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the extents for a font, in horizontal-direction * text segments. Extents must be returned in an #hb_glyph_extents output * parameter. * **/ typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; /** * hb_font_get_font_v_extents_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the extents for a font, in vertical-direction * text segments. Extents must be returned in an #hb_glyph_extents output * parameter. * **/ typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; /** * hb_font_get_nominal_glyph_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the nominal glyph ID for a specified Unicode code * point. Glyph IDs must be returned in a #hb_codepoint_t output parameter. * **/ typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t *glyph, void *user_data); /** * hb_font_get_variation_glyph_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the glyph ID for a specified Unicode code point * followed by a specified Variation Selector code point. Glyph IDs must be * returned in a #hb_codepoint_t output parameter. * **/ typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); /** * hb_font_get_nominal_glyphs_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the nominal glyph IDs for a sequence of * Unicode code points. Glyph IDs must be returned in a #hb_codepoint_t * output parameter. * **/ typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void *font_data, unsigned int count, const hb_codepoint_t *first_unicode, unsigned int unicode_stride, hb_codepoint_t *first_glyph, unsigned int glyph_stride, void *user_data); /** * hb_font_get_glyph_advance_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the advance for a specified glyph. The * method must return an #hb_position_t. * **/ typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, void *user_data); /** * hb_font_get_glyph_h_advance_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the advance for a specified glyph, in * horizontal-direction text segments. Advances must be returned in * an #hb_position_t output parameter. * **/ typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; /** * hb_font_get_glyph_v_advance_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the advance for a specified glyph, in * vertical-direction text segments. Advances must be returned in * an #hb_position_t output parameter. * **/ typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; /** * hb_font_get_glyph_advances_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the advances for a sequence of glyphs. * **/ typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_data, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride, void *user_data); /** * hb_font_get_glyph_h_advances_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the advances for a sequence of glyphs, in * horizontal-direction text segments. * **/ typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t; /** * hb_font_get_glyph_v_advances_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the advances for a sequence of glyphs, in * vertical-direction text segments. * **/ typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t; /** * hb_font_get_glyph_origin_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the (X,Y) coordinates (in font units) of the * origin for a glyph. Each coordinate must be returned in an #hb_position_t * output parameter. * **/ typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y, void *user_data); /** * hb_font_get_glyph_h_origin_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the (X,Y) coordinates (in font units) of the * origin for a glyph, in horizontal-direction text segments. Each * coordinate must be returned in an #hb_position_t output parameter. * **/ typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; /** * hb_font_get_glyph_v_origin_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the (X,Y) coordinates (in font units) of the * origin for a glyph, in vertical-direction text segments. Each coordinate * must be returned in an #hb_position_t output parameter. * **/ typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, void *user_data); typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; /** * hb_font_get_glyph_extents_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the extents for a specified glyph. Extents must be * returned in an #hb_glyph_extents output parameter. * **/ typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_glyph_extents_t *extents, void *user_data); /** * hb_font_get_glyph_contour_point_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the (X,Y) coordinates (in font units) for a * specified contour point in a glyph. Each coordinate must be returned as * an #hb_position_t output parameter. * **/ typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y, void *user_data); /** * hb_font_get_glyph_name_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the glyph name that corresponds to a * glyph ID. The name should be returned in a string output parameter. * **/ typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, char *name, unsigned int size, void *user_data); /** * hb_font_get_glyph_from_name_func_t: * * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. * * This method should retrieve the glyph ID that corresponds to a glyph-name * string. * **/ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data, const char *name, int len, /* -1 means nul-terminated */ hb_codepoint_t *glyph, void *user_data); /* func setters */ /** * hb_font_funcs_set_font_h_extents_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_font_h_extents_func_t. * * Since: 1.1.2 **/ HB_EXTERN void hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_font_h_extents_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_font_v_extents_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_font_v_extents_func_t. * * Since: 1.1.2 **/ HB_EXTERN void hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_font_v_extents_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_nominal_glyph_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_nominal_glyph_func_t. * * Since: 1.2.3 **/ HB_EXTERN void hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_nominal_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_nominal_glyphs_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_nominal_glyphs_func_t. * * Since: 2.0.0 **/ HB_EXTERN void hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs, hb_font_get_nominal_glyphs_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_variation_glyph_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_variation_glyph_func_t. * * Since: 1.2.3 **/ HB_EXTERN void hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_variation_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_h_advance_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_h_advance_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advance_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_v_advance_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_v_advance_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advance_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_h_advances_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_h_advances_func_t. * * Since: 1.8.6 **/ HB_EXTERN void hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advances_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_v_advances_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_v_advances_func_t. * * Since: 1.8.6 **/ HB_EXTERN void hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advances_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_h_origin_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_h_origin_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_origin_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_v_origin_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_v_origin_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_origin_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_h_kerning_func: * @ffuncs: font functions. * @func: (closure user_data) (destroy destroy) (scope notified): * @user_data: * @destroy: * * * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_kerning_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_extents_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_extents_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_extents_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_contour_point_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_contour_point_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_contour_point_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_name_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_name_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_name_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_font_funcs_set_glyph_from_name_func: * @ffuncs: A font-function structure * @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign * @user_data: Data to pass to @func * @destroy: (optional): The function to call when @user_data is not needed anymore * * Sets the implementation function for #hb_font_get_glyph_from_name_func_t. * * Since: 0.9.2 **/ HB_EXTERN void hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_from_name_func_t func, void *user_data, hb_destroy_func_t destroy); /* func dispatch */ HB_EXTERN hb_bool_t hb_font_get_h_extents (hb_font_t *font, hb_font_extents_t *extents); HB_EXTERN hb_bool_t hb_font_get_v_extents (hb_font_t *font, hb_font_extents_t *extents); HB_EXTERN hb_bool_t hb_font_get_nominal_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t *glyph); HB_EXTERN hb_bool_t hb_font_get_variation_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph); HB_EXTERN unsigned int hb_font_get_nominal_glyphs (hb_font_t *font, unsigned int count, const hb_codepoint_t *first_unicode, unsigned int unicode_stride, hb_codepoint_t *first_glyph, unsigned int glyph_stride); HB_EXTERN hb_position_t hb_font_get_glyph_h_advance (hb_font_t *font, hb_codepoint_t glyph); HB_EXTERN hb_position_t hb_font_get_glyph_v_advance (hb_font_t *font, hb_codepoint_t glyph); HB_EXTERN void hb_font_get_glyph_h_advances (hb_font_t* font, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride); HB_EXTERN void hb_font_get_glyph_v_advances (hb_font_t* font, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride); HB_EXTERN hb_bool_t hb_font_get_glyph_h_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y); HB_EXTERN hb_bool_t hb_font_get_glyph_v_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y); HB_EXTERN hb_position_t hb_font_get_glyph_h_kerning (hb_font_t *font, hb_codepoint_t left_glyph, hb_codepoint_t right_glyph); HB_EXTERN hb_bool_t hb_font_get_glyph_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents); HB_EXTERN hb_bool_t hb_font_get_glyph_contour_point (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y); HB_EXTERN hb_bool_t hb_font_get_glyph_name (hb_font_t *font, hb_codepoint_t glyph, char *name, unsigned int size); HB_EXTERN hb_bool_t hb_font_get_glyph_from_name (hb_font_t *font, const char *name, int len, /* -1 means nul-terminated */ hb_codepoint_t *glyph); /* high-level funcs, with fallback */ /* Calls either hb_font_get_nominal_glyph() if variation_selector is 0, * otherwise calls hb_font_get_variation_glyph(). */ HB_EXTERN hb_bool_t hb_font_get_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph); HB_EXTERN void hb_font_get_extents_for_direction (hb_font_t *font, hb_direction_t direction, hb_font_extents_t *extents); HB_EXTERN void hb_font_get_glyph_advance_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); HB_EXTERN void hb_font_get_glyph_advances_for_direction (hb_font_t* font, hb_direction_t direction, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride); HB_EXTERN void hb_font_get_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); HB_EXTERN void hb_font_add_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); HB_EXTERN void hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); HB_EXTERN void hb_font_get_glyph_kerning_for_direction (hb_font_t *font, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); HB_EXTERN hb_bool_t hb_font_get_glyph_extents_for_origin (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_glyph_extents_t *extents); HB_EXTERN hb_bool_t hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_direction_t direction, hb_position_t *x, hb_position_t *y); /* Generates gidDDD if glyph has no name. */ HB_EXTERN void hb_font_glyph_to_string (hb_font_t *font, hb_codepoint_t glyph, char *s, unsigned int size); /* Parses gidDDD and uniUUUU strings automatically. */ HB_EXTERN hb_bool_t hb_font_glyph_from_string (hb_font_t *font, const char *s, int len, /* -1 means nul-terminated */ hb_codepoint_t *glyph); /* * hb_font_t */ /* Fonts are very light-weight objects */ HB_EXTERN hb_font_t * hb_font_create (hb_face_t *face); HB_EXTERN hb_font_t * hb_font_create_sub_font (hb_font_t *parent); HB_EXTERN hb_font_t * hb_font_get_empty (void); HB_EXTERN hb_font_t * hb_font_reference (hb_font_t *font); HB_EXTERN void hb_font_destroy (hb_font_t *font); HB_EXTERN hb_bool_t hb_font_set_user_data (hb_font_t *font, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_font_get_user_data (hb_font_t *font, hb_user_data_key_t *key); HB_EXTERN void hb_font_make_immutable (hb_font_t *font); HB_EXTERN hb_bool_t hb_font_is_immutable (hb_font_t *font); HB_EXTERN void hb_font_set_parent (hb_font_t *font, hb_font_t *parent); HB_EXTERN hb_font_t * hb_font_get_parent (hb_font_t *font); HB_EXTERN void hb_font_set_face (hb_font_t *font, hb_face_t *face); HB_EXTERN hb_face_t * hb_font_get_face (hb_font_t *font); HB_EXTERN void hb_font_set_funcs (hb_font_t *font, hb_font_funcs_t *klass, void *font_data, hb_destroy_func_t destroy); /* Be *very* careful with this function! */ HB_EXTERN void hb_font_set_funcs_data (hb_font_t *font, void *font_data, hb_destroy_func_t destroy); HB_EXTERN void hb_font_set_scale (hb_font_t *font, int x_scale, int y_scale); HB_EXTERN void hb_font_get_scale (hb_font_t *font, int *x_scale, int *y_scale); /* * A zero value means "no hinting in that direction" */ HB_EXTERN void hb_font_set_ppem (hb_font_t *font, unsigned int x_ppem, unsigned int y_ppem); HB_EXTERN void hb_font_get_ppem (hb_font_t *font, unsigned int *x_ppem, unsigned int *y_ppem); /* * Point size per EM. Used for optical-sizing in CoreText. * A value of zero means "not set". */ HB_EXTERN void hb_font_set_ptem (hb_font_t *font, float ptem); HB_EXTERN float hb_font_get_ptem (hb_font_t *font); HB_EXTERN void hb_font_set_variations (hb_font_t *font, const hb_variation_t *variations, unsigned int variations_length); HB_EXTERN void hb_font_set_var_coords_design (hb_font_t *font, const float *coords, unsigned int coords_length); #ifdef HB_EXPERIMENTAL_API HB_EXTERN const float * hb_font_get_var_coords_design (hb_font_t *font, unsigned int *length); #endif HB_EXTERN void hb_font_set_var_coords_normalized (hb_font_t *font, const int *coords, /* 2.14 normalized */ unsigned int coords_length); HB_EXTERN const int * hb_font_get_var_coords_normalized (hb_font_t *font, unsigned int *length); HB_EXTERN void hb_font_set_var_named_instance (hb_font_t *font, unsigned instance_index); #ifdef HB_EXPERIMENTAL_API HB_EXTERN hb_bool_t hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph, const hb_draw_funcs_t *funcs, void *user_data); #endif HB_END_DECLS #endif /* HB_FONT_H */ PK �9�[�{(=d d hb-ot-metrics.hnu �[��� /* * Copyright © 2018 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_METRICS_H #define HB_OT_METRICS_H #include "hb.h" #include "hb-ot-name.h" HB_BEGIN_DECLS /** * hb_ot_metrics_tag_t: * @HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: horizontal ascender. * @HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: horizontal descender. * @HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: horizontal line gap. * @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: horizontal clipping ascent. * @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: horizontal clipping descent. * @HB_OT_METRICS_TAG_VERTICAL_ASCENDER: vertical ascender. * @HB_OT_METRICS_TAG_VERTICAL_DESCENDER: vertical descender. * @HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: vertical line gap. * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: horizontal caret rise. * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: horizontal caret run. * @HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: horizontal caret offset. * @HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: vertical caret rise. * @HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: vertical caret run. * @HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: vertical caret offset. * @HB_OT_METRICS_TAG_X_HEIGHT: x height. * @HB_OT_METRICS_TAG_CAP_HEIGHT: cap height. * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: subscript em x size. * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: subscript em y size. * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: subscript em x offset. * @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: subscript em y offset. * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: superscript em x size. * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: superscript em y size. * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: superscript em x offset. * @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: superscript em y offset. * @HB_OT_METRICS_TAG_STRIKEOUT_SIZE: strikeout size. * @HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: strikeout offset. * @HB_OT_METRICS_TAG_UNDERLINE_SIZE: underline size. * @HB_OT_METRICS_TAG_UNDERLINE_OFFSET: underline offset. * * From https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags * * Since: 2.6.0 **/ typedef enum { HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER = HB_TAG ('h','a','s','c'), HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER = HB_TAG ('h','d','s','c'), HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP = HB_TAG ('h','l','g','p'), HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT = HB_TAG ('h','c','l','a'), HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT = HB_TAG ('h','c','l','d'), HB_OT_METRICS_TAG_VERTICAL_ASCENDER = HB_TAG ('v','a','s','c'), HB_OT_METRICS_TAG_VERTICAL_DESCENDER = HB_TAG ('v','d','s','c'), HB_OT_METRICS_TAG_VERTICAL_LINE_GAP = HB_TAG ('v','l','g','p'), HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE = HB_TAG ('h','c','r','s'), HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN = HB_TAG ('h','c','r','n'), HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET = HB_TAG ('h','c','o','f'), HB_OT_METRICS_TAG_VERTICAL_CARET_RISE = HB_TAG ('v','c','r','s'), HB_OT_METRICS_TAG_VERTICAL_CARET_RUN = HB_TAG ('v','c','r','n'), HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET = HB_TAG ('v','c','o','f'), HB_OT_METRICS_TAG_X_HEIGHT = HB_TAG ('x','h','g','t'), HB_OT_METRICS_TAG_CAP_HEIGHT = HB_TAG ('c','p','h','t'), HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE = HB_TAG ('s','b','x','s'), HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE = HB_TAG ('s','b','y','s'), HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET = HB_TAG ('s','b','x','o'), HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET = HB_TAG ('s','b','y','o'), HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE = HB_TAG ('s','p','x','s'), HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE = HB_TAG ('s','p','y','s'), HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET = HB_TAG ('s','p','x','o'), HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET = HB_TAG ('s','p','y','o'), HB_OT_METRICS_TAG_STRIKEOUT_SIZE = HB_TAG ('s','t','r','s'), HB_OT_METRICS_TAG_STRIKEOUT_OFFSET = HB_TAG ('s','t','r','o'), HB_OT_METRICS_TAG_UNDERLINE_SIZE = HB_TAG ('u','n','d','s'), HB_OT_METRICS_TAG_UNDERLINE_OFFSET = HB_TAG ('u','n','d','o'), _HB_OT_METRICS_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/ } hb_ot_metrics_tag_t; HB_EXTERN hb_bool_t hb_ot_metrics_get_position (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag, hb_position_t *position /* OUT. May be NULL. */); HB_EXTERN float hb_ot_metrics_get_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag); HB_EXTERN hb_position_t hb_ot_metrics_get_x_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag); HB_EXTERN hb_position_t hb_ot_metrics_get_y_variation (hb_font_t *font, hb_ot_metrics_tag_t metrics_tag); HB_END_DECLS #endif /* HB_OT_METRICS_H */ PK �9�[�"��, , hb-shape.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * Copyright © 2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_SHAPE_H #define HB_SHAPE_H #include "hb-common.h" #include "hb-buffer.h" #include "hb-font.h" HB_BEGIN_DECLS HB_EXTERN void hb_shape (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features); HB_EXTERN hb_bool_t hb_shape_full (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, const char * const *shaper_list); HB_EXTERN const char ** hb_shape_list_shapers (void); HB_END_DECLS #endif /* HB_SHAPE_H */ PK �9�[|#��� � hb-shape-plan.hnu �[��� /* * Copyright © 2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_SHAPE_PLAN_H #define HB_SHAPE_PLAN_H #include "hb-common.h" #include "hb-font.h" HB_BEGIN_DECLS /** * hb_shape_plan_t: * * Data type for holding a shaping plan. * * Shape plans contain information about how HarfBuzz will shape a * particular text segment, based on the segment's properties and the * capabilities in the font face in use. * * Shape plans can be queried about how shaping will perform, given a set * of specific input parameters (script, language, direction, features, * etc.). * **/ typedef struct hb_shape_plan_t hb_shape_plan_t; HB_EXTERN hb_shape_plan_t * hb_shape_plan_create (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const char * const *shaper_list); HB_EXTERN hb_shape_plan_t * hb_shape_plan_create_cached (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const char * const *shaper_list); HB_EXTERN hb_shape_plan_t * hb_shape_plan_create2 (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const int *coords, unsigned int num_coords, const char * const *shaper_list); HB_EXTERN hb_shape_plan_t * hb_shape_plan_create_cached2 (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const int *coords, unsigned int num_coords, const char * const *shaper_list); HB_EXTERN hb_shape_plan_t * hb_shape_plan_get_empty (void); HB_EXTERN hb_shape_plan_t * hb_shape_plan_reference (hb_shape_plan_t *shape_plan); HB_EXTERN void hb_shape_plan_destroy (hb_shape_plan_t *shape_plan); HB_EXTERN hb_bool_t hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key); HB_EXTERN hb_bool_t hb_shape_plan_execute (hb_shape_plan_t *shape_plan, hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features); HB_EXTERN const char * hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan); HB_END_DECLS #endif /* HB_SHAPE_PLAN_H */ PK �9�[ m� � hb-gobject-structs.hnu �[��� /* * Copyright (C) 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_GOBJECT_H_IN #error "Include <hb-gobject.h> instead." #endif #ifndef HB_GOBJECT_STRUCTS_H #define HB_GOBJECT_STRUCTS_H #include "hb.h" #include <glib-object.h> HB_BEGIN_DECLS /* Object types */ /** * hb_gobject_blob_get_type: * * Since: 0.9.2 **/ HB_EXTERN GType hb_gobject_blob_get_type (void); #define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ()) /** * hb_gobject_buffer_get_type: * * Since: 0.9.2 **/ HB_EXTERN GType hb_gobject_buffer_get_type (void); #define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ()) /** * hb_gobject_face_get_type: * * Since: 0.9.2 **/ HB_EXTERN GType hb_gobject_face_get_type (void); #define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ()) /** * hb_gobject_font_get_type: * * Since: 0.9.2 **/ HB_EXTERN GType hb_gobject_font_get_type (void); #define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ()) /** * hb_gobject_font_funcs_get_type: * * Since: 0.9.2 **/ HB_EXTERN GType hb_gobject_font_funcs_get_type (void); #define HB_GOBJECT_TYPE_FONT_FUNCS (hb_gobject_font_funcs_get_type ()) HB_EXTERN GType hb_gobject_set_get_type (void); #define HB_GOBJECT_TYPE_SET (hb_gobject_set_get_type ()) HB_EXTERN GType hb_gobject_map_get_type (void); #define HB_GOBJECT_TYPE_MAP (hb_gobject_map_get_type ()) HB_EXTERN GType hb_gobject_shape_plan_get_type (void); #define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ()) /** * hb_gobject_unicode_funcs_get_type: * * Since: 0.9.2 **/ HB_EXTERN GType hb_gobject_unicode_funcs_get_type (void); #define HB_GOBJECT_TYPE_UNICODE_FUNCS (hb_gobject_unicode_funcs_get_type ()) /* Value types */ HB_EXTERN GType hb_gobject_feature_get_type (void); #define HB_GOBJECT_TYPE_FEATURE (hb_gobject_feature_get_type ()) HB_EXTERN GType hb_gobject_glyph_info_get_type (void); #define HB_GOBJECT_TYPE_GLYPH_INFO (hb_gobject_glyph_info_get_type ()) HB_EXTERN GType hb_gobject_glyph_position_get_type (void); #define HB_GOBJECT_TYPE_GLYPH_POSITION (hb_gobject_glyph_position_get_type ()) HB_EXTERN GType hb_gobject_segment_properties_get_type (void); #define HB_GOBJECT_TYPE_SEGMENT_PROPERTIES (hb_gobject_segment_properties_get_type ()) HB_EXTERN GType hb_gobject_user_data_key_get_type (void); #define HB_GOBJECT_TYPE_USER_DATA_KEY (hb_gobject_user_data_key_get_type ()) HB_EXTERN GType hb_gobject_ot_math_glyph_variant_get_type (void); #define HB_GOBJECT_TYPE_OT_MATH_GLYPH_VARIANT (hb_gobject_ot_math_glyph_variant_get_type ()) HB_EXTERN GType hb_gobject_ot_math_glyph_part_get_type (void); #define HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART (hb_gobject_ot_math_glyph_part_get_type ()) HB_END_DECLS #endif /* HB_GOBJECT_H */ PK �9�[���� � hb.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod */ #ifndef HB_H #define HB_H #define HB_H_IN #include "hb-blob.h" #include "hb-buffer.h" #include "hb-common.h" #include "hb-deprecated.h" #include "hb-draw.h" #include "hb-face.h" #include "hb-font.h" #include "hb-map.h" #include "hb-set.h" #include "hb-shape.h" #include "hb-shape-plan.h" #include "hb-style.h" #include "hb-unicode.h" #include "hb-version.h" HB_BEGIN_DECLS HB_END_DECLS #undef HB_H_IN #endif /* HB_H */ PK �9�[K�1 hb-set.hnu �[��� /* * Copyright © 2012 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_SET_H #define HB_SET_H #include "hb-common.h" HB_BEGIN_DECLS /* * Since: 0.9.21 */ #define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1) /** * hb_set_t: * * Data type for holding a set of integers. #hb_set_t's are * used to gather and contain glyph IDs, Unicode code * points, and various other collections of discrete * values. * **/ typedef struct hb_set_t hb_set_t; HB_EXTERN hb_set_t * hb_set_create (void); HB_EXTERN hb_set_t * hb_set_get_empty (void); HB_EXTERN hb_set_t * hb_set_reference (hb_set_t *set); HB_EXTERN void hb_set_destroy (hb_set_t *set); HB_EXTERN hb_bool_t hb_set_set_user_data (hb_set_t *set, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); HB_EXTERN void * hb_set_get_user_data (hb_set_t *set, hb_user_data_key_t *key); /* Returns false if allocation has failed before */ HB_EXTERN hb_bool_t hb_set_allocation_successful (const hb_set_t *set); HB_EXTERN void hb_set_clear (hb_set_t *set); HB_EXTERN hb_bool_t hb_set_is_empty (const hb_set_t *set); HB_EXTERN hb_bool_t hb_set_has (const hb_set_t *set, hb_codepoint_t codepoint); HB_EXTERN void hb_set_add (hb_set_t *set, hb_codepoint_t codepoint); HB_EXTERN void hb_set_add_range (hb_set_t *set, hb_codepoint_t first, hb_codepoint_t last); HB_EXTERN void hb_set_del (hb_set_t *set, hb_codepoint_t codepoint); HB_EXTERN void hb_set_del_range (hb_set_t *set, hb_codepoint_t first, hb_codepoint_t last); HB_EXTERN hb_bool_t hb_set_is_equal (const hb_set_t *set, const hb_set_t *other); HB_EXTERN hb_bool_t hb_set_is_subset (const hb_set_t *set, const hb_set_t *larger_set); HB_EXTERN void hb_set_set (hb_set_t *set, const hb_set_t *other); HB_EXTERN void hb_set_union (hb_set_t *set, const hb_set_t *other); HB_EXTERN void hb_set_intersect (hb_set_t *set, const hb_set_t *other); HB_EXTERN void hb_set_subtract (hb_set_t *set, const hb_set_t *other); HB_EXTERN void hb_set_symmetric_difference (hb_set_t *set, const hb_set_t *other); HB_EXTERN unsigned int hb_set_get_population (const hb_set_t *set); /* Returns HB_SET_VALUE_INVALID if set empty. */ HB_EXTERN hb_codepoint_t hb_set_get_min (const hb_set_t *set); /* Returns HB_SET_VALUE_INVALID if set empty. */ HB_EXTERN hb_codepoint_t hb_set_get_max (const hb_set_t *set); /* Pass HB_SET_VALUE_INVALID in to get started. */ HB_EXTERN hb_bool_t hb_set_next (const hb_set_t *set, hb_codepoint_t *codepoint); /* Pass HB_SET_VALUE_INVALID in to get started. */ HB_EXTERN hb_bool_t hb_set_previous (const hb_set_t *set, hb_codepoint_t *codepoint); /* Pass HB_SET_VALUE_INVALID for first and last to get started. */ HB_EXTERN hb_bool_t hb_set_next_range (const hb_set_t *set, hb_codepoint_t *first, hb_codepoint_t *last); /* Pass HB_SET_VALUE_INVALID for first and last to get started. */ HB_EXTERN hb_bool_t hb_set_previous_range (const hb_set_t *set, hb_codepoint_t *first, hb_codepoint_t *last); HB_END_DECLS #endif /* HB_SET_H */ PK �9�[���l l hb-ot-color.hnu �[��� /* * Copyright © 2016 Google, Inc. * Copyright © 2018 Khaled Hosny * Copyright © 2018 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Sascha Brawer, Behdad Esfahbod */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_COLOR_H #define HB_OT_COLOR_H #include "hb.h" #include "hb-ot-name.h" HB_BEGIN_DECLS /* * Color palettes. */ HB_EXTERN hb_bool_t hb_ot_color_has_palettes (hb_face_t *face); HB_EXTERN unsigned int hb_ot_color_palette_get_count (hb_face_t *face); HB_EXTERN hb_ot_name_id_t hb_ot_color_palette_get_name_id (hb_face_t *face, unsigned int palette_index); HB_EXTERN hb_ot_name_id_t hb_ot_color_palette_color_get_name_id (hb_face_t *face, unsigned int color_index); /** * hb_ot_color_palette_flags_t: * @HB_OT_COLOR_PALETTE_FLAG_DEFAULT: Default indicating that there is nothing special * to note about a color palette. * @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND: Flag indicating that the color * palette is appropriate to use when displaying the font on a light background such as white. * @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND: Flag indicating that the color * palette is appropriate to use when displaying the font on a dark background such as black. * * Since: 2.1.0 */ typedef enum { /*< flags >*/ HB_OT_COLOR_PALETTE_FLAG_DEFAULT = 0x00000000u, HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND = 0x00000001u, HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND = 0x00000002u } hb_ot_color_palette_flags_t; HB_EXTERN hb_ot_color_palette_flags_t hb_ot_color_palette_get_flags (hb_face_t *face, unsigned int palette_index); HB_EXTERN unsigned int hb_ot_color_palette_get_colors (hb_face_t *face, unsigned int palette_index, unsigned int start_offset, unsigned int *color_count, /* IN/OUT. May be NULL. */ hb_color_t *colors /* OUT. May be NULL. */); /* * Color layers. */ HB_EXTERN hb_bool_t hb_ot_color_has_layers (hb_face_t *face); /** * hb_ot_color_layer_t: * * Pairs of glyph and color index. * * Since: 2.1.0 **/ typedef struct hb_ot_color_layer_t { hb_codepoint_t glyph; unsigned int color_index; } hb_ot_color_layer_t; HB_EXTERN unsigned int hb_ot_color_glyph_get_layers (hb_face_t *face, hb_codepoint_t glyph, unsigned int start_offset, unsigned int *layer_count, /* IN/OUT. May be NULL. */ hb_ot_color_layer_t *layers /* OUT. May be NULL. */); /* * SVG */ HB_EXTERN hb_bool_t hb_ot_color_has_svg (hb_face_t *face); HB_EXTERN hb_blob_t * hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph); /* * PNG: CBDT or sbix */ HB_EXTERN hb_bool_t hb_ot_color_has_png (hb_face_t *face); HB_EXTERN hb_blob_t * hb_ot_color_glyph_reference_png (hb_font_t *font, hb_codepoint_t glyph); HB_END_DECLS #endif /* HB_OT_COLOR_H */ PK �9�[pKEKx x hb-subset.hnu �[��� /* * Copyright © 2018 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Rod Sheeter */ #ifndef HB_SUBSET_H #define HB_SUBSET_H #include "hb.h" HB_BEGIN_DECLS /* * hb_subset_input_t * * Things that change based on the input. Characters to keep, etc. */ typedef struct hb_subset_input_t hb_subset_input_t; HB_EXTERN hb_subset_input_t * hb_subset_input_create_or_fail (void); HB_EXTERN hb_subset_input_t * hb_subset_input_reference (hb_subset_input_t *subset_input); HB_EXTERN void hb_subset_input_destroy (hb_subset_input_t *subset_input); HB_EXTERN hb_set_t * hb_subset_input_unicode_set (hb_subset_input_t *subset_input); HB_EXTERN hb_set_t * hb_subset_input_glyph_set (hb_subset_input_t *subset_input); HB_EXTERN hb_set_t * hb_subset_input_nameid_set (hb_subset_input_t *subset_input); HB_EXTERN hb_set_t * hb_subset_input_namelangid_set (hb_subset_input_t *subset_input); HB_EXTERN hb_set_t * hb_subset_input_drop_tables_set (hb_subset_input_t *subset_input); HB_EXTERN void hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input, hb_bool_t drop_hints); HB_EXTERN hb_bool_t hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input); HB_EXTERN void hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input, hb_bool_t desubroutinize); HB_EXTERN hb_bool_t hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input); HB_EXTERN void hb_subset_input_set_retain_gids (hb_subset_input_t *subset_input, hb_bool_t retain_gids); HB_EXTERN hb_bool_t hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input); HB_EXTERN void hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input, hb_bool_t name_legacy); HB_EXTERN hb_bool_t hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input); /* hb_subset () */ HB_EXTERN hb_face_t * hb_subset (hb_face_t *source, hb_subset_input_t *input); HB_END_DECLS #endif /* HB_SUBSET_H */ PK �9�[&���U U hb-ot-font.hnu �[��� /* * Copyright © 2014 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod, Roozbeh Pournader */ #ifndef HB_OT_H_IN #error "Include <hb-ot.h> instead." #endif #ifndef HB_OT_FONT_H #define HB_OT_FONT_H #include "hb.h" HB_BEGIN_DECLS HB_EXTERN void hb_ot_font_set_funcs (hb_font_t *font); HB_END_DECLS #endif /* HB_OT_FONT_H */ PK �9�[��qe e hb-gobject-enums.hnu �[��� /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ /* * Copyright (C) 2013 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_GOBJECT_H_IN #error "Include <hb-gobject.h> instead." #endif #ifndef HB_GOBJECT_ENUMS_H #define HB_GOBJECT_ENUMS_H #include "hb.h" #include <glib-object.h> HB_BEGIN_DECLS HB_EXTERN GType hb_gobject_aat_layout_feature_type_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_AAT_LAYOUT_FEATURE_TYPE (hb_gobject_aat_layout_feature_type_get_type ()) HB_EXTERN GType hb_gobject_aat_layout_feature_selector_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_AAT_LAYOUT_FEATURE_SELECTOR (hb_gobject_aat_layout_feature_selector_get_type ()) HB_EXTERN GType hb_gobject_memory_mode_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_MEMORY_MODE (hb_gobject_memory_mode_get_type ()) HB_EXTERN GType hb_gobject_glyph_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_GLYPH_FLAGS (hb_gobject_glyph_flags_get_type ()) HB_EXTERN GType hb_gobject_buffer_content_type_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_BUFFER_CONTENT_TYPE (hb_gobject_buffer_content_type_get_type ()) HB_EXTERN GType hb_gobject_buffer_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_BUFFER_FLAGS (hb_gobject_buffer_flags_get_type ()) HB_EXTERN GType hb_gobject_buffer_cluster_level_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_BUFFER_CLUSTER_LEVEL (hb_gobject_buffer_cluster_level_get_type ()) HB_EXTERN GType hb_gobject_buffer_serialize_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FLAGS (hb_gobject_buffer_serialize_flags_get_type ()) HB_EXTERN GType hb_gobject_buffer_serialize_format_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_BUFFER_SERIALIZE_FORMAT (hb_gobject_buffer_serialize_format_get_type ()) HB_EXTERN GType hb_gobject_buffer_diff_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_BUFFER_DIFF_FLAGS (hb_gobject_buffer_diff_flags_get_type ()) HB_EXTERN GType hb_gobject_direction_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_DIRECTION (hb_gobject_direction_get_type ()) HB_EXTERN GType hb_gobject_script_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_SCRIPT (hb_gobject_script_get_type ()) HB_EXTERN GType hb_gobject_ot_color_palette_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS (hb_gobject_ot_color_palette_flags_get_type ()) HB_EXTERN GType hb_gobject_ot_layout_glyph_class_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS (hb_gobject_ot_layout_glyph_class_get_type ()) HB_EXTERN GType hb_gobject_ot_layout_baseline_tag_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_LAYOUT_BASELINE_TAG (hb_gobject_ot_layout_baseline_tag_get_type ()) HB_EXTERN GType hb_gobject_ot_math_constant_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_MATH_CONSTANT (hb_gobject_ot_math_constant_get_type ()) HB_EXTERN GType hb_gobject_ot_math_kern_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_MATH_KERN (hb_gobject_ot_math_kern_get_type ()) HB_EXTERN GType hb_gobject_ot_math_glyph_part_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART_FLAGS (hb_gobject_ot_math_glyph_part_flags_get_type ()) HB_EXTERN GType hb_gobject_ot_meta_tag_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_META_TAG (hb_gobject_ot_meta_tag_get_type ()) HB_EXTERN GType hb_gobject_ot_metrics_tag_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_METRICS_TAG (hb_gobject_ot_metrics_tag_get_type ()) HB_EXTERN GType hb_gobject_ot_var_axis_flags_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_OT_VAR_AXIS_FLAGS (hb_gobject_ot_var_axis_flags_get_type ()) HB_EXTERN GType hb_gobject_unicode_general_category_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_UNICODE_GENERAL_CATEGORY (hb_gobject_unicode_general_category_get_type ()) HB_EXTERN GType hb_gobject_unicode_combining_class_get_type () G_GNUC_CONST; #define HB_GOBJECT_TYPE_UNICODE_COMBINING_CLASS (hb_gobject_unicode_combining_class_get_type ()) HB_END_DECLS #endif /* HB_GOBJECT_ENUMS_H */ /* Generated data ends here */ PK �9�[ �Y Y hb-glib.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * Copyright © 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ #ifndef HB_GLIB_H #define HB_GLIB_H #include "hb.h" #include <glib.h> HB_BEGIN_DECLS HB_EXTERN hb_script_t hb_glib_script_to_script (GUnicodeScript script); HB_EXTERN GUnicodeScript hb_glib_script_from_script (hb_script_t script); HB_EXTERN hb_unicode_funcs_t * hb_glib_get_unicode_funcs (void); #if GLIB_CHECK_VERSION(2,31,10) HB_EXTERN hb_blob_t * hb_glib_blob_create (GBytes *gbytes); #endif HB_END_DECLS #endif /* HB_GLIB_H */ PK �9�[��#&� � hb-aat.hnu �[��� /* * Copyright © 2018 Ebrahim Byagowi * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ #ifndef HB_AAT_H #define HB_AAT_H #define HB_AAT_H_IN #include "hb.h" #include "hb-aat-layout.h" HB_BEGIN_DECLS HB_END_DECLS #undef HB_AAT_H_IN #endif /* HB_AAT_H */ PK �9�[ِ�� � hb-icu.hnu �[��� /* * Copyright © 2009 Red Hat, Inc. * Copyright © 2011 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Red Hat Author(s): Behdad Esfahbod * Google Author(s): Behdad Esfahbod */ #ifndef HB_ICU_H #define HB_ICU_H #include "hb.h" #include <unicode/uscript.h> HB_BEGIN_DECLS HB_EXTERN hb_script_t hb_icu_script_to_script (UScriptCode script); HB_EXTERN UScriptCode hb_icu_script_from_script (hb_script_t script); HB_EXTERN hb_unicode_funcs_t * hb_icu_get_unicode_funcs (void); HB_END_DECLS #endif /* HB_ICU_H */ PK �9�[����� � hb-deprecated.hnu �[��� /* * Copyright © 2013 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Behdad Esfahbod */ #ifndef HB_H_IN #error "Include <hb.h> instead." #endif #ifndef HB_DEPRECATED_H #define HB_DEPRECATED_H #include "hb-common.h" #include "hb-unicode.h" #include "hb-font.h" #include "hb-set.h" /** * SECTION:hb-deprecated * @title: hb-deprecated * @short_description: Deprecated API * @include: hb.h * * These API have been deprecated in favor of newer API, or because they * were deemed unnecessary. **/ HB_BEGIN_DECLS #ifndef HB_DISABLE_DEPRECATED #define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS #define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT #define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); HB_EXTERN HB_DEPRECATED_FOR(hb_font_funcs_set_nominal_glyph_func and hb_font_funcs_set_variation_glyph_func) void hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); HB_EXTERN HB_DEPRECATED void hb_set_invert (hb_set_t *set); /** * hb_unicode_eastasian_width_func_t: * * Deprecated: 2.0.0 */ typedef unsigned int (*hb_unicode_eastasian_width_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); /** * hb_unicode_funcs_set_eastasian_width_func: * @ufuncs: a Unicode function structure * @func: (closure user_data) (destroy destroy) (scope notified): * @user_data: * @destroy: * * * * Since: 0.9.2 * Deprecated: 2.0.0 **/ HB_EXTERN HB_DEPRECATED void hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs, hb_unicode_eastasian_width_func_t func, void *user_data, hb_destroy_func_t destroy); /** * hb_unicode_eastasian_width: * * Since: 0.9.2 * Deprecated: 2.0.0 **/ HB_EXTERN HB_DEPRECATED unsigned int hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); /** * hb_unicode_decompose_compatibility_func_t: * @ufuncs: a Unicode function structure * @u: codepoint to decompose * @decomposed: address of codepoint array (of length %HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into * @user_data: user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func() * * Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed. * The complete length of the decomposition will be returned. * * If @u has no compatibility decomposition, zero should be returned. * * The Unicode standard guarantees that a buffer of length %HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any * compatibility decomposition plus an terminating value of 0. Consequently, @decompose must be allocated by the caller to be at least this length. Implementations * of this function type must ensure that they do not write past the provided array. * * Return value: number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available. * * Deprecated: 2.0.0 */ typedef unsigned int (*hb_unicode_decompose_compatibility_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, hb_codepoint_t *decomposed, void *user_data); /** * HB_UNICODE_MAX_DECOMPOSITION_LEN: * * See Unicode 6.1 for details on the maximum decomposition length. * * Deprecated: 2.0.0 */ #define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */ /** * hb_unicode_funcs_set_decompose_compatibility_func: * @ufuncs: a Unicode function structure * @func: (closure user_data) (destroy destroy) (scope notified): * @user_data: * @destroy: * * * * Since: 0.9.2 * Deprecated: 2.0.0 **/ HB_EXTERN HB_DEPRECATED void hb_unicode_funcs_set_decompose_compatibility_func (hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_compatibility_func_t func, void *user_data, hb_destroy_func_t destroy); HB_EXTERN HB_DEPRECATED unsigned int hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, hb_codepoint_t *decomposed); typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; /** * hb_font_funcs_set_glyph_v_kerning_func: * @ffuncs: font functions. * @func: (closure user_data) (destroy destroy) (scope notified): * @user_data: * @destroy: * * * * Since: 0.9.2 * Deprecated: 2.0.0 **/ HB_EXTERN void hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_kerning_func_t func, void *user_data, hb_destroy_func_t destroy); HB_EXTERN hb_position_t hb_font_get_glyph_v_kerning (hb_font_t *font, hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph); #endif HB_END_DECLS #endif /* HB_DEPRECATED_H */ PK �9�[):�A A hb-map.hnu �[��� PK �9�[#� �% % y hb-version.hnu �[��� PK �9�[9l�W2 2 � hb-ft.hnu �[��� PK �9�[B��MR R C"