HarfBuzz: Update to upstream version 2.7.4
This commit is contained in:
parent
ef4e625918
commit
86006ce476
|
@ -176,7 +176,7 @@ Files extracted from upstream source:
|
|||
## HarfBuzz
|
||||
|
||||
- Upstream: https://github.com/harfbuzz/harfbuzz
|
||||
- Version: 2.7.2
|
||||
- Version: 2.7.4
|
||||
- License: HarfBuzz
|
||||
|
||||
Files extracted from upstream source:
|
||||
|
|
|
@ -1,3 +1,33 @@
|
|||
Overview of changes leading to 2.7.4
|
||||
Sunday, December 27, 2020
|
||||
====================================
|
||||
- Fix missing --enable-introspection configure option from previous release
|
||||
tarball.
|
||||
- Documentation updates.
|
||||
|
||||
Overview of changes leading to 2.7.3
|
||||
Wednesday, December 23, 2020
|
||||
====================================
|
||||
- Update USE shaper to 2020-08-13 specification, and other improvements.
|
||||
- Don’t disable liga feature in myanmar shaper, to match Uniscribe.
|
||||
- Improvements to language and script tags handling.
|
||||
- Update language system tag registry to OpenType 1.8.4
|
||||
- Support for serializing and deserializing Unicode buffers. Serialized buffers
|
||||
are now delimited with `<>` or `[]` based on whether it is a Unicode or
|
||||
glyphs buffer.
|
||||
- Increase buffer work limits to handle fonts with many complex lookups.
|
||||
- Handle more shaping operations in trace output.
|
||||
- Memory access fixes.
|
||||
- More OOM fixes.
|
||||
- Improved documentation.
|
||||
- Build system improvements.
|
||||
- New API:
|
||||
+hb_buffer_has_positions()
|
||||
+hb_buffer_serialize()
|
||||
+hb_buffer_serialize_unicode()
|
||||
+hb_buffer_deserialize_unicode()
|
||||
|
||||
|
||||
Overview of changes leading to 2.7.2
|
||||
Saturday, August 29, 2020
|
||||
====================================
|
||||
|
|
|
@ -79,13 +79,18 @@ AAT::hb_aat_apply_context_t::set_ankr_table (const AAT::ankr *ankr_table_)
|
|||
* @short_description: Apple Advanced Typography Layout
|
||||
* @include: hb-aat.h
|
||||
*
|
||||
* Functions for querying OpenType Layout features in the font face.
|
||||
* Functions for querying AAT Layout features in the font face.
|
||||
*
|
||||
* HarfBuzz supports all of the AAT tables used to implement shaping. Other
|
||||
* AAT tables and their associated features are not supported.
|
||||
**/
|
||||
|
||||
|
||||
#if !defined(HB_NO_AAT) || defined(HAVE_CORETEXT)
|
||||
|
||||
/* Table data courtesy of Apple. Converted from mnemonics to integers
|
||||
/* Mapping from OpenType feature tags to AAT feature names and selectors.
|
||||
*
|
||||
* Table data courtesy of Apple. Converted from mnemonics to integers
|
||||
* when moving to this file. */
|
||||
static const hb_aat_feature_mapping_t feature_mappings[] =
|
||||
{
|
||||
|
@ -167,6 +172,17 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
|
|||
{HB_TAG ('z','e','r','o'), HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON, HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF},
|
||||
};
|
||||
|
||||
/**
|
||||
* hb_aat_layout_find_feature_mapping:
|
||||
* @tag: The requested #hb_tag_t feature tag
|
||||
*
|
||||
* Fetches the AAT feature-and-selector combination that corresponds
|
||||
* to a given OpenType feature tag.
|
||||
*
|
||||
* Return value: the AAT features and selectors corresponding to the
|
||||
* OpenType feature tag queried
|
||||
*
|
||||
**/
|
||||
const hb_aat_feature_mapping_t *
|
||||
hb_aat_layout_find_feature_mapping (hb_tag_t tag)
|
||||
{
|
||||
|
@ -202,11 +218,17 @@ hb_aat_layout_compile_map (const hb_aat_map_builder_t *mapper,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* hb_aat_layout_has_substitution:
|
||||
* @face:
|
||||
* @face: #hb_face_t to work upon
|
||||
*
|
||||
* Tests whether the specified face includes any substitutions in the
|
||||
* `morx` or `mort` tables.
|
||||
*
|
||||
* <note>Note: does not examine the `GSUB` table.</note>
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
*
|
||||
* Returns:
|
||||
* Since: 2.3.0
|
||||
*/
|
||||
hb_bool_t
|
||||
|
@ -263,11 +285,17 @@ hb_aat_layout_remove_deleted_glyphs (hb_buffer_t *buffer)
|
|||
hb_ot_layout_delete_glyphs_inplace (buffer, is_deleted_glyph);
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* hb_aat_layout_has_positioning:
|
||||
* @face:
|
||||
* @face: #hb_face_t to work upon
|
||||
*
|
||||
* Tests whether the specified face includes any positioning information
|
||||
* in the `kerx` table.
|
||||
*
|
||||
* <note>Note: does not examine the `GPOS` table.</note>
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
*
|
||||
* Returns:
|
||||
* Since: 2.3.0
|
||||
*/
|
||||
hb_bool_t
|
||||
|
@ -290,11 +318,15 @@ hb_aat_layout_position (const hb_ot_shape_plan_t *plan,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* hb_aat_layout_has_tracking:
|
||||
* @face:
|
||||
* @face:: #hb_face_t to work upon
|
||||
*
|
||||
* Tests whether the specified face includes any tracking information
|
||||
* in the `trak` table.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
*
|
||||
* Returns:
|
||||
* Since: 2.3.0
|
||||
*/
|
||||
hb_bool_t
|
||||
|
@ -316,10 +348,13 @@ hb_aat_layout_track (const hb_ot_shape_plan_t *plan,
|
|||
|
||||
/**
|
||||
* hb_aat_layout_get_feature_types:
|
||||
* @face: a face object
|
||||
* @start_offset: iteration's start offset
|
||||
* @feature_count:(inout) (allow-none): buffer size as input, filled size as output
|
||||
* @features: (out caller-allocates) (array length=feature_count): features buffer
|
||||
* @face: #hb_face_t to work upon
|
||||
* @start_offset: offset of the first feature type to retrieve
|
||||
* @feature_count: (inout) (allow-none): Input = the maximum number of feature types to return;
|
||||
* Output = the actual number of feature types returned (may be zero)
|
||||
* @features: (out caller-allocates) (array length=feature_count): Array of feature types found
|
||||
*
|
||||
* Fetches a list of the AAT feature types included in the specified face.
|
||||
*
|
||||
* Return value: Number of all available feature types.
|
||||
*
|
||||
|
@ -336,10 +371,12 @@ hb_aat_layout_get_feature_types (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_aat_layout_feature_type_get_name_id:
|
||||
* @face: a face object
|
||||
* @feature_type: feature id
|
||||
* @face: #hb_face_t to work upon
|
||||
* @feature_type: The #hb_aat_layout_feature_type_t of the requested feature type
|
||||
*
|
||||
* Return value: Name ID index
|
||||
* Fetches the name ID of the specified feature type in the face's `name` table.
|
||||
*
|
||||
* Return value: Name ID of the requested feature type
|
||||
*
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
|
@ -352,18 +389,22 @@ hb_aat_layout_feature_type_get_name_id (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_aat_layout_feature_type_get_selectors:
|
||||
* @face: a face object
|
||||
* @feature_type: feature id
|
||||
* @start_offset: iteration's start offset
|
||||
* @selector_count: (inout) (allow-none): buffer size as input, filled size as output
|
||||
* @selectors: (out caller-allocates) (array length=selector_count): settings buffer
|
||||
* @default_index: (out) (allow-none): index of default selector if any
|
||||
* @face: #hb_face_t to work upon
|
||||
* @feature_type: The #hb_aat_layout_feature_type_t of the requested feature type
|
||||
* @start_offset: offset of the first feature type to retrieve
|
||||
* @selector_count: (inout) (allow-none): Input = the maximum number of selectors to return;
|
||||
* Output = the actual number of selectors returned (may be zero)
|
||||
* @selectors: (out caller-allocates) (array length=selector_count): A buffer pointer.
|
||||
* The selectors available for the feature type queries.
|
||||
* @default_index: (out) (allow-none): The index of the feature's default selector, if any
|
||||
*
|
||||
* Fetches a list of the selectors available for the specified feature in the given face.
|
||||
*
|
||||
* If upon return, @default_index is set to #HB_AAT_LAYOUT_NO_SELECTOR_INDEX, then
|
||||
* the feature type is non-exclusive. Otherwise, @default_index is the index of
|
||||
* the selector that is selected by default.
|
||||
*
|
||||
* Return value: Number of all available feature selectors.
|
||||
* Return value: Number of all available feature selectors
|
||||
*
|
||||
* Since: 2.2.0
|
||||
*/
|
||||
|
|
|
@ -37,7 +37,48 @@ 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
|
||||
*/
|
||||
|
@ -85,12 +126,265 @@ typedef enum
|
|||
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
|
||||
*/
|
||||
|
@ -424,6 +718,7 @@ typedef enum
|
|||
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;
|
||||
|
||||
|
@ -437,8 +732,7 @@ 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
|
||||
{
|
||||
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;
|
||||
|
@ -446,6 +740,13 @@ typedef struct hb_aat_layout_feature_selector_info_t
|
|||
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
|
||||
|
|
|
@ -350,14 +350,14 @@ struct
|
|||
{
|
||||
template <typename T, typename T2> constexpr auto
|
||||
operator () (T&& a, T2&& b) const HB_AUTO_RETURN
|
||||
(hb_forward<T> (a) <= hb_forward<T2> (b) ? hb_forward<T> (a) : hb_forward<T2> (b))
|
||||
(a <= b ? hb_forward<T> (a) : hb_forward<T2> (b))
|
||||
}
|
||||
HB_FUNCOBJ (hb_min);
|
||||
struct
|
||||
{
|
||||
template <typename T, typename T2> constexpr auto
|
||||
operator () (T&& a, T2&& b) const HB_AUTO_RETURN
|
||||
(hb_forward<T> (a) >= hb_forward<T2> (b) ? hb_forward<T> (a) : hb_forward<T2> (b))
|
||||
(a >= b ? hb_forward<T> (a) : hb_forward<T2> (b))
|
||||
}
|
||||
HB_FUNCOBJ (hb_max);
|
||||
struct
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
* @length: Length of @data in bytes.
|
||||
* @mode: Memory mode for @data.
|
||||
* @user_data: Data parameter to pass to @destroy.
|
||||
* @destroy: Callback to call when @data is not needed anymore.
|
||||
* @destroy: (optional): Callback to call when @data is not needed anymore.
|
||||
*
|
||||
* Creates a new "blob" object wrapping @data. The @mode parameter is used
|
||||
* to negotiate ownership and lifecycle of @data.
|
||||
|
@ -156,7 +156,7 @@ hb_blob_create_sub_blob (hb_blob_t *parent,
|
|||
*
|
||||
* Makes a writable copy of @blob.
|
||||
*
|
||||
* Return value: New blob, or nullptr if allocation failed.
|
||||
* Return value: The new blob, or nullptr if allocation failed
|
||||
*
|
||||
* Since: 1.8.0
|
||||
**/
|
||||
|
@ -182,7 +182,7 @@ hb_blob_copy_writable_or_fail (hb_blob_t *blob)
|
|||
*
|
||||
* See TODO:link object types for more information.
|
||||
*
|
||||
* Return value: (transfer full): the empty blob.
|
||||
* Return value: (transfer full): The empty blob.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -234,13 +234,15 @@ hb_blob_destroy (hb_blob_t *blob)
|
|||
|
||||
/**
|
||||
* hb_blob_set_user_data: (skip)
|
||||
* @blob: a blob.
|
||||
* @key: key for data to set.
|
||||
* @data: data to set.
|
||||
* @destroy: callback to call when @data is not needed anymore.
|
||||
* @replace: whether to replace an existing data with the same key.
|
||||
* @blob: An #hb_blob_t
|
||||
* @key: The user-data key to set
|
||||
* @data: A pointer to the user data to set
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Return value:
|
||||
* Attaches a user-data key/data pair to the specified blob.
|
||||
*
|
||||
* Return value: %true if success, %false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -256,12 +258,13 @@ hb_blob_set_user_data (hb_blob_t *blob,
|
|||
|
||||
/**
|
||||
* hb_blob_get_user_data: (skip)
|
||||
* @blob: a blob.
|
||||
* @key: key for data to get.
|
||||
* @blob: a blob
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Fetches the user data associated with the specified key,
|
||||
* attached to the specified font-functions structure.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): A pointer to the user data
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -275,9 +278,9 @@ hb_blob_get_user_data (hb_blob_t *blob,
|
|||
|
||||
/**
|
||||
* hb_blob_make_immutable:
|
||||
* @blob: a blob.
|
||||
*
|
||||
* @blob: a blob
|
||||
*
|
||||
* Makes a blob immutable.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -294,9 +297,9 @@ hb_blob_make_immutable (hb_blob_t *blob)
|
|||
* hb_blob_is_immutable:
|
||||
* @blob: a blob.
|
||||
*
|
||||
* Tests whether a blob is immutable.
|
||||
*
|
||||
*
|
||||
* Return value: TODO
|
||||
* Return value: %true if @blob is immutable, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -311,9 +314,9 @@ hb_blob_is_immutable (hb_blob_t *blob)
|
|||
* hb_blob_get_length:
|
||||
* @blob: a blob.
|
||||
*
|
||||
* Fetches the length of a blob's data.
|
||||
*
|
||||
*
|
||||
* Return value: the length of blob data in bytes.
|
||||
* Return value: the length of @blob data in bytes.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -326,11 +329,11 @@ hb_blob_get_length (hb_blob_t *blob)
|
|||
/**
|
||||
* hb_blob_get_data:
|
||||
* @blob: a blob.
|
||||
* @length: (out):
|
||||
* @length: (out): The length in bytes of the data retrieved
|
||||
*
|
||||
* Fetches the data from a blob.
|
||||
*
|
||||
*
|
||||
* Returns: (transfer none) (array length=length):
|
||||
* Returns: (transfer none) (array length=length): the byte data of @blob.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -558,9 +561,12 @@ _open_resource_fork (const char *file_name, hb_mapped_file_t *file)
|
|||
|
||||
/**
|
||||
* hb_blob_create_from_file:
|
||||
* @file_name: font filename.
|
||||
* @file_name: A font filename
|
||||
*
|
||||
* Returns: A hb_blob_t pointer with the content of the file
|
||||
* Creates a new blob containing the data from the
|
||||
* specified binary font file.
|
||||
*
|
||||
* Returns: An #hb_blob_t pointer with the content of the file
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
|
|
@ -36,25 +36,34 @@
|
|||
HB_BEGIN_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* Note re various memory-modes:
|
||||
/**
|
||||
* 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, MODE_DUPLICATE should be used
|
||||
* any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used
|
||||
* such that HarfBuzz makes a copy immediately,
|
||||
*
|
||||
* - Use MODE_READONLY otherwise, unless you really really
|
||||
* - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really
|
||||
* really know what you are doing,
|
||||
*
|
||||
* - MODE_WRITABLE is appropriate if you really made a
|
||||
* - @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 ok to use
|
||||
* READONLY_MAY_MAKE_WRITABLE, however, using that mode
|
||||
* correctly is very tricky. Use MODE_READONLY instead.
|
||||
*/
|
||||
* - 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,
|
||||
|
@ -62,6 +71,14 @@ typedef enum {
|
|||
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 *
|
||||
|
|
|
@ -90,6 +90,7 @@ struct hb_blob_ptr_t
|
|||
unsigned int get_length () const { return b.get ()->length; }
|
||||
void destroy () { hb_blob_destroy (b.get ()); b = nullptr; }
|
||||
|
||||
private:
|
||||
hb_nonnull_ptr_t<hb_blob_t> b;
|
||||
};
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -91,26 +91,26 @@ hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format)
|
|||
{
|
||||
switch ((unsigned) format)
|
||||
{
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0];
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1];
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0];
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1];
|
||||
default:
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return nullptr;
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
_hb_buffer_serialize_glyphs_json (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_flags_t flags)
|
||||
unsigned int start,
|
||||
unsigned int end,
|
||||
char *buf,
|
||||
unsigned int buf_size,
|
||||
unsigned int *buf_consumed,
|
||||
hb_font_t *font,
|
||||
hb_buffer_serialize_flags_t flags)
|
||||
{
|
||||
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr);
|
||||
hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ?
|
||||
nullptr : hb_buffer_get_glyph_positions (buffer, nullptr);
|
||||
nullptr : hb_buffer_get_glyph_positions (buffer, nullptr);
|
||||
|
||||
*buf_consumed = 0;
|
||||
hb_position_t x = 0, y = 0;
|
||||
|
@ -125,6 +125,8 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
|||
|
||||
if (i)
|
||||
*p++ = ',';
|
||||
else
|
||||
*p++ = '[';
|
||||
|
||||
*p++ = '{';
|
||||
|
||||
|
@ -134,8 +136,9 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
|||
char g[128];
|
||||
hb_font_glyph_to_string (font, info[i].codepoint, g, sizeof (g));
|
||||
*p++ = '"';
|
||||
for (char *q = g; *q; q++) {
|
||||
if (*q == '"')
|
||||
for (char *q = g; *q; q++)
|
||||
{
|
||||
if (unlikely (*q == '"' || *q == '\\'))
|
||||
*p++ = '\\';
|
||||
*p++ = *q;
|
||||
}
|
||||
|
@ -151,16 +154,16 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
|||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS))
|
||||
{
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"dx\":%d,\"dy\":%d",
|
||||
x+pos[i].x_offset, y+pos[i].y_offset));
|
||||
x+pos[i].x_offset, y+pos[i].y_offset));
|
||||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES))
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"ax\":%d,\"ay\":%d",
|
||||
pos[i].x_advance, pos[i].y_advance));
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"ax\":%d,\"ay\":%d",
|
||||
pos[i].x_advance, pos[i].y_advance));
|
||||
}
|
||||
|
||||
if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS)
|
||||
{
|
||||
if (info[i].mask & HB_GLYPH_FLAG_DEFINED)
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"fl\":%u", info[i].mask & HB_GLYPH_FLAG_DEFINED));
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"fl\":%u", info[i].mask & HB_GLYPH_FLAG_DEFINED));
|
||||
}
|
||||
|
||||
if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS)
|
||||
|
@ -168,12 +171,14 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
|||
hb_glyph_extents_t extents;
|
||||
hb_font_get_glyph_extents(font, info[i].codepoint, &extents);
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"xb\":%d,\"yb\":%d",
|
||||
extents.x_bearing, extents.y_bearing));
|
||||
extents.x_bearing, extents.y_bearing));
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"w\":%d,\"h\":%d",
|
||||
extents.width, extents.height));
|
||||
extents.width, extents.height));
|
||||
}
|
||||
|
||||
*p++ = '}';
|
||||
if (i == end-1)
|
||||
*p++ = ']';
|
||||
|
||||
unsigned int l = p - b;
|
||||
if (buf_size > l)
|
||||
|
@ -196,19 +201,72 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
|||
return end - start;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
_hb_buffer_serialize_unicode_json (hb_buffer_t *buffer,
|
||||
unsigned int start,
|
||||
unsigned int end,
|
||||
char *buf,
|
||||
unsigned int buf_size,
|
||||
unsigned int *buf_consumed,
|
||||
hb_buffer_serialize_flags_t flags)
|
||||
{
|
||||
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr);
|
||||
|
||||
*buf_consumed = 0;
|
||||
for (unsigned int i = start; i < end; i++)
|
||||
{
|
||||
char b[1024];
|
||||
char *p = b;
|
||||
|
||||
if (i)
|
||||
*p++ = ',';
|
||||
else
|
||||
*p++ = '[';
|
||||
|
||||
*p++ = '{';
|
||||
|
||||
APPEND ("\"u\":");
|
||||
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint));
|
||||
|
||||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) {
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster));
|
||||
}
|
||||
|
||||
*p++ = '}';
|
||||
|
||||
if (i == end-1)
|
||||
*p++ = ']';
|
||||
|
||||
unsigned int l = p - b;
|
||||
if (buf_size > l)
|
||||
{
|
||||
memcpy (buf, b, l);
|
||||
buf += l;
|
||||
buf_size -= l;
|
||||
*buf_consumed += l;
|
||||
*buf = '\0';
|
||||
} else
|
||||
return i - start;
|
||||
|
||||
}
|
||||
|
||||
return end - start;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
_hb_buffer_serialize_glyphs_text (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_flags_t flags)
|
||||
unsigned int start,
|
||||
unsigned int end,
|
||||
char *buf,
|
||||
unsigned int buf_size,
|
||||
unsigned int *buf_consumed,
|
||||
hb_font_t *font,
|
||||
hb_buffer_serialize_flags_t flags)
|
||||
{
|
||||
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr);
|
||||
hb_glyph_position_t *pos = (flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS) ?
|
||||
nullptr : hb_buffer_get_glyph_positions (buffer, nullptr);
|
||||
nullptr : hb_buffer_get_glyph_positions (buffer, nullptr);
|
||||
|
||||
*buf_consumed = 0;
|
||||
hb_position_t x = 0, y = 0;
|
||||
|
@ -221,9 +279,12 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
|
||||
if (i)
|
||||
*p++ = '|';
|
||||
else
|
||||
*p++ = '[';
|
||||
|
||||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES))
|
||||
{
|
||||
/* TODO Escape delimiters we use. */
|
||||
hb_font_glyph_to_string (font, info[i].codepoint, p, 128);
|
||||
p += strlen (p);
|
||||
}
|
||||
|
@ -237,21 +298,21 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS))
|
||||
{
|
||||
if (x+pos[i].x_offset || y+pos[i].y_offset)
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", x+pos[i].x_offset, y+pos[i].y_offset));
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", x+pos[i].x_offset, y+pos[i].y_offset));
|
||||
|
||||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES))
|
||||
{
|
||||
*p++ = '+';
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advance));
|
||||
if (pos[i].y_advance)
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
|
||||
*p++ = '+';
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advance));
|
||||
if (pos[i].y_advance)
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS)
|
||||
{
|
||||
if (info[i].mask & HB_GLYPH_FLAG_DEFINED)
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "#%X", info[i].mask &HB_GLYPH_FLAG_DEFINED));
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "#%X", info[i].mask &HB_GLYPH_FLAG_DEFINED));
|
||||
}
|
||||
|
||||
if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS)
|
||||
|
@ -261,6 +322,10 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "<%d,%d,%d,%d>", extents.x_bearing, extents.y_bearing, extents.width, extents.height));
|
||||
}
|
||||
|
||||
if (i == end-1) {
|
||||
*p++ = ']';
|
||||
}
|
||||
|
||||
unsigned int l = p - b;
|
||||
if (buf_size > l)
|
||||
{
|
||||
|
@ -282,6 +347,51 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
return end - start;
|
||||
}
|
||||
|
||||
|
||||
static unsigned int
|
||||
_hb_buffer_serialize_unicode_text (hb_buffer_t *buffer,
|
||||
unsigned int start,
|
||||
unsigned int end,
|
||||
char *buf,
|
||||
unsigned int buf_size,
|
||||
unsigned int *buf_consumed,
|
||||
hb_buffer_serialize_flags_t flags)
|
||||
{
|
||||
hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, nullptr);
|
||||
*buf_consumed = 0;
|
||||
for (unsigned int i = start; i < end; i++)
|
||||
{
|
||||
char b[1024];
|
||||
char *p = b;
|
||||
|
||||
if (i)
|
||||
*p++ = '|';
|
||||
else
|
||||
*p++ = '<';
|
||||
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "U+%04X", info[i].codepoint));
|
||||
|
||||
if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) {
|
||||
p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster));
|
||||
}
|
||||
|
||||
if (i == end-1)
|
||||
*p++ = '>';
|
||||
|
||||
unsigned int l = p - b;
|
||||
if (buf_size > l)
|
||||
{
|
||||
memcpy (buf, b, l);
|
||||
buf += l;
|
||||
buf_size -= l;
|
||||
*buf_consumed += l;
|
||||
*buf = '\0';
|
||||
} else
|
||||
return i - start;
|
||||
}
|
||||
return end - start;
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_buffer_serialize_glyphs:
|
||||
* @buffer: an #hb_buffer_t buffer.
|
||||
|
@ -308,6 +418,7 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
* ```
|
||||
* [uni0651=0@518,0+0|uni0628=0+1897]
|
||||
* ```
|
||||
*
|
||||
* - The serialized glyphs are delimited with `[` and `]`.
|
||||
* - Glyphs are separated with `|`
|
||||
* - Each glyph starts with glyph name, or glyph index if
|
||||
|
@ -316,12 +427,28 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
* - If #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set, the #hb_glyph_position_t in the format:
|
||||
* - If both #hb_glyph_position_t.x_offset and #hb_glyph_position_t.y_offset are not 0, `@x_offset,y_offset`. Then,
|
||||
* - `+x_advance`, then `,y_advance` if #hb_glyph_position_t.y_advance is not 0. Then,
|
||||
* - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the
|
||||
* #hb_glyph_extents_t in the format
|
||||
* `<x_bearing,y_bearing,width,height>`
|
||||
* - If #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set, the #hb_glyph_extents_t in the format `<x_bearing,y_bearing,width,height>`
|
||||
*
|
||||
* ## json
|
||||
* TODO.
|
||||
* A machine-readable, structured format.
|
||||
* The serialized glyphs will look something like:
|
||||
*
|
||||
* ```
|
||||
* [{"g":"uni0651","cl":0,"dx":518,"dy":0,"ax":0,"ay":0},
|
||||
* {"g":"uni0628","cl":0,"dx":0,"dy":0,"ax":1897,"ay":0}]
|
||||
* ```
|
||||
*
|
||||
* Each glyph is a JSON object, with the following properties:
|
||||
* - `g`: the glyph name or glyph index if
|
||||
* #HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES flag is set.
|
||||
* - `cl`: #hb_glyph_info_t.cluster if
|
||||
* #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set.
|
||||
* - `dx`,`dy`,`ax`,`ay`: #hb_glyph_position_t.x_offset, #hb_glyph_position_t.y_offset,
|
||||
* #hb_glyph_position_t.x_advance and #hb_glyph_position_t.y_advance
|
||||
* respectively, if #HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS is not set.
|
||||
* - `xb`,`yb`,`w`,`h`: #hb_glyph_extents_t.x_bearing, #hb_glyph_extents_t.y_bearing,
|
||||
* #hb_glyph_extents_t.width and #hb_glyph_extents_t.height respectively if
|
||||
* #HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS is set.
|
||||
*
|
||||
* Return value:
|
||||
* The number of serialized items.
|
||||
|
@ -330,16 +457,17 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
|||
**/
|
||||
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)
|
||||
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)
|
||||
{
|
||||
assert (start <= end && end <= buffer->len);
|
||||
end = hb_clamp (end, start, buffer->len);
|
||||
start = hb_min (start, end);
|
||||
|
||||
unsigned int sconsumed;
|
||||
if (!buf_consumed)
|
||||
|
@ -348,8 +476,7 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
|
|||
if (buf_size)
|
||||
*buf = '\0';
|
||||
|
||||
assert ((!buffer->len && (buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID)) ||
|
||||
(buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS));
|
||||
buffer->assert_glyphs ();
|
||||
|
||||
if (!buffer->have_positions)
|
||||
flags |= HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS;
|
||||
|
@ -364,13 +491,13 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
|
|||
{
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_TEXT:
|
||||
return _hb_buffer_serialize_glyphs_text (buffer, start, end,
|
||||
buf, buf_size, buf_consumed,
|
||||
font, flags);
|
||||
buf, buf_size, buf_consumed,
|
||||
font, flags);
|
||||
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_JSON:
|
||||
return _hb_buffer_serialize_glyphs_json (buffer, start, end,
|
||||
buf, buf_size, buf_consumed,
|
||||
font, flags);
|
||||
buf, buf_size, buf_consumed,
|
||||
font, flags);
|
||||
|
||||
default:
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_INVALID:
|
||||
|
@ -379,6 +506,182 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_buffer_serialize_unicode:
|
||||
* @buffer: an #hb_buffer_t buffer.
|
||||
* @start: the first item in @buffer to serialize.
|
||||
* @end: the last item in @buffer to serialize.
|
||||
* @buf: (out) (array length=buf_size) (element-type uint8_t): output string to
|
||||
* write serialized buffer into.
|
||||
* @buf_size: the size of @buf.
|
||||
* @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf.
|
||||
* @format: the #hb_buffer_serialize_format_t to use for formatting the output.
|
||||
*
|
||||
* Serializes @buffer into a textual representation of its content,
|
||||
* when the buffer contains Unicode codepoints (i.e., before shaping). This is
|
||||
* useful for showing the contents of the buffer, for example during debugging.
|
||||
* There are currently two supported serialization formats:
|
||||
*
|
||||
* ## text
|
||||
* A human-readable, plain text format.
|
||||
* The serialized codepoints will look something like:
|
||||
*
|
||||
* ```
|
||||
* <U+0651=0|U+0628=1>
|
||||
* ```
|
||||
*
|
||||
* - Glyphs are separated with `|`
|
||||
* - Unicode codepoints are expressed as zero-padded four (or more)
|
||||
* digit hexadecimal numbers preceded by `U+`
|
||||
* - If #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set, the cluster
|
||||
* will be indicated with a `=` then #hb_glyph_info_t.cluster.
|
||||
*
|
||||
* ## json
|
||||
* A machine-readable, structured format.
|
||||
* The serialized codepoints will be a list of objects with the following
|
||||
* properties:
|
||||
* - `u`: the Unicode codepoint as a decimal integer
|
||||
* - `cl`: #hb_glyph_info_t.cluster if
|
||||
* #HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS is not set.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* ```
|
||||
* [{u:1617,cl:0},{u:1576,cl:1}]
|
||||
* ```
|
||||
*
|
||||
* Return value:
|
||||
* The number of serialized items.
|
||||
*
|
||||
* Since: 2.7.3
|
||||
**/
|
||||
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)
|
||||
{
|
||||
end = hb_clamp (end, start, buffer->len);
|
||||
start = hb_min (start, end);
|
||||
|
||||
unsigned int sconsumed;
|
||||
if (!buf_consumed)
|
||||
buf_consumed = &sconsumed;
|
||||
*buf_consumed = 0;
|
||||
if (buf_size)
|
||||
*buf = '\0';
|
||||
|
||||
buffer->assert_unicode ();
|
||||
|
||||
if (unlikely (start == end))
|
||||
return 0;
|
||||
|
||||
switch (format)
|
||||
{
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_TEXT:
|
||||
return _hb_buffer_serialize_unicode_text (buffer, start, end,
|
||||
buf, buf_size, buf_consumed, flags);
|
||||
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_JSON:
|
||||
return _hb_buffer_serialize_unicode_json (buffer, start, end,
|
||||
buf, buf_size, buf_consumed, flags);
|
||||
|
||||
default:
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_INVALID:
|
||||
return 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
_hb_buffer_serialize_invalid (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)
|
||||
{
|
||||
assert (!buffer->len);
|
||||
|
||||
unsigned int sconsumed;
|
||||
if (!buf_consumed)
|
||||
buf_consumed = &sconsumed;
|
||||
if (buf_size < 3)
|
||||
return 0;
|
||||
if (format == HB_BUFFER_SERIALIZE_FORMAT_JSON) {
|
||||
*buf++ = '[';
|
||||
*buf++ = ']';
|
||||
*buf = '\0';
|
||||
} else if (format == HB_BUFFER_SERIALIZE_FORMAT_TEXT) {
|
||||
*buf++ = '!';
|
||||
*buf++ = '!';
|
||||
*buf = '\0';
|
||||
}
|
||||
*buf_consumed = 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_buffer_serialize:
|
||||
* @buffer: an #hb_buffer_t buffer.
|
||||
* @start: the first item in @buffer to serialize.
|
||||
* @end: the last item in @buffer to serialize.
|
||||
* @buf: (out) (array length=buf_size) (element-type uint8_t): output string to
|
||||
* write serialized buffer into.
|
||||
* @buf_size: the size of @buf.
|
||||
* @buf_consumed: (out) (allow-none): if not %NULL, will be set to the number of byes written into @buf.
|
||||
* @font: (allow-none): the #hb_font_t used to shape this buffer, needed to
|
||||
* read glyph names and extents. If %NULL, and empty font will be used.
|
||||
* @format: the #hb_buffer_serialize_format_t to use for formatting the output.
|
||||
* @flags: the #hb_buffer_serialize_flags_t that control what glyph properties
|
||||
* to serialize.
|
||||
*
|
||||
* Serializes @buffer into a textual representation of its content, whether
|
||||
* Unicode codepoints or glyph identifiers and positioning information. This is
|
||||
* useful for showing the contents of the buffer, for example during debugging.
|
||||
* See the documentation of hb_buffer_serialize_unicode() and
|
||||
* hb_buffer_serialize_glyphs() for a description of the output format.
|
||||
*
|
||||
* Return value:
|
||||
* The number of serialized items.
|
||||
*
|
||||
* Since: 2.7.3
|
||||
**/
|
||||
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)
|
||||
{
|
||||
switch (buffer->content_type)
|
||||
{
|
||||
|
||||
case HB_BUFFER_CONTENT_TYPE_GLYPHS:
|
||||
return hb_buffer_serialize_glyphs (buffer, start, end, buf, buf_size,
|
||||
buf_consumed, font, format, flags);
|
||||
|
||||
case HB_BUFFER_CONTENT_TYPE_UNICODE:
|
||||
return hb_buffer_serialize_unicode (buffer, start, end, buf, buf_size,
|
||||
buf_consumed, format, flags);
|
||||
|
||||
case HB_BUFFER_CONTENT_TYPE_INVALID:
|
||||
default:
|
||||
return _hb_buffer_serialize_invalid (buffer, start, end, buf, buf_size,
|
||||
buf_consumed, format, flags);
|
||||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
parse_int (const char *pp, const char *end, int32_t *pv)
|
||||
{
|
||||
|
@ -403,6 +706,18 @@ parse_uint (const char *pp, const char *end, uint32_t *pv)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
parse_hex (const char *pp, const char *end, uint32_t *pv)
|
||||
{
|
||||
unsigned int v;
|
||||
const char *p = pp;
|
||||
if (unlikely (!hb_parse_uint (&p, end, &v, true/* whole buffer */, 16)))
|
||||
return false;
|
||||
|
||||
*pv = v;
|
||||
return true;
|
||||
}
|
||||
|
||||
#include "hb-buffer-deserialize-json.hh"
|
||||
#include "hb-buffer-deserialize-text.hh"
|
||||
|
||||
|
@ -423,19 +738,25 @@ parse_uint (const char *pp, const char *end, uint32_t *pv)
|
|||
**/
|
||||
hb_bool_t
|
||||
hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
|
||||
const char *buf,
|
||||
int buf_len, /* -1 means nul-terminated */
|
||||
const char **end_ptr, /* May be NULL */
|
||||
hb_font_t *font, /* May be NULL */
|
||||
hb_buffer_serialize_format_t format)
|
||||
const char *buf,
|
||||
int buf_len, /* -1 means nul-terminated */
|
||||
const char **end_ptr, /* May be NULL */
|
||||
hb_font_t *font, /* May be NULL */
|
||||
hb_buffer_serialize_format_t format)
|
||||
{
|
||||
const char *end;
|
||||
if (!end_ptr)
|
||||
end_ptr = &end;
|
||||
*end_ptr = buf;
|
||||
|
||||
assert ((!buffer->len && (buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID)) ||
|
||||
(buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS));
|
||||
buffer->assert_glyphs ();
|
||||
|
||||
if (unlikely (hb_object_is_immutable (buffer)))
|
||||
{
|
||||
if (end_ptr)
|
||||
*end_ptr = buf;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (buf_len == -1)
|
||||
buf_len = strlen (buf);
|
||||
|
@ -454,14 +775,82 @@ hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
|
|||
switch (format)
|
||||
{
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_TEXT:
|
||||
return _hb_buffer_deserialize_glyphs_text (buffer,
|
||||
buf, buf_len, end_ptr,
|
||||
font);
|
||||
return _hb_buffer_deserialize_text (buffer,
|
||||
buf, buf_len, end_ptr,
|
||||
font);
|
||||
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_JSON:
|
||||
return _hb_buffer_deserialize_glyphs_json (buffer,
|
||||
buf, buf_len, end_ptr,
|
||||
font);
|
||||
return _hb_buffer_deserialize_json (buffer,
|
||||
buf, buf_len, end_ptr,
|
||||
font);
|
||||
|
||||
default:
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_INVALID:
|
||||
return false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* hb_buffer_deserialize_unicode:
|
||||
* @buffer: an #hb_buffer_t buffer.
|
||||
* @buf: (array length=buf_len):
|
||||
* @buf_len:
|
||||
* @end_ptr: (out):
|
||||
* @format:
|
||||
*
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
*
|
||||
* Since: 2.7.3
|
||||
**/
|
||||
hb_bool_t
|
||||
hb_buffer_deserialize_unicode (hb_buffer_t *buffer,
|
||||
const char *buf,
|
||||
int buf_len, /* -1 means nul-terminated */
|
||||
const char **end_ptr, /* May be NULL */
|
||||
hb_buffer_serialize_format_t format)
|
||||
{
|
||||
const char *end;
|
||||
if (!end_ptr)
|
||||
end_ptr = &end;
|
||||
*end_ptr = buf;
|
||||
|
||||
buffer->assert_unicode ();
|
||||
|
||||
if (unlikely (hb_object_is_immutable (buffer)))
|
||||
{
|
||||
if (end_ptr)
|
||||
*end_ptr = buf;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (buf_len == -1)
|
||||
buf_len = strlen (buf);
|
||||
|
||||
if (!buf_len)
|
||||
{
|
||||
*end_ptr = buf;
|
||||
return false;
|
||||
}
|
||||
|
||||
hb_buffer_set_content_type (buffer, HB_BUFFER_CONTENT_TYPE_UNICODE);
|
||||
|
||||
hb_font_t* font = hb_font_get_empty ();
|
||||
|
||||
switch (format)
|
||||
{
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_TEXT:
|
||||
return _hb_buffer_deserialize_text (buffer,
|
||||
buf, buf_len, end_ptr,
|
||||
font);
|
||||
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_JSON:
|
||||
return _hb_buffer_deserialize_json (buffer,
|
||||
buf, buf_len, end_ptr,
|
||||
font);
|
||||
|
||||
default:
|
||||
case HB_BUFFER_SERIALIZE_FORMAT_INVALID:
|
||||
|
|
|
@ -37,8 +37,9 @@
|
|||
* @short_description: Input and output buffers
|
||||
* @include: hb.h
|
||||
*
|
||||
* Buffers serve dual role in HarfBuzz; they hold the input characters that are
|
||||
* passed to hb_shape(), and after shaping they hold the output glyphs.
|
||||
* Buffers serve a dual role in HarfBuzz; before shaping, they hold
|
||||
* the input characters that are passed to hb_shape(), and after
|
||||
* shaping they hold the output glyphs.
|
||||
**/
|
||||
|
||||
|
||||
|
@ -50,7 +51,7 @@
|
|||
* Checks the equality of two #hb_segment_properties_t's.
|
||||
*
|
||||
* Return value:
|
||||
* %true if all properties of @a equal those of @b, false otherwise.
|
||||
* %true if all properties of @a equal those of @b, %false otherwise.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -617,8 +618,7 @@ hb_buffer_t::unsafe_to_break_from_outbuffer (unsigned int start, unsigned int en
|
|||
void
|
||||
hb_buffer_t::guess_segment_properties ()
|
||||
{
|
||||
assert ((content_type == HB_BUFFER_CONTENT_TYPE_UNICODE) ||
|
||||
(!len && (content_type == HB_BUFFER_CONTENT_TYPE_INVALID)));
|
||||
assert_unicode ();
|
||||
|
||||
/* If script is set to INVALID, guess from buffer contents */
|
||||
if (props.script == HB_SCRIPT_INVALID) {
|
||||
|
@ -706,9 +706,9 @@ hb_buffer_create ()
|
|||
/**
|
||||
* hb_buffer_get_empty:
|
||||
*
|
||||
* Fetches an empty #hb_buffer_t.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The empty buffer
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -720,7 +720,7 @@ hb_buffer_get_empty ()
|
|||
|
||||
/**
|
||||
* hb_buffer_reference: (skip)
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Increases the reference count on @buffer by one. This prevents @buffer from
|
||||
* being destroyed until a matching call to hb_buffer_destroy() is made.
|
||||
|
@ -738,7 +738,7 @@ hb_buffer_reference (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_destroy: (skip)
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Deallocate the @buffer.
|
||||
* Decreases the reference count on @buffer by one. If the result is zero, then
|
||||
|
@ -765,15 +765,15 @@ hb_buffer_destroy (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_user_data: (skip)
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @key:
|
||||
* @data:
|
||||
* @destroy:
|
||||
* @replace:
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @key: The user-data key
|
||||
* @data: A pointer to the user data
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Attaches a user-data key/data pair to the specified buffer.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if success, %false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -789,12 +789,13 @@ hb_buffer_set_user_data (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_user_data: (skip)
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @key:
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Fetches the user data associated with the specified key,
|
||||
* attached to the specified buffer.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: (transfer-none): A pointer to the user data
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -808,11 +809,11 @@ hb_buffer_get_user_data (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_set_content_type:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @content_type: the type of buffer contents to set
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @content_type: The type of buffer contents to set
|
||||
*
|
||||
* Sets the type of @buffer contents, buffers are either empty, contain
|
||||
* characters (before shaping) or glyphs (the result of shaping).
|
||||
* Sets the type of @buffer contents. Buffers are either empty, contain
|
||||
* characters (before shaping), or contain glyphs (the result of shaping).
|
||||
*
|
||||
* Since: 0.9.5
|
||||
**/
|
||||
|
@ -825,12 +826,13 @@ hb_buffer_set_content_type (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_content_type:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* see hb_buffer_set_content_type().
|
||||
* Fetches the type of @buffer contents. Buffers are either empty, contain
|
||||
* characters (before shaping), or contain glyphs (the result of shaping).
|
||||
*
|
||||
* Return value:
|
||||
* The type of @buffer contents.
|
||||
* The type of @buffer contents
|
||||
*
|
||||
* Since: 0.9.5
|
||||
**/
|
||||
|
@ -843,10 +845,11 @@ hb_buffer_get_content_type (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_unicode_funcs:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @unicode_funcs:
|
||||
*
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @unicode_funcs: The Unicode-functions structure
|
||||
*
|
||||
* Sets the Unicode-functions structure of a buffer to
|
||||
* @unicode_funcs.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -867,11 +870,11 @@ hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_unicode_funcs:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Fetches the Unicode-functions structure of a buffer.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The Unicode-functions structure
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -883,7 +886,7 @@ hb_buffer_get_unicode_funcs (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_direction:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @direction: the #hb_direction_t of the @buffer
|
||||
*
|
||||
* Set the text flow direction of the buffer. No shaping can happen without
|
||||
|
@ -909,7 +912,7 @@ hb_buffer_set_direction (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_direction:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* See hb_buffer_set_direction()
|
||||
*
|
||||
|
@ -926,8 +929,8 @@ hb_buffer_get_direction (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_script:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @script: an #hb_script_t to set.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @script: An #hb_script_t to set.
|
||||
*
|
||||
* Sets the script of @buffer to @script.
|
||||
*
|
||||
|
@ -953,12 +956,12 @@ hb_buffer_set_script (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_script:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* See hb_buffer_set_script().
|
||||
* Fetches the script of @buffer.
|
||||
*
|
||||
* Return value:
|
||||
* The #hb_script_t of the @buffer.
|
||||
* The #hb_script_t of the @buffer
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -970,8 +973,8 @@ hb_buffer_get_script (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_language:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @language: an hb_language_t to set.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @language: An hb_language_t to set
|
||||
*
|
||||
* Sets the language of @buffer to @language.
|
||||
*
|
||||
|
@ -997,7 +1000,7 @@ hb_buffer_set_language (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_language:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* See hb_buffer_set_language().
|
||||
*
|
||||
|
@ -1014,8 +1017,8 @@ hb_buffer_get_language (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_segment_properties:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @props: an #hb_segment_properties_t to use.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @props: An #hb_segment_properties_t to use
|
||||
*
|
||||
* Sets the segment properties of the buffer, a shortcut for calling
|
||||
* hb_buffer_set_direction(), hb_buffer_set_script() and
|
||||
|
@ -1035,8 +1038,8 @@ hb_buffer_set_segment_properties (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_segment_properties:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @props: (out): the output #hb_segment_properties_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @props: (out): The output #hb_segment_properties_t
|
||||
*
|
||||
* Sets @props to the #hb_segment_properties_t of @buffer.
|
||||
*
|
||||
|
@ -1052,8 +1055,8 @@ hb_buffer_get_segment_properties (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_set_flags:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @flags: the buffer flags to set.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @flags: The buffer flags to set
|
||||
*
|
||||
* Sets @buffer flags to @flags. See #hb_buffer_flags_t.
|
||||
*
|
||||
|
@ -1071,12 +1074,12 @@ hb_buffer_set_flags (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_flags:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* See hb_buffer_set_flags().
|
||||
* Fetches the #hb_buffer_flags_t of @buffer.
|
||||
*
|
||||
* Return value:
|
||||
* The @buffer flags.
|
||||
* The @buffer flags
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -1088,10 +1091,12 @@ hb_buffer_get_flags (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_cluster_level:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @cluster_level:
|
||||
*
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @cluster_level: The cluster level to set on the buffer
|
||||
*
|
||||
* Sets the cluster level of a buffer. The #hb_buffer_cluster_level_t
|
||||
* dictates one aspect of how HarfBuzz will treat non-base characters
|
||||
* during shaping.
|
||||
*
|
||||
* Since: 0.9.42
|
||||
**/
|
||||
|
@ -1107,11 +1112,13 @@ hb_buffer_set_cluster_level (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_cluster_level:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Fetches the cluster level of a buffer. The #hb_buffer_cluster_level_t
|
||||
* dictates one aspect of how HarfBuzz will treat non-base characters
|
||||
* during shaping.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The cluster level of @buffer
|
||||
*
|
||||
* Since: 0.9.42
|
||||
**/
|
||||
|
@ -1124,7 +1131,7 @@ hb_buffer_get_cluster_level (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_replacement_codepoint:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @replacement: the replacement #hb_codepoint_t
|
||||
*
|
||||
* Sets the #hb_codepoint_t that replaces invalid entries for a given encoding
|
||||
|
@ -1146,12 +1153,13 @@ hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_replacement_codepoint:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* See hb_buffer_set_replacement_codepoint().
|
||||
* Fetches the #hb_codepoint_t that replaces invalid entries for a given encoding
|
||||
* when adding text to @buffer.
|
||||
*
|
||||
* Return value:
|
||||
* The @buffer replacement #hb_codepoint_t.
|
||||
* The @buffer replacement #hb_codepoint_t
|
||||
*
|
||||
* Since: 0.9.31
|
||||
**/
|
||||
|
@ -1164,7 +1172,7 @@ hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_set_invisible_glyph:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @invisible: the invisible #hb_codepoint_t
|
||||
*
|
||||
* Sets the #hb_codepoint_t that replaces invisible characters in
|
||||
|
@ -1186,12 +1194,12 @@ hb_buffer_set_invisible_glyph (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_invisible_glyph:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* See hb_buffer_set_invisible_glyph().
|
||||
*
|
||||
* Return value:
|
||||
* The @buffer invisible #hb_codepoint_t.
|
||||
* The @buffer invisible #hb_codepoint_t
|
||||
*
|
||||
* Since: 2.0.0
|
||||
**/
|
||||
|
@ -1204,7 +1212,7 @@ hb_buffer_get_invisible_glyph (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_reset:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Resets the buffer to its initial status, as if it was just newly created
|
||||
* with hb_buffer_create().
|
||||
|
@ -1219,7 +1227,7 @@ hb_buffer_reset (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_clear_contents:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Similar to hb_buffer_reset(), but does not clear the Unicode functions and
|
||||
* the replacement code point.
|
||||
|
@ -1234,13 +1242,13 @@ hb_buffer_clear_contents (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_pre_allocate:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @size: number of items to pre allocate.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @size: Number of items to pre allocate.
|
||||
*
|
||||
* Pre allocates memory for @buffer to fit at least @size number of items.
|
||||
*
|
||||
* Return value:
|
||||
* %true if @buffer memory allocation succeeded, %false otherwise.
|
||||
* %true if @buffer memory allocation succeeded, %false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -1252,7 +1260,7 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
|
|||
|
||||
/**
|
||||
* hb_buffer_allocation_successful:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Check if allocating memory for the buffer succeeded.
|
||||
*
|
||||
|
@ -1269,9 +1277,9 @@ hb_buffer_allocation_successful (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_add:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @codepoint: a Unicode code point.
|
||||
* @cluster: the cluster value of @codepoint.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @codepoint: A Unicode code point.
|
||||
* @cluster: The cluster value of @codepoint.
|
||||
*
|
||||
* Appends a character with the Unicode value of @codepoint to @buffer, and
|
||||
* gives it the initial cluster value of @cluster. Clusters can be any thing
|
||||
|
@ -1295,8 +1303,8 @@ hb_buffer_add (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_set_length:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @length: the new length of @buffer.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @length: The new length of @buffer
|
||||
*
|
||||
* Similar to hb_buffer_pre_allocate(), but clears any new items added at the
|
||||
* end.
|
||||
|
@ -1337,7 +1345,7 @@ hb_buffer_set_length (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_length:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Returns the number of items in the buffer.
|
||||
*
|
||||
|
@ -1355,8 +1363,8 @@ hb_buffer_get_length (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_get_glyph_infos:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @length: (out): output array length.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @length: (out): The output-array length.
|
||||
*
|
||||
* Returns @buffer glyph information array. Returned pointer
|
||||
* is valid as long as @buffer contents are not modified.
|
||||
|
@ -1379,8 +1387,8 @@ hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_get_glyph_positions:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @length: (out): output length.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @length: (out): The output length
|
||||
*
|
||||
* Returns @buffer glyph position array. Returned pointer
|
||||
* is valid as long as @buffer contents are not modified.
|
||||
|
@ -1404,14 +1412,33 @@ hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
|
|||
return (hb_glyph_position_t *) buffer->pos;
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_buffer_has_positions:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
*
|
||||
* Returns whether @buffer has glyph position data.
|
||||
* A buffer gains position data when hb_buffer_get_glyph_positions() is called on it,
|
||||
* and cleared of position data when hb_buffer_clear_contents() is called.
|
||||
*
|
||||
* Return value:
|
||||
* %true if the @buffer has position array, %false otherwise.
|
||||
*
|
||||
* Since: 2.7.3
|
||||
**/
|
||||
HB_EXTERN hb_bool_t
|
||||
hb_buffer_has_positions (hb_buffer_t *buffer)
|
||||
{
|
||||
return buffer->have_positions;
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_glyph_info_get_glyph_flags:
|
||||
* @info: a #hb_glyph_info_t.
|
||||
* @info: a #hb_glyph_info_t
|
||||
*
|
||||
* Returns glyph flags encoded within a #hb_glyph_info_t.
|
||||
*
|
||||
* Return value:
|
||||
* The #hb_glyph_flags_t encoded within @info.
|
||||
* The #hb_glyph_flags_t encoded within @info
|
||||
*
|
||||
* Since: 1.5.0
|
||||
**/
|
||||
|
@ -1423,7 +1450,7 @@ hb_glyph_flags_t
|
|||
|
||||
/**
|
||||
* hb_buffer_reverse:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Reverses buffer contents.
|
||||
*
|
||||
|
@ -1437,11 +1464,11 @@ hb_buffer_reverse (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_reverse_range:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @start: start index.
|
||||
* @end: end index.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @start: start index
|
||||
* @end: end index
|
||||
*
|
||||
* Reverses buffer contents between start to end.
|
||||
* Reverses buffer contents between @start and @end.
|
||||
*
|
||||
* Since: 0.9.41
|
||||
**/
|
||||
|
@ -1454,7 +1481,7 @@ hb_buffer_reverse_range (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_reverse_clusters:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Reverses buffer clusters. That is, the buffer contents are
|
||||
* reversed, then each cluster (consecutive items having the
|
||||
|
@ -1470,7 +1497,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer)
|
|||
|
||||
/**
|
||||
* hb_buffer_guess_segment_properties:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Sets unset buffer segment properties based on buffer Unicode
|
||||
* contents. If buffer is not empty, it must have content type
|
||||
|
@ -1513,8 +1540,7 @@ hb_buffer_add_utf (hb_buffer_t *buffer,
|
|||
typedef typename utf_t::codepoint_t T;
|
||||
const hb_codepoint_t replacement = buffer->replacement;
|
||||
|
||||
assert ((buffer->content_type == HB_BUFFER_CONTENT_TYPE_UNICODE) ||
|
||||
(!buffer->len && (buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID)));
|
||||
buffer->assert_unicode ();
|
||||
|
||||
if (unlikely (hb_object_is_immutable (buffer)))
|
||||
return;
|
||||
|
@ -1573,12 +1599,12 @@ hb_buffer_add_utf (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_add_utf8:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @text: (array length=text_length) (element-type uint8_t): an array of UTF-8
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @text: (array length=text_length) (element-type uint8_t): An array of UTF-8
|
||||
* characters to append.
|
||||
* @text_length: the length of the @text, or -1 if it is %NULL terminated.
|
||||
* @item_offset: the offset of the first character to add to the @buffer.
|
||||
* @item_length: the number of characters to add to the @buffer, or -1 for the
|
||||
* @text_length: The length of the @text, or -1 if it is %NULL terminated.
|
||||
* @item_offset: The offset of the first character to add to the @buffer.
|
||||
* @item_length: The number of characters to add to the @buffer, or -1 for the
|
||||
* end of @text (assuming it is %NULL terminated).
|
||||
*
|
||||
* See hb_buffer_add_codepoints().
|
||||
|
@ -1600,12 +1626,12 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_add_utf16:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @text: (array length=text_length): an array of UTF-16 characters to append.
|
||||
* @text_length: the length of the @text, or -1 if it is %NULL terminated.
|
||||
* @item_offset: the offset of the first character to add to the @buffer.
|
||||
* @item_length: the number of characters to add to the @buffer, or -1 for the
|
||||
* end of @text (assuming it is %NULL terminated).
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @text: (array length=text_length): An array of UTF-16 characters to append
|
||||
* @text_length: The length of the @text, or -1 if it is %NULL terminated
|
||||
* @item_offset: The offset of the first character to add to the @buffer
|
||||
* @item_length: The number of characters to add to the @buffer, or -1 for the
|
||||
* end of @text (assuming it is %NULL terminated)
|
||||
*
|
||||
* See hb_buffer_add_codepoints().
|
||||
*
|
||||
|
@ -1626,12 +1652,12 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_add_utf32:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @text: (array length=text_length): an array of UTF-32 characters to append.
|
||||
* @text_length: the length of the @text, or -1 if it is %NULL terminated.
|
||||
* @item_offset: the offset of the first character to add to the @buffer.
|
||||
* @item_length: the number of characters to add to the @buffer, or -1 for the
|
||||
* end of @text (assuming it is %NULL terminated).
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @text: (array length=text_length): An array of UTF-32 characters to append
|
||||
* @text_length: The length of the @text, or -1 if it is %NULL terminated
|
||||
* @item_offset: The offset of the first character to add to the @buffer
|
||||
* @item_length: The number of characters to add to the @buffer, or -1 for the
|
||||
* end of @text (assuming it is %NULL terminated)
|
||||
*
|
||||
* See hb_buffer_add_codepoints().
|
||||
*
|
||||
|
@ -1652,13 +1678,13 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_add_latin1:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @text: (array length=text_length) (element-type uint8_t): an array of UTF-8
|
||||
* characters to append.
|
||||
* @text_length: the length of the @text, or -1 if it is %NULL terminated.
|
||||
* @item_offset: the offset of the first character to add to the @buffer.
|
||||
* characters to append
|
||||
* @text_length: the length of the @text, or -1 if it is %NULL terminated
|
||||
* @item_offset: the offset of the first character to add to the @buffer
|
||||
* @item_length: the number of characters to add to the @buffer, or -1 for the
|
||||
* end of @text (assuming it is %NULL terminated).
|
||||
* end of @text (assuming it is %NULL terminated)
|
||||
*
|
||||
* Similar to hb_buffer_add_codepoints(), but allows only access to first 256
|
||||
* Unicode code points that can fit in 8-bit strings.
|
||||
|
@ -1714,8 +1740,8 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_append:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @source: source #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @source: source #hb_buffer_t
|
||||
* @start: start index into source buffer to copy. Use 0 to copy from start of buffer.
|
||||
* @end: end index into source buffer to copy. Use @HB_FEATURE_GLOBAL_END to copy to end of buffer.
|
||||
*
|
||||
|
@ -1821,7 +1847,7 @@ normalize_glyphs_cluster (hb_buffer_t *buffer,
|
|||
|
||||
/**
|
||||
* hb_buffer_normalize_glyphs:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
*
|
||||
* Reorders a glyph buffer to have canonical in-cluster glyph order / position.
|
||||
* The resulting clusters should behave identical to pre-reordering clusters.
|
||||
|
@ -1834,8 +1860,8 @@ void
|
|||
hb_buffer_normalize_glyphs (hb_buffer_t *buffer)
|
||||
{
|
||||
assert (buffer->have_positions);
|
||||
assert ((buffer->content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS) ||
|
||||
(!buffer->len && (buffer->content_type == HB_BUFFER_CONTENT_TYPE_INVALID)));
|
||||
|
||||
buffer->assert_glyphs ();
|
||||
|
||||
bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
|
||||
|
||||
|
@ -1967,7 +1993,7 @@ hb_buffer_diff (hb_buffer_t *buffer,
|
|||
#ifndef HB_NO_BUFFER_MESSAGE
|
||||
/**
|
||||
* hb_buffer_set_message_func:
|
||||
* @buffer: an #hb_buffer_t.
|
||||
* @buffer: An #hb_buffer_t
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
|
|
|
@ -59,8 +59,7 @@ HB_BEGIN_DECLS
|
|||
* 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
|
||||
{
|
||||
typedef struct hb_glyph_info_t {
|
||||
hb_codepoint_t codepoint;
|
||||
/*< private >*/
|
||||
hb_mask_t mask;
|
||||
|
@ -315,6 +314,23 @@ hb_buffer_get_flags (hb_buffer_t *buffer);
|
|||
* @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
|
||||
*/
|
||||
|
@ -447,6 +463,9 @@ 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);
|
||||
|
@ -518,6 +537,27 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
|
|||
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,
|
||||
|
@ -526,6 +566,14 @@ hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
|
|||
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
|
||||
|
|
|
@ -35,20 +35,20 @@
|
|||
|
||||
|
||||
#ifndef HB_BUFFER_MAX_LEN_FACTOR
|
||||
#define HB_BUFFER_MAX_LEN_FACTOR 32
|
||||
#define HB_BUFFER_MAX_LEN_FACTOR 64
|
||||
#endif
|
||||
#ifndef HB_BUFFER_MAX_LEN_MIN
|
||||
#define HB_BUFFER_MAX_LEN_MIN 8192
|
||||
#define HB_BUFFER_MAX_LEN_MIN 16384
|
||||
#endif
|
||||
#ifndef HB_BUFFER_MAX_LEN_DEFAULT
|
||||
#define HB_BUFFER_MAX_LEN_DEFAULT 0x3FFFFFFF /* Shaping more than a billion chars? Let us know! */
|
||||
#endif
|
||||
|
||||
#ifndef HB_BUFFER_MAX_OPS_FACTOR
|
||||
#define HB_BUFFER_MAX_OPS_FACTOR 64
|
||||
#define HB_BUFFER_MAX_OPS_FACTOR 1024
|
||||
#endif
|
||||
#ifndef HB_BUFFER_MAX_OPS_MIN
|
||||
#define HB_BUFFER_MAX_OPS_MIN 1024
|
||||
#define HB_BUFFER_MAX_OPS_MIN 16384
|
||||
#endif
|
||||
#ifndef HB_BUFFER_MAX_OPS_DEFAULT
|
||||
#define HB_BUFFER_MAX_OPS_DEFAULT 0x1FFFFFFF /* Shaping more than a billion operations? Let us know! */
|
||||
|
@ -339,6 +339,39 @@ struct hb_buffer_t
|
|||
bool ensure_inplace (unsigned int size)
|
||||
{ return likely (!size || size < allocated); }
|
||||
|
||||
void assert_glyphs ()
|
||||
{
|
||||
assert ((content_type == HB_BUFFER_CONTENT_TYPE_GLYPHS) ||
|
||||
(!len && (content_type == HB_BUFFER_CONTENT_TYPE_INVALID)));
|
||||
}
|
||||
void assert_unicode ()
|
||||
{
|
||||
assert ((content_type == HB_BUFFER_CONTENT_TYPE_UNICODE) ||
|
||||
(!len && (content_type == HB_BUFFER_CONTENT_TYPE_INVALID)));
|
||||
}
|
||||
bool ensure_glyphs ()
|
||||
{
|
||||
if (unlikely (content_type != HB_BUFFER_CONTENT_TYPE_GLYPHS))
|
||||
{
|
||||
if (content_type != HB_BUFFER_CONTENT_TYPE_INVALID)
|
||||
return false;
|
||||
assert (len == 0);
|
||||
content_type = HB_BUFFER_CONTENT_TYPE_GLYPHS;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool ensure_unicode ()
|
||||
{
|
||||
if (unlikely (content_type != HB_BUFFER_CONTENT_TYPE_UNICODE))
|
||||
{
|
||||
if (content_type != HB_BUFFER_CONTENT_TYPE_INVALID)
|
||||
return false;
|
||||
assert (len == 0);
|
||||
content_type = HB_BUFFER_CONTENT_TYPE_UNICODE;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
HB_INTERNAL bool make_room_for (unsigned int num_in, unsigned int num_out);
|
||||
HB_INTERNAL bool shift_forward (unsigned int count);
|
||||
|
||||
|
|
|
@ -86,12 +86,15 @@ _hb_options_init ()
|
|||
|
||||
/**
|
||||
* hb_tag_from_string:
|
||||
* @str: (array length=len) (element-type uint8_t):
|
||||
* @len:
|
||||
* @str: (array length=len) (element-type uint8_t): String to convert
|
||||
* @len: Length of @str, or -1 if it is %NULL-terminated
|
||||
*
|
||||
* Converts a string into an #hb_tag_t. Valid tags
|
||||
* are four characters. Shorter input strings will be
|
||||
* padded with spaces. Longer input strings will be
|
||||
* truncated.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The #hb_tag_t corresponding to @str
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -116,10 +119,11 @@ hb_tag_from_string (const char *str, int len)
|
|||
|
||||
/**
|
||||
* hb_tag_to_string:
|
||||
* @tag:
|
||||
* @buf: (out caller-allocates) (array fixed-size=4) (element-type uint8_t):
|
||||
*
|
||||
* @tag: #hb_tag_t to convert
|
||||
* @buf: (out caller-allocates) (array fixed-size=4) (element-type uint8_t): Converted string
|
||||
*
|
||||
* Converts an #hb_tag_t to a string and returns it in @buf.
|
||||
* Strings will be four characters long.
|
||||
*
|
||||
* Since: 0.9.5
|
||||
**/
|
||||
|
@ -144,12 +148,17 @@ const char direction_strings[][4] = {
|
|||
|
||||
/**
|
||||
* hb_direction_from_string:
|
||||
* @str: (array length=len) (element-type uint8_t):
|
||||
* @len:
|
||||
* @str: (array length=len) (element-type uint8_t): String to convert
|
||||
* @len: Length of @str, or -1 if it is %NULL-terminated
|
||||
*
|
||||
* Converts a string to an #hb_direction_t.
|
||||
*
|
||||
* Matching is loose and applies only to the first letter. For
|
||||
* examples, "LTR" and "left-to-right" will both return #HB_DIRECTION_LTR.
|
||||
*
|
||||
* Return value:
|
||||
* Unmatched strings will return #HB_DIRECTION_INVALID.
|
||||
*
|
||||
* Return value: The #hb_direction_t matching @str
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -172,11 +181,11 @@ hb_direction_from_string (const char *str, int len)
|
|||
|
||||
/**
|
||||
* hb_direction_to_string:
|
||||
* @direction:
|
||||
* @direction: The #hb_direction_t to convert
|
||||
*
|
||||
* Converts an #hb_direction_t to a string.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): The string corresponding to @direction
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -367,9 +376,9 @@ hb_language_from_string (const char *str, int len)
|
|||
|
||||
/**
|
||||
* hb_language_to_string:
|
||||
* @language: an #hb_language_t to convert.
|
||||
* @language: The #hb_language_t to convert
|
||||
*
|
||||
* See hb_language_from_string().
|
||||
* Converts an #hb_language_t to a string.
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* A %NULL-terminated string representing the @language. Must not be freed by
|
||||
|
@ -388,16 +397,17 @@ hb_language_to_string (hb_language_t language)
|
|||
/**
|
||||
* hb_language_get_default:
|
||||
*
|
||||
* Get default language from current locale.
|
||||
* Fetch the default language from current locale.
|
||||
*
|
||||
* Note that the first time this function is called, it calls
|
||||
* <note>Note that the first time this function is called, it calls
|
||||
* "setlocale (LC_CTYPE, nullptr)" to fetch current locale. The underlying
|
||||
* setlocale function is, in many implementations, NOT threadsafe. To avoid
|
||||
* problems, call this function once before multiple threads can call it.
|
||||
* This function is only used from hb_buffer_guess_segment_properties() by
|
||||
* HarfBuzz itself.
|
||||
* HarfBuzz itself.</note>
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): The default language of the locale as
|
||||
* an #hb_language_t
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -448,7 +458,12 @@ hb_script_from_iso15924_tag (hb_tag_t tag)
|
|||
case HB_TAG('Q','a','a','c'): return HB_SCRIPT_COPTIC;
|
||||
|
||||
/* Script variants from https://unicode.org/iso15924/ */
|
||||
case HB_TAG('A','r','a','n'): return HB_SCRIPT_ARABIC;
|
||||
case HB_TAG('C','y','r','s'): return HB_SCRIPT_CYRILLIC;
|
||||
case HB_TAG('G','e','o','k'): return HB_SCRIPT_GEORGIAN;
|
||||
case HB_TAG('H','a','n','s'): return HB_SCRIPT_HAN;
|
||||
case HB_TAG('H','a','n','t'): return HB_SCRIPT_HAN;
|
||||
case HB_TAG('J','a','m','o'): return HB_SCRIPT_HANGUL;
|
||||
case HB_TAG('L','a','t','f'): return HB_SCRIPT_LATIN;
|
||||
case HB_TAG('L','a','t','g'): return HB_SCRIPT_LATIN;
|
||||
case HB_TAG('S','y','r','e'): return HB_SCRIPT_SYRIAC;
|
||||
|
@ -489,7 +504,7 @@ hb_script_from_string (const char *str, int len)
|
|||
* hb_script_to_iso15924_tag:
|
||||
* @script: an #hb_script_t to convert.
|
||||
*
|
||||
* See hb_script_from_iso15924_tag().
|
||||
* Converts an #hb_script_t to a corresponding ISO 15924 script tag.
|
||||
*
|
||||
* Return value:
|
||||
* An #hb_tag_t representing an ISO 15924 script tag.
|
||||
|
@ -504,11 +519,16 @@ hb_script_to_iso15924_tag (hb_script_t script)
|
|||
|
||||
/**
|
||||
* hb_script_get_horizontal_direction:
|
||||
* @script:
|
||||
* @script: The #hb_script_t to query
|
||||
*
|
||||
* Fetches the #hb_direction_t of a script when it is
|
||||
* set horizontally. All right-to-left scripts will return
|
||||
* #HB_DIRECTION_RTL. All left-to-right scripts will return
|
||||
* #HB_DIRECTION_LTR. Scripts that can be written either
|
||||
* horizontally or vertically will return #HB_DIRECTION_INVALID.
|
||||
* Unknown scripts will return #HB_DIRECTION_LTR.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The horizontal #hb_direction_t of @script
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -613,9 +633,9 @@ hb_script_get_horizontal_direction (hb_script_t script)
|
|||
|
||||
/**
|
||||
* hb_version:
|
||||
* @major: (out): Library major version component.
|
||||
* @minor: (out): Library minor version component.
|
||||
* @micro: (out): Library micro version component.
|
||||
* @major: (out): Library major version component
|
||||
* @minor: (out): Library minor version component
|
||||
* @micro: (out): Library micro version component
|
||||
*
|
||||
* Returns library version as three integer components.
|
||||
*
|
||||
|
@ -636,7 +656,7 @@ hb_version (unsigned int *major,
|
|||
*
|
||||
* Returns library version as a string with three components.
|
||||
*
|
||||
* Return value: library version string.
|
||||
* Return value: Library version string
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -648,13 +668,15 @@ hb_version_string ()
|
|||
|
||||
/**
|
||||
* hb_version_atleast:
|
||||
* @major:
|
||||
* @minor:
|
||||
* @micro:
|
||||
* @major: Library major version component
|
||||
* @minor: Library minor version component
|
||||
* @micro: Library micro version component
|
||||
*
|
||||
* Tests the library version against a minimum value,
|
||||
* as three integer components.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: True if the library is equal to or greater than
|
||||
* the test value, false otherwise
|
||||
*
|
||||
* Since: 0.9.30
|
||||
**/
|
||||
|
@ -883,7 +905,7 @@ parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
|
|||
* </informaltable>
|
||||
*
|
||||
* Return value:
|
||||
* %true if @str is successfully parsed, %false otherwise.
|
||||
* %true if @str is successfully parsed, %false otherwise
|
||||
*
|
||||
* Since: 0.9.5
|
||||
**/
|
||||
|
|
|
@ -88,11 +88,37 @@ typedef unsigned __int64 uint64_t;
|
|||
|
||||
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 {
|
||||
|
@ -107,9 +133,33 @@ typedef union _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)
|
||||
|
@ -132,6 +182,13 @@ hb_tag_to_string (hb_tag_t tag, char *buf);
|
|||
* @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,
|
||||
|
@ -148,12 +205,59 @@ 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))
|
||||
|
||||
|
||||
|
@ -173,7 +277,169 @@ HB_EXTERN hb_language_t
|
|||
hb_language_get_default (void);
|
||||
|
||||
|
||||
/* hb_script_t */
|
||||
/**
|
||||
* 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 */
|
||||
|
@ -410,6 +676,12 @@ 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;
|
||||
|
@ -435,10 +707,10 @@ typedef void (*hb_destroy_func_t) (void *user_data);
|
|||
|
||||
/**
|
||||
* hb_feature_t:
|
||||
* @tag: a feature tag
|
||||
* @value: 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.
|
||||
* @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).
|
||||
*
|
||||
|
@ -465,7 +737,13 @@ hb_feature_to_string (hb_feature_t *feature,
|
|||
|
||||
/**
|
||||
* 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 {
|
||||
|
@ -484,7 +762,8 @@ hb_variation_to_string (hb_variation_t *variation,
|
|||
/**
|
||||
* hb_color_t:
|
||||
*
|
||||
* Data type for holding color values.
|
||||
* Data type for holding color values. Colors are eight bits per
|
||||
* channel RGB plus alpha transparency.
|
||||
*
|
||||
* Since: 2.1.0
|
||||
*/
|
||||
|
|
|
@ -33,6 +33,15 @@
|
|||
#include "hb-directwrite.h"
|
||||
|
||||
|
||||
/**
|
||||
* SECTION:hb-directwrite
|
||||
* @title: hb-directwrite
|
||||
* @short_description: DirectWrite integration
|
||||
* @include: hb-directwrite.h
|
||||
*
|
||||
* Functions for using HarfBuzz with DirectWrite fonts.
|
||||
**/
|
||||
|
||||
/* Declare object creator for dynamic support of DWRITE */
|
||||
typedef HRESULT (* WINAPI t_DWriteCreateFactory)(
|
||||
DWRITE_FACTORY_TYPE factoryType,
|
||||
|
|
|
@ -41,8 +41,10 @@
|
|||
* @short_description: Font face objects
|
||||
* @include: hb.h
|
||||
*
|
||||
* Font face is objects represent a single face in a font family.
|
||||
* More exactly, a font face represents a single face in a binary font file.
|
||||
* A font face is an object that represents a single face from within a
|
||||
* font family.
|
||||
*
|
||||
* More precisely, a font face represents a single face in a binary font file.
|
||||
* Font faces are typically built from a binary blob and a face index.
|
||||
* Font faces are used to create fonts.
|
||||
**/
|
||||
|
@ -52,7 +54,7 @@
|
|||
* hb_face_count:
|
||||
* @blob: a blob.
|
||||
*
|
||||
* Get number of faces in a blob.
|
||||
* Fetches the number of faces in a blob.
|
||||
*
|
||||
* Return value: Number of faces in @blob
|
||||
*
|
||||
|
@ -96,13 +98,19 @@ DEFINE_NULL_INSTANCE (hb_face_t) =
|
|||
|
||||
/**
|
||||
* hb_face_create_for_tables:
|
||||
* @reference_table_func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
* @reference_table_func: (closure user_data) (destroy destroy) (scope notified): Table-referencing function
|
||||
* @user_data: A pointer to the user data
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
*
|
||||
* Variant of hb_face_create(), built for those cases where it is more
|
||||
* convenient to provide data for individual tables instead of the whole font
|
||||
* data. With the caveat that hb_face_get_table_tags() does not currently work
|
||||
* with faces created this way.
|
||||
*
|
||||
* Creates a new face object from the specified @user_data and @reference_table_func,
|
||||
* with the @destroy callback.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full)
|
||||
* Return value: (transfer full): The new face object
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -182,12 +190,15 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
|
|||
|
||||
/**
|
||||
* hb_face_create: (Xconstructor)
|
||||
* @blob:
|
||||
* @index:
|
||||
* @blob: #hb_blob_t to work upon
|
||||
* @index: The index of the face within @blob
|
||||
*
|
||||
* Constructs a new face object from the specified blob and
|
||||
* a face index into that blob. This is used for blobs of
|
||||
* file formats such as Dfont and TTC that can contain more
|
||||
* than one face.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The new face object
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -222,9 +233,9 @@ hb_face_create (hb_blob_t *blob,
|
|||
/**
|
||||
* hb_face_get_empty:
|
||||
*
|
||||
* Fetches the singleton empty face object.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full)
|
||||
* Return value: (transfer full) The empty face object
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -237,11 +248,11 @@ hb_face_get_empty ()
|
|||
|
||||
/**
|
||||
* hb_face_reference: (skip)
|
||||
* @face: a face.
|
||||
* @face: A face object
|
||||
*
|
||||
* Increases the reference count on a face object.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The @face object
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -253,9 +264,11 @@ hb_face_reference (hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_destroy: (skip)
|
||||
* @face: a face.
|
||||
*
|
||||
*
|
||||
* @face: A face object
|
||||
*
|
||||
* Decreases the reference count on a face object. When the
|
||||
* reference count reaches zero, the face is destroyed,
|
||||
* freeing all memory.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -283,15 +296,15 @@ hb_face_destroy (hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_set_user_data: (skip)
|
||||
* @face: a face.
|
||||
* @key:
|
||||
* @data:
|
||||
* @destroy:
|
||||
* @replace:
|
||||
* @face: A face object
|
||||
* @key: The user-data key to set
|
||||
* @data: A pointer to the user data
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Attaches a user-data key/data pair to the given face object.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if success, %false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -307,12 +320,13 @@ hb_face_set_user_data (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_face_get_user_data: (skip)
|
||||
* @face: a face.
|
||||
* @key:
|
||||
* @face: A face object
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Fetches the user data associated with the specified key,
|
||||
* attached to the specified face object.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): A pointer to the user data
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -325,9 +339,9 @@ hb_face_get_user_data (const hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_face_make_immutable:
|
||||
* @face: a face.
|
||||
*
|
||||
* @face: A face object
|
||||
*
|
||||
* Makes the given face object immutable.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -342,11 +356,11 @@ hb_face_make_immutable (hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_is_immutable:
|
||||
* @face: a face.
|
||||
* @face: A face object
|
||||
*
|
||||
* Tests whether the given face object is immutable.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: True is @face is immutable, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -359,12 +373,13 @@ hb_face_is_immutable (const hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_reference_table:
|
||||
* @face: a face.
|
||||
* @tag:
|
||||
* @face: A face object
|
||||
* @tag: The #hb_tag_t of the table to query
|
||||
*
|
||||
* Fetches a reference to the specified table within
|
||||
* the specified face.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): A pointer to the @tag table within @face
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -380,11 +395,13 @@ hb_face_reference_table (const hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_face_reference_blob:
|
||||
* @face: a face.
|
||||
* @face: A face object
|
||||
*
|
||||
* Fetches a pointer to the binary blob that contains the
|
||||
* specified face. Returns an empty blob if referencing face data is not
|
||||
* possible.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): A pointer to the blob for @face
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -396,10 +413,13 @@ hb_face_reference_blob (hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_set_index:
|
||||
* @face: a face.
|
||||
* @index:
|
||||
* @face: A face object
|
||||
* @index: The index to assign
|
||||
*
|
||||
* Assigns the specified face-index to @face. Fails if the
|
||||
* face is immutable.
|
||||
*
|
||||
* <note>Note: face indices within a collection are zero-based.</note>
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -415,11 +435,13 @@ hb_face_set_index (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_face_get_index:
|
||||
* @face: a face.
|
||||
* @face: A face object
|
||||
*
|
||||
* Fetches the face-index corresponding to the given face.
|
||||
*
|
||||
* <note>Note: face indices within a collection are zero-based.</note>
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The index of @face.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -431,10 +453,10 @@ hb_face_get_index (const hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_set_upem:
|
||||
* @face: a face.
|
||||
* @upem:
|
||||
*
|
||||
* @face: A face object
|
||||
* @upem: The units-per-em value to assign
|
||||
*
|
||||
* Sets the units-per-em (upem) for a face object to the specified value.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -450,11 +472,11 @@ hb_face_set_upem (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_face_get_upem:
|
||||
* @face: a face.
|
||||
* @face: A face object
|
||||
*
|
||||
* Fetches the units-per-em (upem) value of the specified face object.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The upem value of @face
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -466,10 +488,10 @@ hb_face_get_upem (const hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_set_glyph_count:
|
||||
* @face: a face.
|
||||
* @glyph_count:
|
||||
*
|
||||
* @face: A face object
|
||||
* @glyph_count: The glyph-count value to assign
|
||||
*
|
||||
* Sets the glyph count for a face object to the specified value.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -485,11 +507,11 @@ hb_face_set_glyph_count (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_face_get_glyph_count:
|
||||
* @face: a face.
|
||||
* @face: A face object
|
||||
*
|
||||
* Fetches the glyph-count value of the specified face object.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The glyph-count value of @face
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -501,14 +523,16 @@ hb_face_get_glyph_count (const hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_face_get_table_tags:
|
||||
* @face: a face.
|
||||
* @start_offset: index of first tag to return.
|
||||
* @table_count: input length of @table_tags array, output number of items written.
|
||||
* @table_tags: array to write tags into.
|
||||
* @face: A face object
|
||||
* @start_offset: The index of first table tag to retrieve
|
||||
* @table_count: (inout): Input = the maximum number of table tags to return;
|
||||
* Output = the actual number of table tags returned (may be zero)
|
||||
* @table_tags: (out) (array length=table_count): The array of table tags found
|
||||
*
|
||||
* Retrieves table tags for a face, if possible.
|
||||
* Fetches a list of all table tags for a face, if possible. The list returned will
|
||||
* begin at the offset provided
|
||||
*
|
||||
* Return value: total number of tables, or 0 if not possible to list.
|
||||
* Return value: Total number of tables, or zero if it is not possible to list
|
||||
*
|
||||
* Since: 1.6.0
|
||||
**/
|
||||
|
@ -542,8 +566,11 @@ hb_face_get_table_tags (const hb_face_t *face,
|
|||
#ifndef HB_NO_FACE_COLLECT_UNICODES
|
||||
/**
|
||||
* hb_face_collect_unicodes:
|
||||
* @face: font face.
|
||||
* @out: set to add Unicode characters covered by @face to.
|
||||
* @face: A face object
|
||||
* @out: The set to add Unicode characters to
|
||||
*
|
||||
* Collects all of the Unicode characters covered by @face and adds
|
||||
* them to the #hb_set_t set @out.
|
||||
*
|
||||
* Since: 1.9.0
|
||||
*/
|
||||
|
@ -555,10 +582,11 @@ hb_face_collect_unicodes (hb_face_t *face,
|
|||
}
|
||||
/**
|
||||
* hb_face_collect_variation_selectors:
|
||||
* @face: font face.
|
||||
* @out: set to add Variation Selector characters covered by @face to.
|
||||
*
|
||||
* @face: A face object
|
||||
* @out: The set to add Variation Selector characters to
|
||||
*
|
||||
* Collects all Unicode "Variation Selector" characters covered by @face and adds
|
||||
* them to the #hb_set_t set @out.
|
||||
*
|
||||
* Since: 1.9.0
|
||||
*/
|
||||
|
@ -570,10 +598,12 @@ hb_face_collect_variation_selectors (hb_face_t *face,
|
|||
}
|
||||
/**
|
||||
* hb_face_collect_variation_unicodes:
|
||||
* @face: font face.
|
||||
* @out: set to add Unicode characters for @variation_selector covered by @face to.
|
||||
*
|
||||
* @face: A face object
|
||||
* @variation_selector: The Variation Selector to query
|
||||
* @out: The set to add Unicode characters to
|
||||
*
|
||||
* Collects all Unicode characters for @variation_selector covered by @face and adds
|
||||
* them to the #hb_set_t set @out.
|
||||
*
|
||||
* Since: 1.9.0
|
||||
*/
|
||||
|
@ -708,6 +738,9 @@ hb_face_builder_create ()
|
|||
|
||||
/**
|
||||
* hb_face_builder_add_table:
|
||||
* @face: A face object created with hb_face_builder_create()
|
||||
* @tag: The #hb_tag_t of the table to add
|
||||
* @blob: The blob containing the table data to add
|
||||
*
|
||||
* Add table for @tag with data provided by @blob to the face. @face must
|
||||
* be created using hb_face_builder_create().
|
||||
|
|
|
@ -46,6 +46,12 @@ 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 *
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -45,6 +45,19 @@ 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 *
|
||||
|
@ -81,12 +94,21 @@ hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
|
|||
|
||||
/* font and glyph extents */
|
||||
|
||||
/* 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; /* typographic ascender. */
|
||||
hb_position_t descender; /* typographic descender. */
|
||||
hb_position_t line_gap; /* suggested line spacing gap. */
|
||||
/**
|
||||
* 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;
|
||||
|
@ -99,13 +121,22 @@ typedef struct hb_font_extents_t
|
|||
hb_position_t reserved1;
|
||||
} hb_font_extents_t;
|
||||
|
||||
/* Note that height is negative in coordinate systems that grow up. */
|
||||
typedef struct hb_glyph_extents_t
|
||||
{
|
||||
hb_position_t x_bearing; /* left side of glyph from origin. */
|
||||
hb_position_t y_bearing; /* top side of glyph from origin. */
|
||||
hb_position_t width; /* distance from left to right side. */
|
||||
hb_position_t height; /* distance from top to bottom side. */
|
||||
/**
|
||||
* 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 */
|
||||
|
@ -113,19 +144,72 @@ typedef struct hb_glyph_extents_t
|
|||
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,
|
||||
|
@ -134,13 +218,51 @@ typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void
|
|||
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,
|
||||
|
@ -148,14 +270,66 @@ typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_d
|
|||
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,
|
||||
|
@ -164,20 +338,59 @@ typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void
|
|||
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,
|
||||
|
@ -188,12 +401,12 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_font_h_extents_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -204,12 +417,12 @@ hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_font_v_extents_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -220,12 +433,12 @@ hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_nominal_glyph_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -236,12 +449,12 @@ hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_nominal_glyphs_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -252,12 +465,12 @@ hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_variation_glyph_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -268,12 +481,12 @@ hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_h_advance_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -284,12 +497,12 @@ hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_v_advance_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -300,12 +513,12 @@ hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_h_advances_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -316,12 +529,12 @@ hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_v_advances_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -332,12 +545,12 @@ hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_h_origin_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -348,12 +561,12 @@ hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_v_origin_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -380,12 +593,12 @@ hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_extents_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -396,12 +609,12 @@ hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_contour_point_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -412,12 +625,12 @@ hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_name_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -428,12 +641,12 @@ hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
|
|||
|
||||
/**
|
||||
* hb_font_funcs_set_glyph_from_name_func:
|
||||
* @ffuncs: font functions.
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
|
|
@ -661,7 +661,7 @@ _hb_ft_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data
|
|||
/**
|
||||
* hb_ft_face_create:
|
||||
* @ft_face: (destroy destroy) (scope notified): FT_Face to work upon
|
||||
* @destroy: A callback to call when the face object is not needed anymore
|
||||
* @destroy: (optional): A callback to call when the face object is not needed anymore
|
||||
*
|
||||
* Creates an #hb_face_t face object from the specified FT_Face.
|
||||
*
|
||||
|
|
|
@ -28,6 +28,16 @@
|
|||
|
||||
#include "hb-gdi.h"
|
||||
|
||||
|
||||
/**
|
||||
* SECTION:hb-gdi
|
||||
* @title: hb-gdi
|
||||
* @short_description: GDI integration
|
||||
* @include: hb-gdi.h
|
||||
*
|
||||
* Functions for using HarfBuzz with GDI fonts.
|
||||
**/
|
||||
|
||||
static hb_blob_t *
|
||||
_hb_gdi_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data)
|
||||
{
|
||||
|
|
|
@ -42,7 +42,9 @@
|
|||
/**
|
||||
* hb_map_create: (Xconstructor)
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Creates a new, initially empty map.
|
||||
*
|
||||
* Return value: (transfer full): The new #hb_map_t
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -62,7 +64,9 @@ hb_map_create ()
|
|||
/**
|
||||
* hb_map_get_empty:
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Fetches the singleton empty #hb_map_t.
|
||||
*
|
||||
* Return value: (transfer full): The empty #hb_map_t
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -74,9 +78,11 @@ hb_map_get_empty ()
|
|||
|
||||
/**
|
||||
* hb_map_reference: (skip)
|
||||
* @map: a map.
|
||||
* @map: A map
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Increases the reference count on a map.
|
||||
*
|
||||
* Return value: (transfer full): The map
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -88,7 +94,11 @@ hb_map_reference (hb_map_t *map)
|
|||
|
||||
/**
|
||||
* hb_map_destroy: (skip)
|
||||
* @map: a map.
|
||||
* @map: A map
|
||||
*
|
||||
* Decreases the reference count on a map. When
|
||||
* the reference count reaches zero, the map is
|
||||
* destroyed, freeing all memory.
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -104,13 +114,15 @@ hb_map_destroy (hb_map_t *map)
|
|||
|
||||
/**
|
||||
* hb_map_set_user_data: (skip)
|
||||
* @map: a map.
|
||||
* @key:
|
||||
* @data:
|
||||
* @destroy:
|
||||
* @replace:
|
||||
* @map: A map
|
||||
* @key: The user-data key to set
|
||||
* @data: A pointer to the user data to set
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Return value:
|
||||
* Attaches a user-data key/data pair to the specified map.
|
||||
*
|
||||
* Return value: %true if success, %false otherwise
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -126,10 +138,13 @@ hb_map_set_user_data (hb_map_t *map,
|
|||
|
||||
/**
|
||||
* hb_map_get_user_data: (skip)
|
||||
* @map: a map.
|
||||
* @key:
|
||||
* @map: A map
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Fetches the user data associated with the specified key,
|
||||
* attached to the specified map.
|
||||
*
|
||||
* Return value: (transfer none): A pointer to the user data
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -143,11 +158,11 @@ hb_map_get_user_data (hb_map_t *map,
|
|||
|
||||
/**
|
||||
* hb_map_allocation_successful:
|
||||
* @map: a map.
|
||||
* @map: A map
|
||||
*
|
||||
* Tests whether memory allocation for a set was successful.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if allocation succeeded, false otherwise
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -160,11 +175,11 @@ hb_map_allocation_successful (const hb_map_t *map)
|
|||
|
||||
/**
|
||||
* hb_map_set:
|
||||
* @map: a map.
|
||||
* @key:
|
||||
* @value:
|
||||
*
|
||||
* @map: A map
|
||||
* @key: The key to store in the map
|
||||
* @value: The value to store for @key
|
||||
*
|
||||
* Stores @key:@value in the map.
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -178,10 +193,10 @@ hb_map_set (hb_map_t *map,
|
|||
|
||||
/**
|
||||
* hb_map_get:
|
||||
* @map: a map.
|
||||
* @key:
|
||||
*
|
||||
* @map: A map
|
||||
* @key: The key to query
|
||||
*
|
||||
* Fetches the value stored for @key in @map.
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -194,10 +209,10 @@ hb_map_get (const hb_map_t *map,
|
|||
|
||||
/**
|
||||
* hb_map_del:
|
||||
* @map: a map.
|
||||
* @key:
|
||||
*
|
||||
* @map: A map
|
||||
* @key: The key to delete
|
||||
*
|
||||
* Removes @key and its stored value from @map.
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -210,10 +225,12 @@ hb_map_del (hb_map_t *map,
|
|||
|
||||
/**
|
||||
* hb_map_has:
|
||||
* @map: a map.
|
||||
* @key:
|
||||
* @map: A map
|
||||
* @key: The key to query
|
||||
*
|
||||
* Tests whether @key is an element of @map.
|
||||
*
|
||||
* Return value: %true if @key is found in @map, false otherwise
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -227,9 +244,9 @@ hb_map_has (const hb_map_t *map,
|
|||
|
||||
/**
|
||||
* hb_map_clear:
|
||||
* @map: a map.
|
||||
*
|
||||
* @map: A map
|
||||
*
|
||||
* Clears out the contents of @map.
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -241,9 +258,11 @@ hb_map_clear (hb_map_t *map)
|
|||
|
||||
/**
|
||||
* hb_map_is_empty:
|
||||
* @map: a map.
|
||||
* @map: A map
|
||||
*
|
||||
* Tests whether @map is empty (contains no elements).
|
||||
*
|
||||
* Return value: %true if @map is empty
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
@ -255,9 +274,11 @@ hb_map_is_empty (const hb_map_t *map)
|
|||
|
||||
/**
|
||||
* hb_map_get_population:
|
||||
* @map: a map.
|
||||
* @map: A map
|
||||
*
|
||||
* Returns the number of key-value pairs in the map.
|
||||
*
|
||||
* Return value: The population of @map
|
||||
*
|
||||
* Since: 1.7.7
|
||||
**/
|
||||
|
|
|
@ -41,6 +41,12 @@ HB_BEGIN_DECLS
|
|||
*/
|
||||
#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;
|
||||
|
||||
|
||||
|
|
|
@ -177,6 +177,7 @@ struct hb_nonnull_ptr_t
|
|||
T * get () const { return v ? v : const_cast<T *> (&Null (T)); }
|
||||
T * get_raw () const { return v; }
|
||||
|
||||
private:
|
||||
T *v;
|
||||
};
|
||||
|
||||
|
|
|
@ -433,8 +433,6 @@ struct UnsizedArrayOf
|
|||
{ return hb_array (arrayZ, len); }
|
||||
hb_array_t<const Type> as_array (unsigned int len) const
|
||||
{ return hb_array (arrayZ, len); }
|
||||
operator hb_array_t< Type> () { return as_array (); }
|
||||
operator hb_array_t<const Type> () const { return as_array (); }
|
||||
|
||||
template <typename T>
|
||||
Type &lsearch (unsigned int len, const T &x, Type ¬_found = Crap (Type))
|
||||
|
|
|
@ -100,8 +100,7 @@ hb_ot_color_has_layers (hb_face_t *face);
|
|||
*
|
||||
* Since: 2.1.0
|
||||
**/
|
||||
typedef struct hb_ot_color_layer_t
|
||||
{
|
||||
typedef struct hb_ot_color_layer_t {
|
||||
hb_codepoint_t glyph;
|
||||
unsigned int color_index;
|
||||
} hb_ot_color_layer_t;
|
||||
|
|
|
@ -82,8 +82,7 @@ hb_ot_tag_from_language (hb_language_t language);
|
|||
* Since: 1.4.2
|
||||
* Deprecated: 2.2.0
|
||||
*/
|
||||
typedef struct hb_ot_var_axis_t
|
||||
{
|
||||
typedef struct hb_ot_var_axis_t {
|
||||
hb_tag_t tag;
|
||||
hb_ot_name_id_t name_id;
|
||||
float min_value;
|
||||
|
|
|
@ -306,6 +306,9 @@ _hb_ot_get_font_funcs ()
|
|||
|
||||
/**
|
||||
* hb_ot_font_set_funcs:
|
||||
* @font: #hb_font_t to work upon
|
||||
*
|
||||
* Sets the font functions to use when working with @font.
|
||||
*
|
||||
* Since: 0.9.28
|
||||
**/
|
||||
|
|
|
@ -379,12 +379,20 @@ struct Axis
|
|||
const BaseCoord **coord) const
|
||||
{
|
||||
const BaseScript &base_script = (this+baseScriptList).get_base_script (script_tag);
|
||||
if (!base_script.has_data ()) return false;
|
||||
if (!base_script.has_data ())
|
||||
{
|
||||
*coord = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (likely (coord))
|
||||
{
|
||||
unsigned int tag_index = 0;
|
||||
(this+baseTagList).bfind (baseline_tag, &tag_index);
|
||||
if (!(this+baseTagList).bfind (baseline_tag, &tag_index))
|
||||
{
|
||||
*coord = nullptr;
|
||||
return false;
|
||||
}
|
||||
*coord = &base_script.get_base_coord (tag_index);
|
||||
}
|
||||
|
||||
|
@ -398,7 +406,11 @@ struct Axis
|
|||
const BaseCoord **max_coord) const
|
||||
{
|
||||
const BaseScript &base_script = (this+baseScriptList).get_base_script (script_tag);
|
||||
if (!base_script.has_data ()) return false;
|
||||
if (!base_script.has_data ())
|
||||
{
|
||||
*min_coord = *max_coord = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
||||
base_script.get_min_max (language_tag).get_min_max (feature_tag, min_coord, max_coord);
|
||||
|
||||
|
|
|
@ -2537,7 +2537,10 @@ struct VariationStore
|
|||
|
||||
for (unsigned i = 0; i < inner_maps.length; i++)
|
||||
inner_maps[i].fini ();
|
||||
return_trace (bool (varstore_prime->dataSets));
|
||||
|
||||
return_trace (
|
||||
!c->serializer->in_error()
|
||||
&& varstore_prime->dataSets);
|
||||
}
|
||||
|
||||
unsigned int get_region_index_count (unsigned int ivs) const
|
||||
|
|
|
@ -1859,7 +1859,7 @@ struct ContextFormat2
|
|||
|
||||
const hb_map_t *lookup_map = c->table_tag == HB_OT_TAG_GSUB ? c->plan->gsub_lookups : c->plan->gpos_lookups;
|
||||
bool ret = true;
|
||||
unsigned non_zero_index = 0, index = 0;
|
||||
int non_zero_index = 0, index = 0;
|
||||
for (const hb_pair_t<unsigned, const OffsetTo<RuleSet>&> _ : + hb_enumerate (ruleSet)
|
||||
| hb_filter (klass_map, hb_first))
|
||||
{
|
||||
|
@ -3378,7 +3378,11 @@ struct GSUBGPOS
|
|||
|
||||
this->accels = (hb_ot_layout_lookup_accelerator_t *) calloc (this->lookup_count, sizeof (hb_ot_layout_lookup_accelerator_t));
|
||||
if (unlikely (!this->accels))
|
||||
{
|
||||
this->lookup_count = 0;
|
||||
this->table.destroy ();
|
||||
this->table = hb_blob_get_empty ();
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < this->lookup_count; i++)
|
||||
this->accels[i].init (table->get_lookup (i));
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
* Tests whether a face includes any kerning data in the 'kern' table.
|
||||
* Does NOT test for kerning lookups in the GPOS table.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
* Return value: %true if data found, false otherwise
|
||||
*
|
||||
**/
|
||||
bool
|
||||
|
@ -92,7 +92,7 @@ hb_ot_layout_has_kerning (hb_face_t *face)
|
|||
* Tests whether a face includes any state-machine kerning in the 'kern' table.
|
||||
* Does NOT examine the GPOS table.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
* Return value: %true if data found, false otherwise
|
||||
*
|
||||
**/
|
||||
bool
|
||||
|
@ -112,7 +112,7 @@ hb_ot_layout_has_machine_kerning (hb_face_t *face)
|
|||
*
|
||||
* Does NOT examine the GPOS table.
|
||||
*
|
||||
* Return value: true is data found, false otherwise
|
||||
* Return value: %true is data found, false otherwise
|
||||
*
|
||||
**/
|
||||
bool
|
||||
|
@ -268,7 +268,7 @@ _hb_ot_layout_set_glyph_props (hb_font_t *font,
|
|||
*
|
||||
* Tests whether a face has any glyph classes defined in its GDEF table.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
* Return value: %true if data found, false otherwise
|
||||
*
|
||||
**/
|
||||
hb_bool_t
|
||||
|
@ -444,7 +444,7 @@ hb_ot_layout_table_get_script_tags (hb_face_t *face,
|
|||
* Fetches the index if a given script tag in the specified face's GSUB table
|
||||
* or GPOS table.
|
||||
*
|
||||
* Return value: true if the script is found, false otherwise
|
||||
* Return value: %true if the script is found, false otherwise
|
||||
*
|
||||
**/
|
||||
hb_bool_t
|
||||
|
@ -598,7 +598,7 @@ hb_ot_layout_table_get_feature_tags (hb_face_t *face,
|
|||
* Fetches the index for a given feature tag in the specified face's GSUB table
|
||||
* or GPOS table.
|
||||
*
|
||||
* Return value: true if the feature is found, false otherwise
|
||||
* Return value: %true if the feature is found, false otherwise
|
||||
**/
|
||||
bool
|
||||
hb_ot_layout_table_find_feature (hb_face_t *face,
|
||||
|
@ -663,7 +663,7 @@ hb_ot_layout_script_get_language_tags (hb_face_t *face,
|
|||
* Fetches the index of a given language tag in the specified face's GSUB table
|
||||
* or GPOS table, underneath the specified script tag.
|
||||
*
|
||||
* Return value: true if the language tag is found, false otherwise
|
||||
* Return value: %true if the language tag is found, false otherwise
|
||||
*
|
||||
* Since: ??
|
||||
* Deprecated: ??
|
||||
|
@ -697,7 +697,7 @@ hb_ot_layout_script_find_language (hb_face_t *face,
|
|||
* Fetches the index of a given language tag in the specified face's GSUB table
|
||||
* or GPOS table, underneath the specified script index.
|
||||
*
|
||||
* Return value: true if the language tag is found, false otherwise
|
||||
* Return value: %true if the language tag is found, false otherwise
|
||||
*
|
||||
* Since: 2.0.0
|
||||
**/
|
||||
|
@ -739,7 +739,7 @@ hb_ot_layout_script_select_language (hb_face_t *face,
|
|||
* Fetches the index of a requested feature in the given face's GSUB or GPOS table,
|
||||
* underneath the specified script and language.
|
||||
*
|
||||
* Return value: true if the feature is found, false otherwise
|
||||
* Return value: %true if the feature is found, false otherwise
|
||||
*
|
||||
**/
|
||||
hb_bool_t
|
||||
|
@ -770,7 +770,7 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face,
|
|||
* Fetches the tag of a requested feature index in the given face's GSUB or GPOS table,
|
||||
* underneath the specified script and language.
|
||||
*
|
||||
* Return value: true if the feature is found, false otherwise
|
||||
* Return value: %true if the feature is found, false otherwise
|
||||
*
|
||||
* Since: 0.9.30
|
||||
**/
|
||||
|
@ -877,7 +877,7 @@ hb_ot_layout_language_get_feature_tags (hb_face_t *face,
|
|||
* Fetches the index of a given feature tag in the specified face's GSUB table
|
||||
* or GPOS table, underneath the specified script and language.
|
||||
*
|
||||
* Return value: true if the feature is found, false otherwise
|
||||
* Return value: %true if the feature is found, false otherwise
|
||||
*
|
||||
**/
|
||||
hb_bool_t
|
||||
|
@ -1196,7 +1196,7 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
|
|||
* @glyphs_before: (out): Array of glyphs preceding the substitution range
|
||||
* @glyphs_input: (out): Array of input glyphs that would be substituted by the lookup
|
||||
* @glyphs_after: (out): Array of glyphs following the substitution range
|
||||
* @glyphs_output: (out): Array of glyphs that would be the substitued output of the lookup
|
||||
* @glyphs_output: (out): Array of glyphs that would be the substituted output of the lookup
|
||||
*
|
||||
* Fetches a list of all glyphs affected by the specified lookup in the
|
||||
* specified face's GSUB table or GPOS table.
|
||||
|
@ -1245,7 +1245,7 @@ hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
|
|||
* @face: #hb_face_t to work upon
|
||||
* @table_tag: HB_OT_TAG_GSUB or HB_OT_TAG_GPOS
|
||||
* @coords: The variation coordinates to query
|
||||
* @num_coords: The number of variation coorinates
|
||||
* @num_coords: The number of variation coordinates
|
||||
* @variations_index: (out): The array of feature variations found for the query
|
||||
*
|
||||
* Fetches a list of feature variations in the specified face's GSUB table
|
||||
|
@ -1310,7 +1310,7 @@ hb_ot_layout_feature_with_variations_get_lookups (hb_face_t *face,
|
|||
*
|
||||
* Tests whether the specified face includes any GSUB substitutions.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
* Return value: %true if data found, false otherwise
|
||||
*
|
||||
**/
|
||||
hb_bool_t
|
||||
|
@ -1331,7 +1331,7 @@ hb_ot_layout_has_substitution (hb_face_t *face)
|
|||
* Tests whether a specified lookup in the specified face would
|
||||
* trigger a substitution on the given glyph sequence.
|
||||
*
|
||||
* Return value: true if a substitution would be triggered, false otherwise
|
||||
* Return value: %true if a substitution would be triggered, false otherwise
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -1488,7 +1488,7 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
|
|||
* hb_ot_layout_has_positioning:
|
||||
* @face: #hb_face_t to work upon
|
||||
*
|
||||
* Return value: true if the face has GPOS data, false otherwise
|
||||
* Return value: %true if the face has GPOS data, false otherwise
|
||||
*
|
||||
**/
|
||||
hb_bool_t
|
||||
|
@ -1561,7 +1561,7 @@ hb_ot_layout_position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer)
|
|||
* For more information on this distinction, see the [`size` feature documentation](
|
||||
* https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size).
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
* Return value: %true if data found, false otherwise
|
||||
*
|
||||
* Since: 0.9.10
|
||||
**/
|
||||
|
@ -1625,7 +1625,7 @@ hb_ot_layout_get_size_params (hb_face_t *face,
|
|||
* Fetches name indices from feature parameters for "Stylistic Set" ('ssXX') or
|
||||
* "Character Variant" ('cvXX') features.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
* Return value: %true if data found, false otherwise
|
||||
*
|
||||
* Since: 2.0.0
|
||||
**/
|
||||
|
@ -1881,7 +1881,7 @@ void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, h
|
|||
GSUBProxy proxy (font->face);
|
||||
if (!buffer->message (font, "start table GSUB")) return;
|
||||
apply (proxy, plan, font, buffer);
|
||||
(void)buffer->message (font, "end table GSUB");
|
||||
(void) buffer->message (font, "end table GSUB");
|
||||
}
|
||||
|
||||
void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const
|
||||
|
@ -1889,7 +1889,7 @@ void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_
|
|||
GPOSProxy proxy (font->face);
|
||||
if (!buffer->message (font, "start table GPOS")) return;
|
||||
apply (proxy, plan, font, buffer);
|
||||
(void)buffer->message (font, "end table GPOS");
|
||||
(void) buffer->message (font, "end table GPOS");
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -140,12 +140,12 @@ struct hb_ot_map_t
|
|||
void get_stage_lookups (unsigned int table_index, unsigned int stage,
|
||||
const struct lookup_map_t **plookups, unsigned int *lookup_count) const
|
||||
{
|
||||
if (unlikely (stage == UINT_MAX)) {
|
||||
if (unlikely (stage > stages[table_index].length))
|
||||
{
|
||||
*plookups = nullptr;
|
||||
*lookup_count = 0;
|
||||
return;
|
||||
}
|
||||
assert (stage <= stages[table_index].length);
|
||||
unsigned int start = stage ? stages[table_index][stage - 1].last_lookup : 0;
|
||||
unsigned int end = stage < stages[table_index].length ? stages[table_index][stage].last_lookup : lookups[table_index].length;
|
||||
*plookups = end == start ? nullptr : &lookups[table_index][start];
|
||||
|
|
|
@ -33,6 +33,15 @@
|
|||
#include "hb-ot-face.hh"
|
||||
|
||||
|
||||
/**
|
||||
* SECTION:hb-ot-metrics
|
||||
* @title: hb-ot-metrics
|
||||
* @short_description: OpenType Metrics
|
||||
* @include: hb-ot.h
|
||||
*
|
||||
* Functions for fetching metrics from fonts.
|
||||
**/
|
||||
|
||||
static float
|
||||
_fix_ascender_descender (float value, hb_ot_metrics_tag_t metrics_tag)
|
||||
{
|
||||
|
|
|
@ -88,8 +88,7 @@ typedef unsigned int hb_ot_name_id_t;
|
|||
*
|
||||
* Since: 2.1.0
|
||||
**/
|
||||
typedef struct hb_ot_name_entry_t
|
||||
{
|
||||
typedef struct hb_ot_name_entry_t {
|
||||
hb_ot_name_id_t name_id;
|
||||
/*< private >*/
|
||||
hb_var_int_t var;
|
||||
|
|
|
@ -1006,11 +1006,14 @@ initial_reordering_indic (const hb_ot_shape_plan_t *plan,
|
|||
hb_font_t *font,
|
||||
hb_buffer_t *buffer)
|
||||
{
|
||||
if (!buffer->message (font, "start reordering indic initial"))
|
||||
return;
|
||||
update_consonant_positions_indic (plan, font, buffer);
|
||||
insert_dotted_circles_indic (plan, font, buffer);
|
||||
|
||||
foreach_syllable (buffer, start, end)
|
||||
initial_reordering_syllable_indic (plan, font->face, buffer, start, end);
|
||||
(void) buffer->message (font, "end reordering indic initial");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1485,8 +1488,11 @@ final_reordering_indic (const hb_ot_shape_plan_t *plan,
|
|||
unsigned int count = buffer->len;
|
||||
if (unlikely (!count)) return;
|
||||
|
||||
foreach_syllable (buffer, start, end)
|
||||
final_reordering_syllable_indic (plan, buffer, start, end);
|
||||
if (buffer->message (font, "start reordering indic final")) {
|
||||
foreach_syllable (buffer, start, end)
|
||||
final_reordering_syllable_indic (plan, buffer, start, end);
|
||||
(void) buffer->message (font, "end reordering indic final");
|
||||
}
|
||||
|
||||
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_category);
|
||||
HB_BUFFER_DEALLOCATE_VAR (buffer, indic_position);
|
||||
|
|
|
@ -389,11 +389,13 @@ reorder_khmer (const hb_ot_shape_plan_t *plan,
|
|||
hb_font_t *font,
|
||||
hb_buffer_t *buffer)
|
||||
{
|
||||
insert_dotted_circles_khmer (plan, font, buffer);
|
||||
|
||||
foreach_syllable (buffer, start, end)
|
||||
reorder_syllable_khmer (plan, font->face, buffer, start, end);
|
||||
if (buffer->message (font, "start reordering khmer")) {
|
||||
insert_dotted_circles_khmer (plan, font, buffer);
|
||||
|
||||
foreach_syllable (buffer, start, end)
|
||||
reorder_syllable_khmer (plan, font->face, buffer, start, end);
|
||||
(void) buffer->message (font, "end reordering khmer");
|
||||
}
|
||||
HB_BUFFER_DEALLOCATE_VAR (buffer, khmer_category);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* Copyright © 2019,2020 David Corbett
|
||||
*
|
||||
* 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_SHAPE_COMPLEX_MACHINE_INDEX_HH
|
||||
#define HB_OT_SHAPE_COMPLEX_MACHINE_INDEX_HH
|
||||
|
||||
#include "hb.hh"
|
||||
|
||||
|
||||
template <typename Iter>
|
||||
struct machine_index_t :
|
||||
hb_iter_with_fallback_t<machine_index_t<Iter>,
|
||||
typename Iter::item_t>
|
||||
{
|
||||
machine_index_t (const Iter& it) : it (it) {}
|
||||
machine_index_t (const machine_index_t& o) : it (o.it) {}
|
||||
|
||||
static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
|
||||
static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
|
||||
|
||||
typename Iter::item_t __item__ () const { return *it; }
|
||||
typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
|
||||
unsigned __len__ () const { return it.len (); }
|
||||
void __next__ () { ++it; }
|
||||
void __forward__ (unsigned n) { it += n; }
|
||||
void __prev__ () { --it; }
|
||||
void __rewind__ (unsigned n) { it -= n; }
|
||||
void operator = (unsigned n)
|
||||
{ unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index - n; }
|
||||
void operator = (const machine_index_t& o) { *this = (*o.it).first; }
|
||||
bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
|
||||
bool operator != (const machine_index_t& o) const { return !(*this == o); }
|
||||
|
||||
private:
|
||||
Iter it;
|
||||
};
|
||||
struct
|
||||
{
|
||||
template <typename Iter,
|
||||
hb_requires (hb_is_iterable (Iter))>
|
||||
machine_index_t<hb_iter_type<Iter>>
|
||||
operator () (Iter&& it) const
|
||||
{ return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
|
||||
}
|
||||
HB_FUNCOBJ (machine_index);
|
||||
|
||||
|
||||
#endif /* HB_OT_SHAPE_COMPLEX_MACHINE_INDEX_HH */
|
|
@ -97,12 +97,6 @@ collect_features_myanmar (hb_ot_shape_planner_t *plan)
|
|||
map->enable_feature (myanmar_other_features[i], F_MANUAL_ZWJ);
|
||||
}
|
||||
|
||||
static void
|
||||
override_features_myanmar (hb_ot_shape_planner_t *plan)
|
||||
{
|
||||
plan->map.disable_feature (HB_TAG('l','i','g','a'));
|
||||
}
|
||||
|
||||
|
||||
enum myanmar_syllable_type_t {
|
||||
myanmar_consonant_syllable,
|
||||
|
@ -333,10 +327,13 @@ reorder_myanmar (const hb_ot_shape_plan_t *plan,
|
|||
hb_font_t *font,
|
||||
hb_buffer_t *buffer)
|
||||
{
|
||||
insert_dotted_circles_myanmar (plan, font, buffer);
|
||||
if (buffer->message (font, "start reordering myanmar")) {
|
||||
insert_dotted_circles_myanmar (plan, font, buffer);
|
||||
|
||||
foreach_syllable (buffer, start, end)
|
||||
reorder_syllable_myanmar (plan, font->face, buffer, start, end);
|
||||
foreach_syllable (buffer, start, end)
|
||||
reorder_syllable_myanmar (plan, font->face, buffer, start, end);
|
||||
(void) buffer->message (font, "end reordering myanmar");
|
||||
}
|
||||
|
||||
HB_BUFFER_DEALLOCATE_VAR (buffer, myanmar_category);
|
||||
HB_BUFFER_DEALLOCATE_VAR (buffer, myanmar_position);
|
||||
|
@ -346,7 +343,7 @@ reorder_myanmar (const hb_ot_shape_plan_t *plan,
|
|||
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
|
||||
{
|
||||
collect_features_myanmar,
|
||||
override_features_myanmar,
|
||||
nullptr, /* override_features */
|
||||
nullptr, /* data_create */
|
||||
nullptr, /* data_destroy */
|
||||
nullptr, /* preprocess_text */
|
||||
|
|
|
@ -32,367 +32,326 @@
|
|||
#define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH
|
||||
|
||||
#include "hb.hh"
|
||||
#include "hb-ot-shape-complex-machine-index.hh"
|
||||
|
||||
|
||||
#line 38 "hb-ot-shape-complex-use-machine.hh"
|
||||
#line 39 "hb-ot-shape-complex-use-machine.hh"
|
||||
static const unsigned char _use_syllable_machine_trans_keys[] = {
|
||||
12u, 48u, 1u, 15u, 1u, 1u, 12u, 48u, 1u, 1u, 0u, 48u, 21u, 21u, 11u, 48u,
|
||||
11u, 48u, 1u, 15u, 1u, 1u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u,
|
||||
26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u,
|
||||
23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u,
|
||||
1u, 48u, 11u, 48u, 13u, 21u, 4u, 4u, 13u, 13u, 11u, 48u, 11u, 48u, 41u, 42u,
|
||||
42u, 42u, 11u, 48u, 11u, 48u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u,
|
||||
45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u, 23u, 48u,
|
||||
23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u, 1u, 15u,
|
||||
4u, 4u, 13u, 21u, 13u, 13u, 12u, 48u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u,
|
||||
21u, 42u, 1u, 5u, 0
|
||||
1u, 1u, 1u, 1u, 0u, 51u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
|
||||
24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
|
||||
1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
|
||||
11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u,
|
||||
22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u,
|
||||
24u, 48u, 24u, 48u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
|
||||
22u, 48u, 11u, 48u, 1u, 48u, 1u, 1u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u,
|
||||
41u, 42u, 42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
|
||||
};
|
||||
|
||||
static const char _use_syllable_machine_key_spans[] = {
|
||||
37, 15, 1, 37, 1, 49, 1, 38,
|
||||
38, 15, 1, 38, 27, 26, 24, 23,
|
||||
22, 2, 1, 25, 25, 25, 1, 25,
|
||||
26, 26, 26, 27, 27, 27, 27, 38,
|
||||
48, 38, 9, 1, 1, 38, 38, 2,
|
||||
1, 38, 38, 27, 26, 24, 23, 22,
|
||||
2, 1, 25, 25, 25, 25, 26, 26,
|
||||
26, 27, 27, 27, 27, 38, 48, 15,
|
||||
1, 9, 1, 37, 48, 38, 2, 1,
|
||||
22, 5
|
||||
1, 1, 52, 38, 38, 1, 27, 26,
|
||||
24, 23, 22, 2, 1, 25, 25, 25,
|
||||
1, 25, 26, 26, 26, 27, 27, 27,
|
||||
38, 48, 1, 1, 38, 2, 1, 38,
|
||||
27, 26, 24, 23, 22, 2, 1, 25,
|
||||
25, 25, 25, 26, 26, 26, 27, 27,
|
||||
27, 38, 48, 1, 1, 1, 48, 38,
|
||||
2, 1, 5, 3, 4, 3
|
||||
};
|
||||
|
||||
static const short _use_syllable_machine_index_offsets[] = {
|
||||
0, 38, 54, 56, 94, 96, 146, 148,
|
||||
187, 226, 242, 244, 283, 311, 338, 363,
|
||||
387, 410, 413, 415, 441, 467, 493, 495,
|
||||
521, 548, 575, 602, 630, 658, 686, 714,
|
||||
753, 802, 841, 851, 853, 855, 894, 933,
|
||||
936, 938, 977, 1016, 1044, 1071, 1096, 1120,
|
||||
1143, 1146, 1148, 1174, 1200, 1226, 1252, 1279,
|
||||
1306, 1333, 1361, 1389, 1417, 1445, 1484, 1533,
|
||||
1549, 1551, 1561, 1563, 1601, 1650, 1689, 1692,
|
||||
1694, 1717
|
||||
0, 2, 4, 57, 96, 135, 137, 165,
|
||||
192, 217, 241, 264, 267, 269, 295, 321,
|
||||
347, 349, 375, 402, 429, 456, 484, 512,
|
||||
540, 579, 628, 630, 632, 671, 674, 676,
|
||||
715, 743, 770, 795, 819, 842, 845, 847,
|
||||
873, 899, 925, 951, 978, 1005, 1032, 1060,
|
||||
1088, 1116, 1155, 1204, 1206, 1208, 1210, 1259,
|
||||
1298, 1301, 1303, 1309, 1313, 1318
|
||||
};
|
||||
|
||||
static const char _use_syllable_machine_indicies[] = {
|
||||
1, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 1, 0, 3, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 4, 2, 3, 2,
|
||||
6, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5,
|
||||
6, 5, 5, 5, 6, 5, 7, 5,
|
||||
8, 9, 10, 8, 11, 12, 10, 10,
|
||||
10, 10, 10, 3, 13, 14, 10, 15,
|
||||
8, 8, 16, 17, 10, 10, 18, 19,
|
||||
20, 21, 22, 23, 24, 18, 25, 26,
|
||||
27, 28, 29, 30, 10, 31, 32, 33,
|
||||
10, 34, 35, 36, 37, 38, 39, 40,
|
||||
13, 10, 42, 41, 44, 1, 43, 43,
|
||||
45, 43, 43, 43, 43, 43, 46, 47,
|
||||
48, 49, 50, 51, 52, 53, 47, 54,
|
||||
46, 55, 56, 57, 58, 43, 59, 60,
|
||||
61, 43, 43, 43, 43, 62, 63, 64,
|
||||
65, 1, 43, 44, 1, 43, 43, 45,
|
||||
43, 43, 43, 43, 43, 66, 47, 48,
|
||||
49, 50, 51, 52, 53, 47, 54, 55,
|
||||
55, 56, 57, 58, 43, 59, 60, 61,
|
||||
43, 43, 43, 43, 62, 63, 64, 65,
|
||||
1, 43, 44, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67,
|
||||
68, 67, 44, 67, 44, 1, 43, 43,
|
||||
45, 43, 43, 43, 43, 43, 43, 47,
|
||||
48, 49, 50, 51, 52, 53, 47, 54,
|
||||
55, 55, 56, 57, 58, 43, 59, 60,
|
||||
61, 43, 43, 43, 43, 62, 63, 64,
|
||||
65, 1, 43, 47, 48, 49, 50, 51,
|
||||
43, 43, 43, 43, 43, 43, 56, 57,
|
||||
58, 43, 59, 60, 61, 43, 43, 43,
|
||||
43, 48, 63, 64, 65, 69, 43, 48,
|
||||
49, 50, 51, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 59, 60, 61,
|
||||
43, 43, 43, 43, 43, 63, 64, 65,
|
||||
69, 43, 49, 50, 51, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 63,
|
||||
64, 65, 43, 50, 51, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 63,
|
||||
64, 65, 43, 51, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 63, 64,
|
||||
65, 43, 63, 64, 43, 64, 43, 49,
|
||||
50, 51, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 59, 60, 61, 43,
|
||||
43, 43, 43, 43, 63, 64, 65, 69,
|
||||
43, 49, 50, 51, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 60,
|
||||
61, 43, 43, 43, 43, 43, 63, 64,
|
||||
65, 69, 43, 49, 50, 51, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 61, 43, 43, 43, 43, 43,
|
||||
63, 64, 65, 69, 43, 71, 70, 49,
|
||||
50, 51, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 43, 63, 64, 65, 69,
|
||||
43, 48, 49, 50, 51, 43, 43, 43,
|
||||
43, 43, 43, 56, 57, 58, 43, 59,
|
||||
60, 61, 43, 43, 43, 43, 48, 63,
|
||||
64, 65, 69, 43, 48, 49, 50, 51,
|
||||
43, 43, 43, 43, 43, 43, 43, 57,
|
||||
58, 43, 59, 60, 61, 43, 43, 43,
|
||||
43, 48, 63, 64, 65, 69, 43, 48,
|
||||
49, 50, 51, 43, 43, 43, 43, 43,
|
||||
43, 43, 43, 58, 43, 59, 60, 61,
|
||||
43, 43, 43, 43, 48, 63, 64, 65,
|
||||
69, 43, 47, 48, 49, 50, 51, 43,
|
||||
53, 47, 43, 43, 43, 56, 57, 58,
|
||||
43, 59, 60, 61, 43, 43, 43, 43,
|
||||
48, 63, 64, 65, 69, 43, 47, 48,
|
||||
49, 50, 51, 43, 72, 47, 43, 43,
|
||||
43, 56, 57, 58, 43, 59, 60, 61,
|
||||
43, 43, 43, 43, 48, 63, 64, 65,
|
||||
69, 43, 47, 48, 49, 50, 51, 43,
|
||||
43, 47, 43, 43, 43, 56, 57, 58,
|
||||
43, 59, 60, 61, 43, 43, 43, 43,
|
||||
48, 63, 64, 65, 69, 43, 47, 48,
|
||||
49, 50, 51, 52, 53, 47, 43, 43,
|
||||
43, 56, 57, 58, 43, 59, 60, 61,
|
||||
43, 43, 43, 43, 48, 63, 64, 65,
|
||||
69, 43, 44, 1, 43, 43, 45, 43,
|
||||
43, 43, 43, 43, 43, 47, 48, 49,
|
||||
50, 51, 52, 53, 47, 54, 43, 55,
|
||||
56, 57, 58, 43, 59, 60, 61, 43,
|
||||
43, 43, 43, 62, 63, 64, 65, 1,
|
||||
43, 44, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 68,
|
||||
67, 67, 67, 67, 67, 67, 67, 48,
|
||||
49, 50, 51, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 59, 60, 61,
|
||||
67, 67, 67, 67, 67, 63, 64, 65,
|
||||
69, 67, 44, 1, 43, 43, 45, 43,
|
||||
43, 43, 43, 43, 43, 47, 48, 49,
|
||||
50, 51, 52, 53, 47, 54, 46, 55,
|
||||
56, 57, 58, 43, 59, 60, 61, 43,
|
||||
43, 43, 43, 62, 63, 64, 65, 1,
|
||||
43, 74, 73, 73, 73, 73, 73, 73,
|
||||
73, 75, 73, 11, 76, 74, 73, 44,
|
||||
1, 43, 43, 45, 43, 43, 43, 43,
|
||||
43, 77, 47, 48, 49, 50, 51, 52,
|
||||
53, 47, 54, 46, 55, 56, 57, 58,
|
||||
43, 59, 60, 61, 43, 78, 79, 43,
|
||||
62, 63, 64, 65, 1, 43, 44, 1,
|
||||
43, 43, 45, 43, 43, 43, 43, 43,
|
||||
43, 47, 48, 49, 50, 51, 52, 53,
|
||||
47, 54, 46, 55, 56, 57, 58, 43,
|
||||
59, 60, 61, 43, 78, 79, 43, 62,
|
||||
63, 64, 65, 1, 43, 78, 79, 80,
|
||||
79, 80, 3, 6, 81, 81, 82, 81,
|
||||
81, 81, 81, 81, 83, 18, 19, 20,
|
||||
21, 22, 23, 24, 18, 25, 27, 27,
|
||||
28, 29, 30, 81, 31, 32, 33, 81,
|
||||
81, 81, 81, 37, 38, 39, 40, 6,
|
||||
81, 3, 6, 81, 81, 82, 81, 81,
|
||||
81, 81, 81, 81, 18, 19, 20, 21,
|
||||
22, 23, 24, 18, 25, 27, 27, 28,
|
||||
29, 30, 81, 31, 32, 33, 81, 81,
|
||||
81, 81, 37, 38, 39, 40, 6, 81,
|
||||
18, 19, 20, 21, 22, 81, 81, 81,
|
||||
81, 81, 81, 28, 29, 30, 81, 31,
|
||||
32, 33, 81, 81, 81, 81, 19, 38,
|
||||
39, 40, 84, 81, 19, 20, 21, 22,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 31, 32, 33, 81, 81, 81,
|
||||
81, 81, 38, 39, 40, 84, 81, 20,
|
||||
21, 22, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 38, 39, 40, 81,
|
||||
21, 22, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 38, 39, 40, 81,
|
||||
22, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 38, 39, 40, 81, 38,
|
||||
39, 81, 39, 81, 20, 21, 22, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 31, 32, 33, 81, 81, 81, 81,
|
||||
81, 38, 39, 40, 84, 81, 20, 21,
|
||||
22, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 32, 33, 81, 81,
|
||||
81, 81, 81, 38, 39, 40, 84, 81,
|
||||
20, 21, 22, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 33,
|
||||
81, 81, 81, 81, 81, 38, 39, 40,
|
||||
84, 81, 20, 21, 22, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 38,
|
||||
39, 40, 84, 81, 19, 20, 21, 22,
|
||||
81, 81, 81, 81, 81, 81, 28, 29,
|
||||
30, 81, 31, 32, 33, 81, 81, 81,
|
||||
81, 19, 38, 39, 40, 84, 81, 19,
|
||||
20, 21, 22, 81, 81, 81, 81, 81,
|
||||
81, 81, 29, 30, 81, 31, 32, 33,
|
||||
81, 81, 81, 81, 19, 38, 39, 40,
|
||||
84, 81, 19, 20, 21, 22, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 30, 81,
|
||||
31, 32, 33, 81, 81, 81, 81, 19,
|
||||
38, 39, 40, 84, 81, 18, 19, 20,
|
||||
21, 22, 81, 24, 18, 81, 81, 81,
|
||||
28, 29, 30, 81, 31, 32, 33, 81,
|
||||
81, 81, 81, 19, 38, 39, 40, 84,
|
||||
81, 18, 19, 20, 21, 22, 81, 85,
|
||||
18, 81, 81, 81, 28, 29, 30, 81,
|
||||
31, 32, 33, 81, 81, 81, 81, 19,
|
||||
38, 39, 40, 84, 81, 18, 19, 20,
|
||||
21, 22, 81, 81, 18, 81, 81, 81,
|
||||
28, 29, 30, 81, 31, 32, 33, 81,
|
||||
81, 81, 81, 19, 38, 39, 40, 84,
|
||||
81, 18, 19, 20, 21, 22, 23, 24,
|
||||
18, 81, 81, 81, 28, 29, 30, 81,
|
||||
31, 32, 33, 81, 81, 81, 81, 19,
|
||||
38, 39, 40, 84, 81, 3, 6, 81,
|
||||
81, 82, 81, 81, 81, 81, 81, 81,
|
||||
18, 19, 20, 21, 22, 23, 24, 18,
|
||||
25, 81, 27, 28, 29, 30, 81, 31,
|
||||
32, 33, 81, 81, 81, 81, 37, 38,
|
||||
39, 40, 6, 81, 3, 81, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
81, 81, 4, 81, 81, 81, 81, 81,
|
||||
81, 81, 19, 20, 21, 22, 81, 81,
|
||||
81, 81, 81, 81, 81, 81, 81, 81,
|
||||
31, 32, 33, 81, 81, 81, 81, 81,
|
||||
38, 39, 40, 84, 81, 3, 86, 86,
|
||||
86, 86, 86, 86, 86, 86, 86, 86,
|
||||
86, 86, 86, 4, 86, 87, 81, 14,
|
||||
81, 81, 81, 81, 81, 81, 81, 88,
|
||||
81, 14, 81, 6, 86, 86, 86, 86,
|
||||
86, 86, 86, 86, 86, 86, 86, 86,
|
||||
86, 86, 86, 86, 86, 86, 86, 86,
|
||||
86, 86, 86, 86, 86, 86, 86, 86,
|
||||
86, 86, 86, 6, 86, 86, 86, 6,
|
||||
86, 9, 81, 81, 81, 9, 81, 81,
|
||||
81, 81, 81, 3, 6, 14, 81, 82,
|
||||
81, 81, 81, 81, 81, 81, 18, 19,
|
||||
20, 21, 22, 23, 24, 18, 25, 26,
|
||||
27, 28, 29, 30, 81, 31, 32, 33,
|
||||
81, 34, 35, 81, 37, 38, 39, 40,
|
||||
6, 81, 3, 6, 81, 81, 82, 81,
|
||||
81, 81, 81, 81, 81, 18, 19, 20,
|
||||
21, 22, 23, 24, 18, 25, 26, 27,
|
||||
28, 29, 30, 81, 31, 32, 33, 81,
|
||||
81, 81, 81, 37, 38, 39, 40, 6,
|
||||
81, 34, 35, 81, 35, 81, 78, 80,
|
||||
80, 80, 80, 80, 80, 80, 80, 80,
|
||||
80, 80, 80, 80, 80, 80, 80, 80,
|
||||
80, 80, 78, 79, 80, 9, 86, 86,
|
||||
86, 9, 86, 0
|
||||
1, 0, 2, 0, 3, 4, 5, 5,
|
||||
6, 7, 5, 5, 5, 5, 5, 1,
|
||||
8, 9, 5, 5, 5, 5, 10, 11,
|
||||
5, 5, 12, 13, 14, 15, 16, 17,
|
||||
18, 12, 19, 20, 21, 22, 23, 24,
|
||||
5, 25, 26, 27, 5, 28, 29, 30,
|
||||
31, 32, 33, 34, 8, 35, 5, 36,
|
||||
5, 38, 39, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 40, 41, 42, 43,
|
||||
44, 45, 46, 40, 47, 4, 48, 49,
|
||||
50, 51, 37, 52, 53, 54, 37, 37,
|
||||
37, 37, 55, 56, 57, 58, 39, 37,
|
||||
38, 39, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 40, 41, 42, 43, 44,
|
||||
45, 46, 40, 47, 48, 48, 49, 50,
|
||||
51, 37, 52, 53, 54, 37, 37, 37,
|
||||
37, 55, 56, 57, 58, 39, 37, 38,
|
||||
59, 40, 41, 42, 43, 44, 37, 37,
|
||||
37, 37, 37, 37, 49, 50, 51, 37,
|
||||
52, 53, 54, 37, 37, 37, 37, 41,
|
||||
56, 57, 58, 60, 37, 41, 42, 43,
|
||||
44, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 52, 53, 54, 37, 37,
|
||||
37, 37, 37, 56, 57, 58, 60, 37,
|
||||
42, 43, 44, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 56, 57, 58,
|
||||
37, 43, 44, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 56, 57, 58,
|
||||
37, 44, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 56, 57, 58, 37,
|
||||
56, 57, 37, 57, 37, 42, 43, 44,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 52, 53, 54, 37, 37, 37,
|
||||
37, 37, 56, 57, 58, 60, 37, 42,
|
||||
43, 44, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 53, 54, 37,
|
||||
37, 37, 37, 37, 56, 57, 58, 60,
|
||||
37, 42, 43, 44, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
54, 37, 37, 37, 37, 37, 56, 57,
|
||||
58, 60, 37, 62, 61, 42, 43, 44,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 56, 57, 58, 60, 37, 41,
|
||||
42, 43, 44, 37, 37, 37, 37, 37,
|
||||
37, 49, 50, 51, 37, 52, 53, 54,
|
||||
37, 37, 37, 37, 41, 56, 57, 58,
|
||||
60, 37, 41, 42, 43, 44, 37, 37,
|
||||
37, 37, 37, 37, 37, 50, 51, 37,
|
||||
52, 53, 54, 37, 37, 37, 37, 41,
|
||||
56, 57, 58, 60, 37, 41, 42, 43,
|
||||
44, 37, 37, 37, 37, 37, 37, 37,
|
||||
37, 51, 37, 52, 53, 54, 37, 37,
|
||||
37, 37, 41, 56, 57, 58, 60, 37,
|
||||
40, 41, 42, 43, 44, 37, 46, 40,
|
||||
37, 37, 37, 49, 50, 51, 37, 52,
|
||||
53, 54, 37, 37, 37, 37, 41, 56,
|
||||
57, 58, 60, 37, 40, 41, 42, 43,
|
||||
44, 37, 37, 40, 37, 37, 37, 49,
|
||||
50, 51, 37, 52, 53, 54, 37, 37,
|
||||
37, 37, 41, 56, 57, 58, 60, 37,
|
||||
40, 41, 42, 43, 44, 45, 46, 40,
|
||||
37, 37, 37, 49, 50, 51, 37, 52,
|
||||
53, 54, 37, 37, 37, 37, 41, 56,
|
||||
57, 58, 60, 37, 38, 39, 37, 37,
|
||||
37, 37, 37, 37, 37, 37, 37, 40,
|
||||
41, 42, 43, 44, 45, 46, 40, 47,
|
||||
37, 48, 49, 50, 51, 37, 52, 53,
|
||||
54, 37, 37, 37, 37, 55, 56, 57,
|
||||
58, 39, 37, 38, 59, 59, 59, 59,
|
||||
59, 59, 59, 59, 59, 59, 59, 59,
|
||||
59, 59, 59, 59, 59, 59, 59, 59,
|
||||
59, 41, 42, 43, 44, 59, 59, 59,
|
||||
59, 59, 59, 59, 59, 59, 59, 52,
|
||||
53, 54, 59, 59, 59, 59, 59, 56,
|
||||
57, 58, 60, 59, 64, 63, 6, 65,
|
||||
38, 39, 37, 37, 37, 37, 37, 37,
|
||||
37, 37, 37, 40, 41, 42, 43, 44,
|
||||
45, 46, 40, 47, 4, 48, 49, 50,
|
||||
51, 37, 52, 53, 54, 37, 11, 66,
|
||||
37, 55, 56, 57, 58, 39, 37, 11,
|
||||
66, 67, 66, 67, 1, 69, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 12,
|
||||
13, 14, 15, 16, 17, 18, 12, 19,
|
||||
21, 21, 22, 23, 24, 68, 25, 26,
|
||||
27, 68, 68, 68, 68, 31, 32, 33,
|
||||
34, 69, 68, 12, 13, 14, 15, 16,
|
||||
68, 68, 68, 68, 68, 68, 22, 23,
|
||||
24, 68, 25, 26, 27, 68, 68, 68,
|
||||
68, 13, 32, 33, 34, 70, 68, 13,
|
||||
14, 15, 16, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 25, 26, 27,
|
||||
68, 68, 68, 68, 68, 32, 33, 34,
|
||||
70, 68, 14, 15, 16, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 32,
|
||||
33, 34, 68, 15, 16, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 32,
|
||||
33, 34, 68, 16, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 32, 33,
|
||||
34, 68, 32, 33, 68, 33, 68, 14,
|
||||
15, 16, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 25, 26, 27, 68,
|
||||
68, 68, 68, 68, 32, 33, 34, 70,
|
||||
68, 14, 15, 16, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 26,
|
||||
27, 68, 68, 68, 68, 68, 32, 33,
|
||||
34, 70, 68, 14, 15, 16, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 27, 68, 68, 68, 68, 68,
|
||||
32, 33, 34, 70, 68, 14, 15, 16,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 32, 33, 34, 70, 68, 13,
|
||||
14, 15, 16, 68, 68, 68, 68, 68,
|
||||
68, 22, 23, 24, 68, 25, 26, 27,
|
||||
68, 68, 68, 68, 13, 32, 33, 34,
|
||||
70, 68, 13, 14, 15, 16, 68, 68,
|
||||
68, 68, 68, 68, 68, 23, 24, 68,
|
||||
25, 26, 27, 68, 68, 68, 68, 13,
|
||||
32, 33, 34, 70, 68, 13, 14, 15,
|
||||
16, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 24, 68, 25, 26, 27, 68, 68,
|
||||
68, 68, 13, 32, 33, 34, 70, 68,
|
||||
12, 13, 14, 15, 16, 68, 18, 12,
|
||||
68, 68, 68, 22, 23, 24, 68, 25,
|
||||
26, 27, 68, 68, 68, 68, 13, 32,
|
||||
33, 34, 70, 68, 12, 13, 14, 15,
|
||||
16, 68, 68, 12, 68, 68, 68, 22,
|
||||
23, 24, 68, 25, 26, 27, 68, 68,
|
||||
68, 68, 13, 32, 33, 34, 70, 68,
|
||||
12, 13, 14, 15, 16, 17, 18, 12,
|
||||
68, 68, 68, 22, 23, 24, 68, 25,
|
||||
26, 27, 68, 68, 68, 68, 13, 32,
|
||||
33, 34, 70, 68, 1, 69, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 12,
|
||||
13, 14, 15, 16, 17, 18, 12, 19,
|
||||
68, 21, 22, 23, 24, 68, 25, 26,
|
||||
27, 68, 68, 68, 68, 31, 32, 33,
|
||||
34, 69, 68, 1, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 68,
|
||||
68, 13, 14, 15, 16, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 25,
|
||||
26, 27, 68, 68, 68, 68, 68, 32,
|
||||
33, 34, 70, 68, 1, 71, 72, 68,
|
||||
9, 68, 4, 68, 68, 68, 4, 68,
|
||||
68, 68, 68, 68, 1, 69, 9, 68,
|
||||
68, 68, 68, 68, 68, 68, 68, 12,
|
||||
13, 14, 15, 16, 17, 18, 12, 19,
|
||||
20, 21, 22, 23, 24, 68, 25, 26,
|
||||
27, 68, 28, 29, 68, 31, 32, 33,
|
||||
34, 69, 68, 1, 69, 68, 68, 68,
|
||||
68, 68, 68, 68, 68, 68, 12, 13,
|
||||
14, 15, 16, 17, 18, 12, 19, 20,
|
||||
21, 22, 23, 24, 68, 25, 26, 27,
|
||||
68, 68, 68, 68, 31, 32, 33, 34,
|
||||
69, 68, 28, 29, 68, 29, 68, 4,
|
||||
71, 71, 71, 4, 71, 74, 73, 35,
|
||||
73, 35, 74, 73, 74, 73, 35, 73,
|
||||
36, 73, 0
|
||||
};
|
||||
|
||||
static const char _use_syllable_machine_trans_targs[] = {
|
||||
5, 9, 5, 41, 2, 5, 1, 53,
|
||||
6, 7, 5, 34, 37, 63, 64, 67,
|
||||
68, 72, 43, 44, 45, 46, 47, 57,
|
||||
58, 60, 69, 61, 54, 55, 56, 50,
|
||||
51, 52, 70, 71, 73, 62, 48, 49,
|
||||
5, 5, 5, 5, 8, 0, 33, 12,
|
||||
13, 14, 15, 16, 27, 28, 30, 31,
|
||||
24, 25, 26, 19, 20, 21, 32, 17,
|
||||
18, 5, 11, 5, 10, 22, 5, 23,
|
||||
29, 5, 35, 36, 5, 38, 39, 40,
|
||||
5, 5, 3, 42, 4, 59, 5, 65,
|
||||
66
|
||||
2, 31, 42, 2, 3, 2, 26, 28,
|
||||
51, 52, 54, 29, 32, 33, 34, 35,
|
||||
36, 46, 47, 48, 55, 49, 43, 44,
|
||||
45, 39, 40, 41, 56, 57, 58, 50,
|
||||
37, 38, 2, 59, 61, 2, 4, 5,
|
||||
6, 7, 8, 9, 10, 21, 22, 23,
|
||||
24, 18, 19, 20, 13, 14, 15, 25,
|
||||
11, 12, 2, 2, 16, 2, 17, 2,
|
||||
27, 2, 30, 2, 2, 0, 1, 2,
|
||||
53, 2, 60
|
||||
};
|
||||
|
||||
static const char _use_syllable_machine_trans_actions[] = {
|
||||
1, 0, 2, 3, 0, 4, 0, 5,
|
||||
0, 5, 8, 0, 5, 9, 0, 9,
|
||||
3, 0, 5, 5, 0, 0, 0, 5,
|
||||
5, 5, 3, 3, 5, 5, 5, 5,
|
||||
5, 5, 0, 0, 0, 3, 0, 0,
|
||||
10, 11, 12, 13, 5, 0, 5, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 5,
|
||||
1, 2, 2, 5, 0, 6, 0, 0,
|
||||
0, 0, 2, 0, 2, 2, 0, 0,
|
||||
0, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 0, 0, 0, 2,
|
||||
0, 0, 7, 0, 0, 8, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 14, 5, 15, 0, 0, 16, 0,
|
||||
0, 17, 0, 0, 18, 5, 0, 0,
|
||||
19, 20, 0, 3, 0, 5, 21, 0,
|
||||
0
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 9, 10, 0, 11, 0, 12,
|
||||
0, 13, 0, 14, 15, 0, 0, 16,
|
||||
0, 17, 0
|
||||
};
|
||||
|
||||
static const char _use_syllable_machine_to_state_actions[] = {
|
||||
0, 0, 0, 0, 0, 6, 0, 0,
|
||||
0, 0, 3, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0
|
||||
0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
static const char _use_syllable_machine_from_state_actions[] = {
|
||||
0, 0, 0, 0, 0, 7, 0, 0,
|
||||
0, 0, 4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0
|
||||
0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
static const short _use_syllable_machine_eof_trans[] = {
|
||||
1, 3, 3, 6, 6, 0, 42, 44,
|
||||
44, 68, 68, 44, 44, 44, 44, 44,
|
||||
44, 44, 44, 44, 44, 44, 71, 44,
|
||||
44, 44, 44, 44, 44, 44, 44, 44,
|
||||
68, 44, 74, 77, 74, 44, 44, 81,
|
||||
81, 82, 82, 82, 82, 82, 82, 82,
|
||||
82, 82, 82, 82, 82, 82, 82, 82,
|
||||
82, 82, 82, 82, 82, 82, 82, 87,
|
||||
82, 82, 82, 87, 82, 82, 82, 82,
|
||||
81, 87
|
||||
1, 1, 0, 38, 38, 60, 38, 38,
|
||||
38, 38, 38, 38, 38, 38, 38, 38,
|
||||
62, 38, 38, 38, 38, 38, 38, 38,
|
||||
38, 60, 64, 66, 38, 68, 68, 69,
|
||||
69, 69, 69, 69, 69, 69, 69, 69,
|
||||
69, 69, 69, 69, 69, 69, 69, 69,
|
||||
69, 69, 69, 72, 69, 69, 69, 69,
|
||||
69, 69, 72, 74, 74, 74
|
||||
};
|
||||
|
||||
static const int use_syllable_machine_start = 5;
|
||||
static const int use_syllable_machine_first_final = 5;
|
||||
static const int use_syllable_machine_start = 2;
|
||||
static const int use_syllable_machine_first_final = 2;
|
||||
static const int use_syllable_machine_error = -1;
|
||||
|
||||
static const int use_syllable_machine_en_main = 5;
|
||||
static const int use_syllable_machine_en_main = 2;
|
||||
|
||||
|
||||
#line 38 "hb-ot-shape-complex-use-machine.rl"
|
||||
#line 39 "hb-ot-shape-complex-use-machine.rl"
|
||||
|
||||
|
||||
|
||||
#line 162 "hb-ot-shape-complex-use-machine.rl"
|
||||
#line 154 "hb-ot-shape-complex-use-machine.rl"
|
||||
|
||||
|
||||
#define found_syllable(syllable_type) \
|
||||
HB_STMT_START { \
|
||||
if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
|
||||
for (unsigned int i = ts; i < te; i++) \
|
||||
if (0) fprintf (stderr, "syllable %d..%d %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
|
||||
for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
|
||||
info[i].syllable() = (syllable_serial << 4) | use_##syllable_type; \
|
||||
syllable_serial++; \
|
||||
if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
|
||||
} HB_STMT_END
|
||||
|
||||
static bool
|
||||
not_standard_default_ignorable (const hb_glyph_info_t &i)
|
||||
{ return !(i.use_category() == USE_O && _hb_glyph_info_is_default_ignorable (&i)); }
|
||||
|
||||
static void
|
||||
find_syllables_use (hb_buffer_t *buffer)
|
||||
{
|
||||
unsigned int p, pe, eof, ts, te, act;
|
||||
int cs;
|
||||
hb_glyph_info_t *info = buffer->info;
|
||||
auto p =
|
||||
+ hb_iter (info, buffer->len)
|
||||
| hb_enumerate
|
||||
| hb_filter ([] (const hb_glyph_info_t &i) { return not_standard_default_ignorable (i); },
|
||||
hb_second)
|
||||
| hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
|
||||
{
|
||||
if (p.second.use_category() == USE_ZWNJ)
|
||||
for (unsigned i = p.first + 1; i < buffer->len; ++i)
|
||||
if (not_standard_default_ignorable (info[i]))
|
||||
return !_hb_glyph_info_is_unicode_mark (&info[i]);
|
||||
return true;
|
||||
})
|
||||
| hb_enumerate
|
||||
| machine_index
|
||||
;
|
||||
auto pe = p + p.len ();
|
||||
auto eof = +pe;
|
||||
auto ts = +p;
|
||||
auto te = +p;
|
||||
unsigned int act HB_UNUSED;
|
||||
int cs;
|
||||
|
||||
#line 396 "hb-ot-shape-complex-use-machine.hh"
|
||||
#line 355 "hb-ot-shape-complex-use-machine.hh"
|
||||
{
|
||||
cs = use_syllable_machine_start;
|
||||
ts = 0;
|
||||
|
@ -400,15 +359,12 @@ find_syllables_use (hb_buffer_t *buffer)
|
|||
act = 0;
|
||||
}
|
||||
|
||||
#line 182 "hb-ot-shape-complex-use-machine.rl"
|
||||
#line 198 "hb-ot-shape-complex-use-machine.rl"
|
||||
|
||||
|
||||
p = 0;
|
||||
pe = eof = buffer->len;
|
||||
|
||||
unsigned int syllable_serial = 1;
|
||||
|
||||
#line 412 "hb-ot-shape-complex-use-machine.hh"
|
||||
#line 368 "hb-ot-shape-complex-use-machine.hh"
|
||||
{
|
||||
int _slen;
|
||||
int _trans;
|
||||
|
@ -418,20 +374,20 @@ find_syllables_use (hb_buffer_t *buffer)
|
|||
goto _test_eof;
|
||||
_resume:
|
||||
switch ( _use_syllable_machine_from_state_actions[cs] ) {
|
||||
case 7:
|
||||
case 4:
|
||||
#line 1 "NONE"
|
||||
{ts = p;}
|
||||
break;
|
||||
#line 426 "hb-ot-shape-complex-use-machine.hh"
|
||||
#line 382 "hb-ot-shape-complex-use-machine.hh"
|
||||
}
|
||||
|
||||
_keys = _use_syllable_machine_trans_keys + (cs<<1);
|
||||
_inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
|
||||
|
||||
_slen = _use_syllable_machine_key_spans[cs];
|
||||
_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) &&
|
||||
( info[p].use_category()) <= _keys[1] ?
|
||||
( info[p].use_category()) - _keys[0] : _slen ];
|
||||
_trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
|
||||
( (*p).second.second.use_category()) <= _keys[1] ?
|
||||
( (*p).second.second.use_category()) - _keys[0] : _slen ];
|
||||
|
||||
_eof_trans:
|
||||
cs = _use_syllable_machine_trans_targs[_trans];
|
||||
|
@ -440,104 +396,76 @@ _eof_trans:
|
|||
goto _again;
|
||||
|
||||
switch ( _use_syllable_machine_trans_actions[_trans] ) {
|
||||
case 5:
|
||||
case 2:
|
||||
#line 1 "NONE"
|
||||
{te = p+1;}
|
||||
break;
|
||||
case 12:
|
||||
#line 150 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 5:
|
||||
#line 141 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p+1;{ found_syllable (independent_cluster); }}
|
||||
break;
|
||||
case 14:
|
||||
#line 153 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 9:
|
||||
#line 144 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p+1;{ found_syllable (standard_cluster); }}
|
||||
break;
|
||||
case 10:
|
||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 7:
|
||||
#line 149 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p+1;{ found_syllable (broken_cluster); }}
|
||||
break;
|
||||
case 8:
|
||||
#line 158 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 6:
|
||||
#line 150 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p+1;{ found_syllable (non_cluster); }}
|
||||
break;
|
||||
case 11:
|
||||
#line 150 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (independent_cluster); }}
|
||||
break;
|
||||
case 15:
|
||||
#line 151 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 10:
|
||||
#line 142 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
|
||||
break;
|
||||
case 16:
|
||||
#line 152 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 11:
|
||||
#line 143 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (sakot_terminated_cluster); }}
|
||||
break;
|
||||
case 13:
|
||||
#line 153 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 8:
|
||||
#line 144 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (standard_cluster); }}
|
||||
break;
|
||||
case 18:
|
||||
#line 154 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 13:
|
||||
#line 145 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
|
||||
break;
|
||||
case 17:
|
||||
#line 155 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 12:
|
||||
#line 146 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (numeral_cluster); }}
|
||||
break;
|
||||
case 19:
|
||||
#line 156 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 14:
|
||||
#line 147 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (symbol_cluster); }}
|
||||
break;
|
||||
case 20:
|
||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 17:
|
||||
#line 148 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (hieroglyph_cluster); }}
|
||||
break;
|
||||
case 15:
|
||||
#line 149 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (broken_cluster); }}
|
||||
break;
|
||||
case 21:
|
||||
#line 158 "hb-ot-shape-complex-use-machine.rl"
|
||||
case 16:
|
||||
#line 150 "hb-ot-shape-complex-use-machine.rl"
|
||||
{te = p;p--;{ found_syllable (non_cluster); }}
|
||||
break;
|
||||
case 1:
|
||||
#line 153 "hb-ot-shape-complex-use-machine.rl"
|
||||
{{p = ((te))-1;}{ found_syllable (standard_cluster); }}
|
||||
break;
|
||||
case 4:
|
||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
||||
#line 149 "hb-ot-shape-complex-use-machine.rl"
|
||||
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
|
||||
break;
|
||||
case 2:
|
||||
#line 1 "NONE"
|
||||
{ switch( act ) {
|
||||
case 8:
|
||||
{{p = ((te))-1;} found_syllable (broken_cluster); }
|
||||
break;
|
||||
case 9:
|
||||
{{p = ((te))-1;} found_syllable (non_cluster); }
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
#line 1 "NONE"
|
||||
{te = p+1;}
|
||||
#line 157 "hb-ot-shape-complex-use-machine.rl"
|
||||
{act = 8;}
|
||||
break;
|
||||
case 9:
|
||||
#line 1 "NONE"
|
||||
{te = p+1;}
|
||||
#line 158 "hb-ot-shape-complex-use-machine.rl"
|
||||
{act = 9;}
|
||||
break;
|
||||
#line 532 "hb-ot-shape-complex-use-machine.hh"
|
||||
#line 460 "hb-ot-shape-complex-use-machine.hh"
|
||||
}
|
||||
|
||||
_again:
|
||||
switch ( _use_syllable_machine_to_state_actions[cs] ) {
|
||||
case 6:
|
||||
case 3:
|
||||
#line 1 "NONE"
|
||||
{ts = 0;}
|
||||
break;
|
||||
#line 541 "hb-ot-shape-complex-use-machine.hh"
|
||||
#line 469 "hb-ot-shape-complex-use-machine.hh"
|
||||
}
|
||||
|
||||
if ( ++p != pe )
|
||||
|
@ -553,7 +481,7 @@ _again:
|
|||
|
||||
}
|
||||
|
||||
#line 190 "hb-ot-shape-complex-use-machine.rl"
|
||||
#line 203 "hb-ot-shape-complex-use-machine.rl"
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/*
|
||||
* The following table is generated by running:
|
||||
*
|
||||
* ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt Blocks.txt
|
||||
* ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt UnicodeData.txt ArabicShaping.txt Blocks.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt
|
||||
*
|
||||
* on files with these headers:
|
||||
*
|
||||
|
@ -10,8 +10,24 @@
|
|||
* # Date: 2019-07-22, 19:55:00 GMT [KW, RP]
|
||||
* # IndicPositionalCategory-13.0.0.txt
|
||||
* # Date: 2019-07-23, 00:01:00 GMT [KW, RP]
|
||||
* # ArabicShaping-13.0.0.txt
|
||||
* # Date: 2020-01-31, 23:55:00 GMT [KW, RP]
|
||||
* # Blocks-13.0.0.txt
|
||||
* # Date: 2019-07-10, 19:06:00 GMT [KW]
|
||||
* # Override values For Indic_Syllabic_Category
|
||||
* # Not derivable
|
||||
* # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
|
||||
* # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
|
||||
* # Updated for Unicode 12.1 by Andrew Glass 2019-05-24
|
||||
* # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
|
||||
* # Override values For Indic_Positional_Category
|
||||
* # Not derivable
|
||||
* # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
|
||||
* # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
|
||||
* # Ammended for Unicode 10.0 by Andrew Glass 2018-09-21
|
||||
* # Updated for L2/19-083 by Andrew Glass 2019-05-06
|
||||
* # Updated for Unicode 12.1 by Andrew Glass 2019-05-30
|
||||
* # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
|
||||
* UnicodeData.txt does not have a header.
|
||||
*/
|
||||
|
||||
|
@ -24,23 +40,21 @@
|
|||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wunused-macros"
|
||||
#define B USE_B /* BASE */
|
||||
#define CGJ USE_CGJ /* CGJ */
|
||||
#define CS USE_CS /* CONS_WITH_STACKER */
|
||||
#define G USE_G /* HIEROGLYPH */
|
||||
#define GB USE_GB /* BASE_OTHER */
|
||||
#define H USE_H /* HALANT */
|
||||
#define HN USE_HN /* HALANT_NUM */
|
||||
#define HVM USE_HVM /* HALANT_OR_VOWEL_MODIFIER */
|
||||
#define IND USE_IND /* BASE_IND */
|
||||
#define J USE_J /* HIEROGLYPH_JOINER */
|
||||
#define N USE_N /* BASE_NUM */
|
||||
#define O USE_O /* OTHER */
|
||||
#define R USE_R /* REPHA */
|
||||
#define Rsv USE_Rsv /* Reserved */
|
||||
#define S USE_S /* SYM */
|
||||
#define SB USE_SB /* HIEROGLYPH_SEGMENT_BEGIN */
|
||||
#define SE USE_SE /* HIEROGLYPH_SEGMENT_END */
|
||||
#define SUB USE_SUB /* CONS_SUB */
|
||||
#define Sk USE_Sk /* SAKOT */
|
||||
#define VS USE_VS /* VARIATION_SELECTOR */
|
||||
#define WJ USE_WJ /* Word_Joiner */
|
||||
#define ZWJ USE_ZWJ /* ZWJ */
|
||||
#define ZWNJ USE_ZWNJ /* ZWNJ */
|
||||
#define CMAbv USE_CMAbv
|
||||
#define CMBlw USE_CMBlw
|
||||
|
@ -86,13 +100,31 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 00C0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 00D0 */ O, O, O, O, O, O, O, GB,
|
||||
|
||||
#define use_offset_0x0348u 80
|
||||
#define use_offset_0x0640u 80
|
||||
|
||||
|
||||
/* Combining Diacritical Marks */
|
||||
O, O, O, O, O, O, O, CGJ,
|
||||
/* Arabic */
|
||||
|
||||
#define use_offset_0x0900u 88
|
||||
/* 0640 */ B, O, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x07c8u 88
|
||||
|
||||
|
||||
/* NKo */
|
||||
O, O, B, B, B, B, B, B,
|
||||
/* 07D0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 07E0 */ B, B, B, B, B, B, B, B, B, B, B, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv,
|
||||
/* 07F0 */ VMAbv, VMAbv, VMAbv, VMAbv, O, O, O, O, O, O, B, O, O, VMAbv, O, O,
|
||||
|
||||
#define use_offset_0x0840u 144
|
||||
|
||||
|
||||
/* Mandaic */
|
||||
|
||||
/* 0840 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0850 */ B, B, B, B, B, B, B, B, B, CMBlw, CMBlw, CMBlw, O, O, O, O,
|
||||
|
||||
#define use_offset_0x0900u 176
|
||||
|
||||
|
||||
/* Devanagari */
|
||||
|
@ -112,7 +144,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 0990 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 09A0 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
||||
/* 09B0 */ B, O, B, O, O, O, B, B, B, B, O, O, CMBlw, B, VPst, VPre,
|
||||
/* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPst, VPst, H, IND, O,
|
||||
/* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, VPre, H, O, O,
|
||||
/* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, B, B, O, B,
|
||||
/* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, B, O, FMAbv, O,
|
||||
|
@ -145,18 +177,18 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 0B10 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0B20 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
||||
/* 0B30 */ B, O, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VAbv,
|
||||
/* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPst, O, O, VPst, VPst, H, O, O,
|
||||
/* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, VPre, H, O, O,
|
||||
/* 0B50 */ O, O, O, O, O, VAbv, VAbv, VAbv, O, O, O, O, B, B, O, B,
|
||||
/* 0B60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0B70 */ O, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
||||
/* Tamil */
|
||||
|
||||
/* 0B80 */ O, O, VMAbv, IND, O, B, B, B, B, B, B, O, O, O, B, B,
|
||||
/* 0B80 */ O, O, VMAbv, O, O, B, B, B, B, B, B, O, O, O, B, B,
|
||||
/* 0B90 */ B, O, B, B, B, B, O, O, O, B, B, O, B, O, B, B,
|
||||
/* 0BA0 */ O, O, O, B, B, O, O, O, B, B, B, O, O, O, B, B,
|
||||
/* 0BB0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, VPst, VPst,
|
||||
/* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPst, VPst, VPst, H, O, O,
|
||||
/* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPre, VPre, VPre, H, O, O,
|
||||
/* 0BD0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, O,
|
||||
/* 0BE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0BF0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
@ -189,10 +221,10 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 0D10 */ B, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0D20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0D30 */ B, B, B, B, B, B, B, B, B, B, B, VAbv, VAbv, B, VPst, VPst,
|
||||
/* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPst, VPst, VPst, H, R, O,
|
||||
/* 0D50 */ O, O, O, O, IND, IND, IND, VPst, O, O, O, O, O, O, O, B,
|
||||
/* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPre, VPre, VPre, H, R, O,
|
||||
/* 0D50 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, B,
|
||||
/* 0D60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0D70 */ O, O, O, O, O, O, O, O, O, O, IND, IND, IND, IND, IND, IND,
|
||||
/* 0D70 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
||||
/* Sinhala */
|
||||
|
||||
|
@ -201,28 +233,30 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 0DA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0DB0 */ B, B, O, B, B, B, B, B, B, B, B, B, O, B, O, O,
|
||||
/* 0DC0 */ B, B, B, B, B, B, B, O, O, O, H, O, O, O, O, VPst,
|
||||
/* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPst, VPre, VPst, VPst, VPst, VPst,
|
||||
/* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPre, VPre, VPre, VPre, VPre, VPst,
|
||||
/* 0DE0 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0DF0 */ O, O, VPst, VPst, O, O, O, O,
|
||||
|
||||
#define use_offset_0x0f18u 1360
|
||||
#define use_offset_0x0f00u 1448
|
||||
|
||||
|
||||
/* Tibetan */
|
||||
VBlw, VBlw, O, O, O, O, O, O,
|
||||
|
||||
/* 0F00 */ B, B, O, O, B, B, B, O, O, O, O, O, O, O, O, O,
|
||||
/* 0F10 */ O, O, O, O, O, O, O, O, VBlw, VBlw, O, O, O, O, O, O,
|
||||
/* 0F20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0F30 */ B, B, B, B, O, FMBlw, O, FMBlw, O, CMAbv, O, O, O, O, VPst, VPre,
|
||||
/* 0F30 */ B, B, B, B, O, FBlw, O, FBlw, O, CMAbv, O, O, O, O, VPst, VPre,
|
||||
/* 0F40 */ B, B, B, B, B, B, B, B, O, B, B, B, B, B, B, B,
|
||||
/* 0F50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 0F60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
||||
/* 0F70 */ O, VBlw, VBlw, VAbv, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VMAbv, VMPst,
|
||||
/* 0F80 */ VBlw, VAbv, VMAbv, VMAbv, VBlw, IND, VMAbv, VMAbv, B, B, B, B, B, SUB, SUB, SUB,
|
||||
/* 0F70 */ O, CMBlw, VBlw, VAbv, VAbv, VBlw, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VMAbv, O,
|
||||
/* 0F80 */ VBlw, VAbv, VMAbv, VMAbv, VBlw, O, VMAbv, VMAbv, B, B, B, B, B, SUB, SUB, SUB,
|
||||
/* 0F90 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
||||
/* 0FA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
||||
/* 0FB0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, O, O,
|
||||
/* 0FC0 */ O, O, O, O, O, O, FMBlw, O,
|
||||
/* 0FC0 */ O, O, O, O, O, O, FBlw, O,
|
||||
|
||||
#define use_offset_0x1000u 1536
|
||||
#define use_offset_0x1000u 1648
|
||||
|
||||
|
||||
/* Myanmar */
|
||||
|
@ -238,7 +272,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 1080 */ B, B, MBlw, VPst, VPre, VAbv, VAbv, VMPst, VMPst, VMPst, VMPst, VMPst, VMPst, VMBlw, B, VMPst,
|
||||
/* 1090 */ B, B, B, B, B, B, B, B, B, B, VMPst, VMPst, VPst, VAbv, O, O,
|
||||
|
||||
#define use_offset_0x1700u 1696
|
||||
#define use_offset_0x1700u 1808
|
||||
|
||||
|
||||
/* Tagalog */
|
||||
|
@ -266,12 +300,27 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 1780 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1790 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 17A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 17B0 */ B, B, B, B, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPst, VPst,
|
||||
/* 17C0 */ VPst, VPre, VPre, VPre, VPst, VPst, VMAbv, VMPst, VPst, VMAbv, VMAbv, FMAbv, FAbv, CMAbv, FMAbv, FMAbv,
|
||||
/* 17B0 */ B, B, B, B, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPre, VPre,
|
||||
/* 17C0 */ VPre, VPre, VPre, VPre, VPre, VPre, VMAbv, VMPst, VPst, VMAbv, VMAbv, FMAbv, FAbv, CMAbv, FMAbv, VMAbv,
|
||||
/* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, B, FMAbv, O, O,
|
||||
/* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
/* 17F0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x1900u 1936
|
||||
/* Mongolian */
|
||||
|
||||
/* 1800 */ B, O, O, O, O, O, O, B, O, O, B, O, O, O, O, O,
|
||||
/* 1810 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 1820 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1830 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1840 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1850 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1860 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1870 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
||||
/* 1880 */ GB, GB, GB, GB, GB, CMAbv, CMAbv, B, B, B, B, B, B, B, B, B,
|
||||
/* 1890 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18A0 */ B, B, B, B, B, B, B, B, B, CMBlw, B, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x1900u 2240
|
||||
|
||||
|
||||
/* Limbu */
|
||||
|
@ -279,7 +328,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 1900 */ GB, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, O,
|
||||
/* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, O, O, O, O,
|
||||
/* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VAbv, FMBlw, O, O, O, O,
|
||||
/* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VMAbv, FMBlw, O, O, O, O,
|
||||
/* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, B, B, B, B,
|
||||
|
||||
/* Tai Le */
|
||||
|
@ -302,7 +351,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* Buginese */
|
||||
|
||||
/* 1A00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1A10 */ B, B, B, B, B, B, B, VAbv, VBlw, VPre, VPst, VAbv, O, O, O, O,
|
||||
/* 1A10 */ B, B, B, B, B, B, B, VAbv, VAbv, VPre, VPst, VAbv, O, O, O, O,
|
||||
|
||||
/* Tai Tham */
|
||||
|
||||
|
@ -311,11 +360,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, SUB, SUB, SUB, O,
|
||||
/* 1A60 */ Sk, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
|
||||
/* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, FMAbv, FMAbv, O, O, FMBlw,
|
||||
/* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, VMAbv, VMAbv, O, O, VMBlw,
|
||||
/* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
/* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x1b00u 2352
|
||||
#define use_offset_0x1b00u 2656
|
||||
|
||||
|
||||
/* Balinese */
|
||||
|
@ -324,7 +373,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 1B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1B30 */ B, B, B, B, CMAbv, VPst, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VPre,
|
||||
/* 1B40 */ VPst, VPst, VAbv, VAbv, H, B, B, B, B, B, B, B, O, O, O, O,
|
||||
/* 1B40 */ VPre, VPre, VAbv, VAbv, H, B, B, B, B, B, B, B, O, O, O, O,
|
||||
/* 1B50 */ B, B, B, B, B, B, B, B, B, B, O, GB, GB, O, O, GB,
|
||||
/* 1B60 */ O, S, GB, S, S, S, S, S, GB, S, S, SMAbv, SMBlw, SMAbv, SMAbv, SMAbv,
|
||||
/* 1B70 */ SMAbv, SMAbv, SMAbv, SMAbv, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
@ -351,51 +400,61 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FMAbv, CMBlw, O, O, O, O, O, O, O, O,
|
||||
/* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, O, B, B, B,
|
||||
|
||||
#define use_offset_0x1cd0u 2688
|
||||
#define use_offset_0x1cd0u 2992
|
||||
|
||||
|
||||
/* Vedic Extensions */
|
||||
|
||||
/* 1CD0 */ VMAbv, VMAbv, VMAbv, O, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMAbv, VMAbv, VMBlw, VMBlw, VMBlw, VMBlw,
|
||||
/* 1CE0 */ VMAbv, VMPst, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, O, O, O, O, VMBlw, O, O,
|
||||
/* 1CF0 */ O, O, IND, IND, VMAbv, CS, CS, VMPst, VMAbv, VMAbv, GB, O, O, O, O, O,
|
||||
/* 1CF0 */ O, O, O, O, VMAbv, CS, CS, VMPst, VMAbv, VMAbv, GB, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x1df8u 2736
|
||||
#define use_offset_0x1df8u 3040
|
||||
|
||||
|
||||
/* Combining Diacritical Marks Supplement */
|
||||
O, O, O, FMAbv, O, O, O, O,
|
||||
|
||||
#define use_offset_0x2008u 2744
|
||||
#define use_offset_0x2008u 3048
|
||||
|
||||
|
||||
/* General Punctuation */
|
||||
O, O, O, O, ZWNJ, ZWJ, O, O,
|
||||
O, O, O, O, ZWNJ, O, O, O,
|
||||
/* 2010 */ GB, GB, GB, GB, GB, O, O, O,
|
||||
|
||||
#define use_offset_0x2060u 2760
|
||||
#define use_offset_0x2070u 3064
|
||||
|
||||
/* 2060 */ WJ, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
||||
/* Superscripts and Subscripts */
|
||||
|
||||
/* 2070 */ O, O, O, O, FMPst, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 2080 */ O, O, FMPst, FMPst, FMPst, O, O, O,
|
||||
|
||||
#define use_offset_0x20f0u 2800
|
||||
#define use_offset_0x20f0u 3088
|
||||
|
||||
|
||||
/* Combining Diacritical Marks for Symbols */
|
||||
|
||||
/* 20F0 */ VMAbv, O, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x25c8u 2808
|
||||
#define use_offset_0x25c8u 3096
|
||||
|
||||
|
||||
/* Geometric Shapes */
|
||||
O, O, O, O, GB, O, O, O,
|
||||
O, O, O, O, B, O, O, O,
|
||||
|
||||
#define use_offset_0xa800u 2816
|
||||
#define use_offset_0x2d30u 3104
|
||||
|
||||
|
||||
/* Tifinagh */
|
||||
|
||||
/* 2D30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 2D40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 2D50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 2D60 */ B, B, B, B, B, B, B, B, O, O, O, O, O, O, O, B,
|
||||
/* 2D70 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, H,
|
||||
|
||||
#define use_offset_0xa800u 3184
|
||||
|
||||
|
||||
/* Syloti Nagri */
|
||||
|
@ -445,7 +504,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* A980 */ VMAbv, VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* A990 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* A9A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* A9B0 */ B, B, B, CMAbv, VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VPre, VAbv, MBlw, MBlw, MBlw,
|
||||
/* A9B0 */ B, B, B, CMAbv, VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VPre, VAbv, MBlw, MPst, MBlw,
|
||||
/* A9C0 */ H, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* A9D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
|
@ -459,7 +518,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* AA00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* AA10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* AA20 */ B, B, B, B, B, B, B, B, B, VMAbv, VAbv, VAbv, VAbv, VBlw, VAbv, VPre,
|
||||
/* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MBlw, MBlw, O, O, O, O, O, O, O, O, O,
|
||||
/* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MAbv, MBlw, O, O, O, O, O, O, O, O, O,
|
||||
/* AA40 */ B, B, B, FAbv, B, B, B, B, B, B, B, B, FAbv, FPst, O, O,
|
||||
/* AA50 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
|
@ -482,7 +541,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* AAE0 */ B, B, B, B, B, B, B, B, B, B, B, VPre, VBlw, VAbv, VPre, VPst,
|
||||
/* AAF0 */ O, O, O, O, O, VMPst, H, O,
|
||||
|
||||
#define use_offset_0xabc0u 3576
|
||||
#define use_offset_0xabc0u 3944
|
||||
|
||||
|
||||
/* Meetei Mayek */
|
||||
|
@ -492,27 +551,75 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* ABE0 */ B, B, B, VPst, VPst, VAbv, VPst, VPst, VBlw, VPst, VPst, O, VMPst, VBlw, O, O,
|
||||
/* ABF0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0xfe00u 3640
|
||||
|
||||
|
||||
/* Variation Selectors */
|
||||
|
||||
/* FE00 */ VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS,
|
||||
|
||||
#define use_offset_0x10a00u 3656
|
||||
#define use_offset_0x10a00u 4008
|
||||
|
||||
|
||||
/* Kharoshthi */
|
||||
|
||||
/* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, VBlw, VBlw, VMBlw, VMAbv,
|
||||
/* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, VPst, VMBlw, VMBlw, VMAbv,
|
||||
/* 10A10 */ B, B, B, B, O, B, B, B, O, B, B, B, B, B, B, B,
|
||||
/* 10A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10A30 */ B, B, B, B, B, B, O, O, CMAbv, CMBlw, CMBlw, O, O, O, O, H,
|
||||
/* 10A40 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x11000u 3736
|
||||
#define use_offset_0x10ac0u 4088
|
||||
|
||||
|
||||
/* Manichaean */
|
||||
|
||||
/* 10AC0 */ B, B, B, B, B, B, B, B, O, B, B, B, B, B, B, B,
|
||||
/* 10AD0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10AE0 */ B, B, B, B, B, CMBlw, CMBlw, O,
|
||||
|
||||
#define use_offset_0x10b80u 4128
|
||||
|
||||
|
||||
/* Psalter Pahlavi */
|
||||
|
||||
/* 10B80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10B90 */ B, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 10BA0 */ O, O, O, O, O, O, O, O, O, B, B, B, B, B, B, O,
|
||||
|
||||
#define use_offset_0x10d00u 4176
|
||||
|
||||
|
||||
/* Hanifi Rohingya */
|
||||
|
||||
/* 10D00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10D10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10D20 */ B, B, B, B, VMAbv, VMAbv, VMAbv, CMAbv, O, O, O, O, O, O, O, O,
|
||||
/* 10D30 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x10e80u 4240
|
||||
|
||||
|
||||
/* Yezidi */
|
||||
|
||||
/* 10E80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10E90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10EA0 */ B, B, B, B, B, B, B, B, B, B, O, VAbv, VAbv, O, O, O,
|
||||
/* 10EB0 */ B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x10f30u 4296
|
||||
|
||||
|
||||
/* Sogdian */
|
||||
|
||||
/* 10F30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 10F40 */ B, B, B, B, B, B, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw,
|
||||
/* 10F50 */ VMBlw, B, B, B, B, O, O, O,
|
||||
|
||||
#define use_offset_0x10fb0u 4336
|
||||
|
||||
|
||||
/* Chorasmian */
|
||||
|
||||
/* 10FB0 */ B, O, B, B, B, B, B, O, B, B, B, B, B, B, B, B,
|
||||
/* 10FC0 */ O, B, B, B, B, O, O, O, O, B, B, B, O, O, O, O,
|
||||
/* 10FD0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 10FE0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 10FF0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
||||
/* Brahmi */
|
||||
|
||||
/* 11000 */ VMPst, VMAbv, VMPst, CS, CS, B, B, B, B, B, B, B, B, B, B, B,
|
||||
|
@ -531,7 +638,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 110A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 110B0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VPst, VPst, H, CMBlw, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x11100u 3928
|
||||
#define use_offset_0x11100u 4608
|
||||
|
||||
|
||||
/* Chakma */
|
||||
|
@ -539,7 +646,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11100 */ VMAbv, VMAbv, VMAbv, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11120 */ B, B, B, B, B, B, B, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VBlw, VAbv, VAbv,
|
||||
/* 11130 */ VBlw, VAbv, VAbv, H, CMBlw, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11130 */ VBlw, VAbv, VAbv, H, CMAbv, O, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11140 */ O, O, O, O, B, VPst, VPst, B, O, O, O, O, O, O, O, O,
|
||||
|
||||
/* Mahajani */
|
||||
|
@ -555,7 +662,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 111A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 111B0 */ B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv,
|
||||
/* 111C0 */ H, B, R, R, O, O, O, O, GB, FMBlw, CMBlw, VAbv, VBlw, O, VPre, VMAbv,
|
||||
/* 111D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
/* 111D0 */ B, B, B, B, B, B, B, B, B, B, B, O, O, O, O, O,
|
||||
|
||||
/* Sinhala Archaic Numbers */
|
||||
|
||||
|
@ -569,7 +676,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11220 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPst, VPst, VBlw,
|
||||
/* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv, O, O, O, O, O, O, VMAbv, O,
|
||||
|
||||
#define use_offset_0x11280u 4248
|
||||
#define use_offset_0x11280u 4928
|
||||
|
||||
|
||||
/* Multani */
|
||||
|
@ -592,12 +699,12 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11310 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11320 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
|
||||
/* 11330 */ B, O, B, B, O, B, B, B, B, B, O, CMBlw, CMBlw, B, VPst, VPst,
|
||||
/* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPst, VPst, HVM, O, O,
|
||||
/* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPre, VPre, HVM, O, O,
|
||||
/* 11350 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, B, B,
|
||||
/* 11360 */ B, B, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
|
||||
/* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
|
||||
|
||||
#define use_offset_0x11400u 4496
|
||||
#define use_offset_0x11400u 5176
|
||||
|
||||
|
||||
/* Newa */
|
||||
|
@ -616,11 +723,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11480 */ O, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11490 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 114A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 114B0 */ VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VPre, VAbv, VPst, VPst, VPst, VPst, VMAbv,
|
||||
/* 114B0 */ VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VPre, VAbv, VPre, VPre, VPst, VPre, VMAbv,
|
||||
/* 114C0 */ VMAbv, VMAbv, H, CMBlw, B, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 114D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x11580u 4720
|
||||
#define use_offset_0x11580u 5400
|
||||
|
||||
|
||||
/* Siddham */
|
||||
|
@ -628,7 +735,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11580 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11590 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 115A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, VPst,
|
||||
/* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPst, VPst, VPst, VMAbv, VMAbv, VMPst, H,
|
||||
/* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, VPre, VPre, VMAbv, VMAbv, VMPst, H,
|
||||
/* 115C0 */ CMBlw, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 115D0 */ O, O, O, O, O, O, O, O, B, B, B, B, VBlw, VBlw, O, O,
|
||||
/* 115E0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
|
@ -660,10 +767,10 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
|
||||
/* 11700 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11710 */ B, B, B, B, B, B, B, B, B, B, B, O, O, MBlw, MPre, MAbv,
|
||||
/* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VAbv, O, O, O, O,
|
||||
/* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VMAbv, O, O, O, O,
|
||||
/* 11730 */ B, B, B, B, B, B, B, B, B, B, B, B, O, O, O, O,
|
||||
|
||||
#define use_offset_0x11800u 5168
|
||||
#define use_offset_0x11800u 5848
|
||||
|
||||
|
||||
/* Dogra */
|
||||
|
@ -673,7 +780,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11820 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPre, VPst, VBlw,
|
||||
/* 11830 */ VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VMAbv, VMPst, H, CMBlw, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x11900u 5232
|
||||
#define use_offset_0x11900u 5912
|
||||
|
||||
|
||||
/* Dives Akuru */
|
||||
|
@ -681,11 +788,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11900 */ B, B, B, B, B, B, B, O, O, B, O, O, B, B, B, B,
|
||||
/* 11910 */ B, B, B, B, O, B, B, O, B, B, B, B, B, B, B, B,
|
||||
/* 11920 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, O, VPre, VPst, O, O, VMAbv, VMAbv, VPst, H, R,
|
||||
/* 11940 */ MPst, R, MBlw, CMBlw, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, O, VPre, VPre, O, O, VMAbv, VMAbv, VPst, H, R,
|
||||
/* 11940 */ MPst, R, MPst, CMBlw, O, O, O, O, O, O, O, O, O, O, O, O,
|
||||
/* 11950 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x119a0u 5328
|
||||
#define use_offset_0x119a0u 6008
|
||||
|
||||
|
||||
/* Nandinagari */
|
||||
|
@ -713,7 +820,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11A80 */ B, B, B, B, R, R, R, R, R, R, FBlw, FBlw, FBlw, FBlw, FBlw, FBlw,
|
||||
/* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, H, O, O, O, B, O, O,
|
||||
|
||||
#define use_offset_0x11c00u 5584
|
||||
#define use_offset_0x11c00u 6264
|
||||
|
||||
|
||||
/* Bhaiksuki */
|
||||
|
@ -734,7 +841,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11CA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
|
||||
/* 11CB0 */ VBlw, VPre, VBlw, VAbv, VPst, VMAbv, VMAbv, O,
|
||||
|
||||
#define use_offset_0x11d00u 5768
|
||||
#define use_offset_0x11d00u 6448
|
||||
|
||||
|
||||
/* Masaram Gondi */
|
||||
|
@ -754,7 +861,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11D90 */ VAbv, VAbv, O, VPst, VPst, VMAbv, VMPst, H, O, O, O, O, O, O, O, O,
|
||||
/* 11DA0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x11ee0u 5944
|
||||
#define use_offset_0x11ee0u 6624
|
||||
|
||||
|
||||
/* Makasar */
|
||||
|
@ -762,7 +869,202 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
|
|||
/* 11EE0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 11EF0 */ B, B, GB, VAbv, VBlw, VPre, VPst, O,
|
||||
|
||||
}; /* Table items: 5968; occupancy: 74% */
|
||||
#define use_offset_0x13000u 6648
|
||||
|
||||
|
||||
/* Egyptian Hieroglyphs */
|
||||
|
||||
/* 13000 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13010 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13020 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13030 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13040 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13050 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13060 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13070 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13080 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13090 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 130A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 130B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 130C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 130D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 130E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 130F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13100 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13110 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13120 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13130 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13140 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13150 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13160 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13170 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13180 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13190 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 131A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 131B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 131C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 131D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 131E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 131F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13200 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13210 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13220 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13230 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13240 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13250 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13260 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13270 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13280 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13290 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 132A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 132B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 132C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 132D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 132E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 132F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13300 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13310 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13320 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13330 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13340 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13350 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13360 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13370 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13380 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13390 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 133A0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 133B0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 133C0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 133D0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 133E0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 133F0 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13400 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13410 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, G,
|
||||
/* 13420 */ G, G, G, G, G, G, G, G, G, G, G, G, G, G, G, O,
|
||||
|
||||
/* Egyptian Hieroglyph Format Controls */
|
||||
|
||||
/* 13430 */ J, J, J, J, J, J, J, SB, SE, O, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x16b00u 7736
|
||||
|
||||
|
||||
/* Pahawh Hmong */
|
||||
|
||||
/* 16B00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16B30 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O,
|
||||
|
||||
#define use_offset_0x16f00u 7792
|
||||
|
||||
|
||||
/* Miao */
|
||||
|
||||
/* 16F00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16F10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16F20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16F30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 16F40 */ B, B, B, B, B, B, B, B, B, B, B, O, O, O, O, CMBlw,
|
||||
/* 16F50 */ O, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw,
|
||||
/* 16F60 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw,
|
||||
/* 16F70 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw,
|
||||
/* 16F80 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, O, O, O, O, O, O, O, VMBlw,
|
||||
/* 16F90 */ VMBlw, VMBlw, VMBlw, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x16fe0u 7944
|
||||
|
||||
|
||||
/* Ideographic Symbols and Punctuation */
|
||||
|
||||
/* 16FE0 */ O, O, O, O, B, O, O, O,
|
||||
|
||||
#define use_offset_0x18b00u 7952
|
||||
|
||||
|
||||
/* Khitan Small Script */
|
||||
|
||||
/* 18B00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18B90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18BA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18BB0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18BC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18BD0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18BE0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18BF0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18C90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18CA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18CB0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18CC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 18CD0 */ B, B, B, B, B, B, O, O,
|
||||
|
||||
#define use_offset_0x1bc00u 8424
|
||||
|
||||
|
||||
/* Duployan */
|
||||
|
||||
/* 1BC00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1BC10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1BC20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1BC30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1BC40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1BC50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1BC60 */ B, B, B, B, B, B, B, B, B, B, B, O, O, O, O, O,
|
||||
/* 1BC70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
||||
/* 1BC80 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
|
||||
/* 1BC90 */ B, B, B, B, B, B, B, B, B, B, O, O, O, CMBlw, CMBlw, O,
|
||||
|
||||
#define use_offset_0x1e100u 8584
|
||||
|
||||
|
||||
/* Nyiakeng Puachue Hmong */
|
||||
|
||||
/* 1E100 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E120 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
|
||||
/* 1E130 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, B, B, B, B, B, B, B, O, O,
|
||||
/* 1E140 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, B, B,
|
||||
|
||||
#define use_offset_0x1e2c0u 8664
|
||||
|
||||
|
||||
/* Wancho */
|
||||
|
||||
/* 1E2C0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E2D0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E2E0 */ B, B, B, B, B, B, B, B, B, B, B, B, VMAbv, VMAbv, VMAbv, VMAbv,
|
||||
/* 1E2F0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
#define use_offset_0x1e900u 8728
|
||||
|
||||
|
||||
/* Adlam */
|
||||
|
||||
/* 1E900 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E920 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E930 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
|
||||
/* 1E940 */ B, B, B, B, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, B, O, O, O, O,
|
||||
/* 1E950 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
|
||||
|
||||
}; /* Table items: 8824; occupancy: 79% */
|
||||
|
||||
USE_TABLE_ELEMENT_TYPE
|
||||
hb_use_get_category (hb_codepoint_t u)
|
||||
|
@ -772,14 +1074,16 @@ hb_use_get_category (hb_codepoint_t u)
|
|||
case 0x0u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0028u, 0x003Fu)) return use_table[u - 0x0028u + use_offset_0x0028u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x00A0u, 0x00D7u)) return use_table[u - 0x00A0u + use_offset_0x00a0u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0348u, 0x034Fu)) return use_table[u - 0x0348u + use_offset_0x0348u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0640u, 0x0647u)) return use_table[u - 0x0640u + use_offset_0x0640u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x07C8u, 0x07FFu)) return use_table[u - 0x07C8u + use_offset_0x07c8u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0840u, 0x085Fu)) return use_table[u - 0x0840u + use_offset_0x0840u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0900u, 0x0DF7u)) return use_table[u - 0x0900u + use_offset_0x0900u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0F18u, 0x0FC7u)) return use_table[u - 0x0F18u + use_offset_0x0f18u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x0F00u, 0x0FC7u)) return use_table[u - 0x0F00u + use_offset_0x0f00u];
|
||||
break;
|
||||
|
||||
case 0x1u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1000u, 0x109Fu)) return use_table[u - 0x1000u + use_offset_0x1000u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1700u, 0x17EFu)) return use_table[u - 0x1700u + use_offset_0x1700u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1700u, 0x18AFu)) return use_table[u - 0x1700u + use_offset_0x1700u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1900u, 0x1A9Fu)) return use_table[u - 0x1900u + use_offset_0x1900u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1B00u, 0x1C4Fu)) return use_table[u - 0x1B00u + use_offset_0x1b00u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1CD0u, 0x1CFFu)) return use_table[u - 0x1CD0u + use_offset_0x1cd0u];
|
||||
|
@ -788,9 +1092,10 @@ hb_use_get_category (hb_codepoint_t u)
|
|||
|
||||
case 0x2u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2017u)) return use_table[u - 0x2008u + use_offset_0x2008u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x2060u, 0x2087u)) return use_table[u - 0x2060u + use_offset_0x2060u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x2070u, 0x2087u)) return use_table[u - 0x2070u + use_offset_0x2070u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x20F0u, 0x20F7u)) return use_table[u - 0x20F0u + use_offset_0x20f0u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x25C8u, 0x25CFu)) return use_table[u - 0x25C8u + use_offset_0x25c8u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x2D30u, 0x2D7Fu)) return use_table[u - 0x2D30u + use_offset_0x2d30u];
|
||||
break;
|
||||
|
||||
case 0xAu:
|
||||
|
@ -798,16 +1103,18 @@ hb_use_get_category (hb_codepoint_t u)
|
|||
if (hb_in_range<hb_codepoint_t> (u, 0xABC0u, 0xABFFu)) return use_table[u - 0xABC0u + use_offset_0xabc0u];
|
||||
break;
|
||||
|
||||
case 0xFu:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)) return use_table[u - 0xFE00u + use_offset_0xfe00u];
|
||||
break;
|
||||
|
||||
case 0x10u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10A00u, 0x10A4Fu)) return use_table[u - 0x10A00u + use_offset_0x10a00u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AE7u)) return use_table[u - 0x10AC0u + use_offset_0x10ac0u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return use_table[u - 0x10B80u + use_offset_0x10b80u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10D00u, 0x10D3Fu)) return use_table[u - 0x10D00u + use_offset_0x10d00u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10E80u, 0x10EB7u)) return use_table[u - 0x10E80u + use_offset_0x10e80u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10F30u, 0x10F57u)) return use_table[u - 0x10F30u + use_offset_0x10f30u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10FB0u, 0x110BFu)) return use_table[u - 0x10FB0u + use_offset_0x10fb0u];
|
||||
break;
|
||||
|
||||
case 0x11u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x11000u, 0x110BFu)) return use_table[u - 0x11000u + use_offset_0x11000u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x10FB0u, 0x110BFu)) return use_table[u - 0x10FB0u + use_offset_0x10fb0u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x11100u, 0x1123Fu)) return use_table[u - 0x11100u + use_offset_0x11100u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x11280u, 0x11377u)) return use_table[u - 0x11280u + use_offset_0x11280u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x11400u, 0x114DFu)) return use_table[u - 0x11400u + use_offset_0x11400u];
|
||||
|
@ -820,6 +1127,30 @@ hb_use_get_category (hb_codepoint_t u)
|
|||
if (hb_in_range<hb_codepoint_t> (u, 0x11EE0u, 0x11EF7u)) return use_table[u - 0x11EE0u + use_offset_0x11ee0u];
|
||||
break;
|
||||
|
||||
case 0x13u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x13000u, 0x1343Fu)) return use_table[u - 0x13000u + use_offset_0x13000u];
|
||||
break;
|
||||
|
||||
case 0x16u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x16B00u, 0x16B37u)) return use_table[u - 0x16B00u + use_offset_0x16b00u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x16F00u, 0x16F97u)) return use_table[u - 0x16F00u + use_offset_0x16f00u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x16FE0u, 0x16FE7u)) return use_table[u - 0x16FE0u + use_offset_0x16fe0u];
|
||||
break;
|
||||
|
||||
case 0x18u:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x18B00u, 0x18CD7u)) return use_table[u - 0x18B00u + use_offset_0x18b00u];
|
||||
break;
|
||||
|
||||
case 0x1Bu:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1BC00u, 0x1BC9Fu)) return use_table[u - 0x1BC00u + use_offset_0x1bc00u];
|
||||
break;
|
||||
|
||||
case 0x1Eu:
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1E100u, 0x1E14Fu)) return use_table[u - 0x1E100u + use_offset_0x1e100u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1E2C0u, 0x1E2FFu)) return use_table[u - 0x1E2C0u + use_offset_0x1e2c0u];
|
||||
if (hb_in_range<hb_codepoint_t> (u, 0x1E900u, 0x1E95Fu)) return use_table[u - 0x1E900u + use_offset_0x1e900u];
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -827,23 +1158,21 @@ hb_use_get_category (hb_codepoint_t u)
|
|||
}
|
||||
|
||||
#undef B
|
||||
#undef CGJ
|
||||
#undef CS
|
||||
#undef G
|
||||
#undef GB
|
||||
#undef H
|
||||
#undef HN
|
||||
#undef HVM
|
||||
#undef IND
|
||||
#undef J
|
||||
#undef N
|
||||
#undef O
|
||||
#undef R
|
||||
#undef Rsv
|
||||
#undef S
|
||||
#undef SB
|
||||
#undef SE
|
||||
#undef SUB
|
||||
#undef Sk
|
||||
#undef VS
|
||||
#undef WJ
|
||||
#undef ZWJ
|
||||
#undef ZWNJ
|
||||
#undef CMAbv
|
||||
#undef CMBlw
|
||||
|
|
|
@ -194,6 +194,7 @@ enum use_syllable_type_t {
|
|||
use_number_joiner_terminated_cluster,
|
||||
use_numeral_cluster,
|
||||
use_symbol_cluster,
|
||||
use_hieroglyph_cluster,
|
||||
use_broken_cluster,
|
||||
use_non_cluster,
|
||||
};
|
||||
|
@ -275,6 +276,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
|
|||
{
|
||||
case use_independent_cluster:
|
||||
case use_symbol_cluster:
|
||||
case use_hieroglyph_cluster:
|
||||
case use_non_cluster:
|
||||
/* These don't join. Nothing to do. */
|
||||
last_form = _USE_NONE;
|
||||
|
@ -385,8 +387,7 @@ reorder_syllable_use (hb_buffer_t *buffer, unsigned int start, unsigned int end)
|
|||
|
||||
hb_glyph_info_t *info = buffer->info;
|
||||
|
||||
#define POST_BASE_FLAGS64 (FLAG64 (USE_FM) | \
|
||||
FLAG64 (USE_FAbv) | \
|
||||
#define POST_BASE_FLAGS64 (FLAG64 (USE_FAbv) | \
|
||||
FLAG64 (USE_FBlw) | \
|
||||
FLAG64 (USE_FPst) | \
|
||||
FLAG64 (USE_MAbv) | \
|
||||
|
@ -516,10 +517,14 @@ reorder_use (const hb_ot_shape_plan_t *plan,
|
|||
hb_font_t *font,
|
||||
hb_buffer_t *buffer)
|
||||
{
|
||||
insert_dotted_circles_use (plan, font, buffer);
|
||||
if (buffer->message (font, "start reordering USE")) {
|
||||
insert_dotted_circles_use (plan, font, buffer);
|
||||
|
||||
foreach_syllable (buffer, start, end)
|
||||
reorder_syllable_use (buffer, start, end);
|
||||
foreach_syllable (buffer, start, end)
|
||||
reorder_syllable_use (buffer, start, end);
|
||||
|
||||
(void) buffer->message (font, "end reordering USE");
|
||||
}
|
||||
|
||||
HB_BUFFER_DEALLOCATE_VAR (buffer, use_category);
|
||||
}
|
||||
|
|
|
@ -46,34 +46,25 @@ enum use_category_t {
|
|||
USE_O = 0, /* OTHER */
|
||||
|
||||
USE_B = 1, /* BASE */
|
||||
USE_IND = 3, /* BASE_IND */
|
||||
USE_N = 4, /* BASE_NUM */
|
||||
USE_GB = 5, /* BASE_OTHER */
|
||||
USE_CGJ = 6, /* CGJ */
|
||||
// USE_F = 7, /* CONS_FINAL */
|
||||
USE_FM = 8, /* CONS_FINAL_MOD */
|
||||
// USE_M = 9, /* CONS_MED */
|
||||
// USE_CM = 10, /* CONS_MOD */
|
||||
USE_SUB = 11, /* CONS_SUB */
|
||||
USE_H = 12, /* HALANT */
|
||||
|
||||
USE_HN = 13, /* HALANT_NUM */
|
||||
USE_ZWNJ = 14, /* Zero width non-joiner */
|
||||
USE_ZWJ = 15, /* Zero width joiner */
|
||||
USE_WJ = 16, /* Word joiner */
|
||||
USE_Rsv = 17, /* Reserved characters */
|
||||
USE_R = 18, /* REPHA */
|
||||
USE_S = 19, /* SYM */
|
||||
// USE_SM = 20, /* SYM_MOD */
|
||||
USE_VS = 21, /* VARIATION_SELECTOR */
|
||||
// USE_V = 36, /* VOWEL */
|
||||
// USE_VM = 40, /* VOWEL_MOD */
|
||||
USE_CS = 43, /* CONS_WITH_STACKER */
|
||||
|
||||
/* https://github.com/harfbuzz/harfbuzz/issues/1102 */
|
||||
USE_HVM = 44, /* HALANT_OR_VOWEL_MODIFIER */
|
||||
|
||||
USE_Sk = 48, /* SAKOT */
|
||||
USE_G = 49, /* HIEROGLYPH */
|
||||
USE_J = 50, /* HIEROGLYPH_JOINER */
|
||||
USE_SB = 51, /* HIEROGLYPH_SEGMENT_BEGIN */
|
||||
USE_SE = 52, /* HIEROGLYPH_SEGMENT_END */
|
||||
|
||||
USE_FAbv = 24, /* CONS_FINAL_ABOVE */
|
||||
USE_FBlw = 25, /* CONS_FINAL_BELOW */
|
||||
|
|
|
@ -320,7 +320,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
switch (buffer->cur (1).codepoint)
|
||||
{
|
||||
case 0x0DCAu: case 0x0DD9u: case 0x0DDAu: case 0x0DDCu:
|
||||
case 0x0DDDu:
|
||||
case 0x0DDDu: case 0x0DDEu:
|
||||
matched = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -341,6 +341,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
|||
|
||||
/* Unicode-6.1 additions */
|
||||
case HB_SCRIPT_CHAKMA:
|
||||
case HB_SCRIPT_MIAO:
|
||||
case HB_SCRIPT_SHARADA:
|
||||
case HB_SCRIPT_TAKRI:
|
||||
|
||||
|
@ -359,6 +360,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
|||
|
||||
/* Unicode-8.0 additions */
|
||||
case HB_SCRIPT_AHOM:
|
||||
case HB_SCRIPT_MULTANI:
|
||||
|
||||
/* Unicode-9.0 additions */
|
||||
//case HB_SCRIPT_ADLAM:
|
||||
|
@ -376,10 +378,15 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
|
|||
case HB_SCRIPT_GUNJALA_GONDI:
|
||||
//case HB_SCRIPT_HANIFI_ROHINGYA:
|
||||
case HB_SCRIPT_MAKASAR:
|
||||
case HB_SCRIPT_MEDEFAIDRIN:
|
||||
case HB_SCRIPT_OLD_SOGDIAN:
|
||||
//case HB_SCRIPT_SOGDIAN:
|
||||
|
||||
/* Unicode-12.0 additions */
|
||||
case HB_SCRIPT_ELYMAIC:
|
||||
case HB_SCRIPT_NANDINAGARI:
|
||||
case HB_SCRIPT_NYIAKENG_PUACHUE_HMONG:
|
||||
case HB_SCRIPT_WANCHO:
|
||||
|
||||
/* Unicode-13.0 additions */
|
||||
case HB_SCRIPT_CHORASMIAN:
|
||||
|
|
|
@ -301,7 +301,7 @@ position_mark (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
/* Don't shift down "above" marks too much. */
|
||||
if ((y_gap > 0) != (pos.y_offset > 0))
|
||||
{
|
||||
unsigned int correction = -pos.y_offset / 2;
|
||||
int correction = -pos.y_offset / 2;
|
||||
base_extents.y_bearing += correction;
|
||||
base_extents.height -= correction;
|
||||
pos.y_offset += correction;
|
||||
|
|
|
@ -373,7 +373,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
|
|||
|
||||
/* Second round, reorder (inplace) */
|
||||
|
||||
if (!all_simple)
|
||||
if (!all_simple && buffer->message(font, "start reorder"))
|
||||
{
|
||||
count = buffer->len;
|
||||
for (unsigned int i = 0; i < count; i++)
|
||||
|
@ -399,6 +399,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
|
|||
|
||||
i = end;
|
||||
}
|
||||
(void) buffer->message(font, "end reorder");
|
||||
}
|
||||
if (buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_CGJ)
|
||||
{
|
||||
|
@ -408,7 +409,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
|
|||
*/
|
||||
for (unsigned int i = 1; i + 1 < buffer->len; i++)
|
||||
if (buffer->info[i].codepoint == 0x034Fu/*CGJ*/ &&
|
||||
info_cc(buffer->info[i-1]) <= info_cc(buffer->info[i+1]))
|
||||
(info_cc(buffer->info[i+1]) == 0 || info_cc(buffer->info[i-1]) <= info_cc(buffer->info[i+1])))
|
||||
{
|
||||
_hb_glyph_info_unhide (&buffer->info[i]);
|
||||
}
|
||||
|
|
|
@ -896,8 +896,11 @@ hb_ot_substitute_post (const hb_ot_shape_context_t *c)
|
|||
hb_aat_layout_remove_deleted_glyphs (c->buffer);
|
||||
#endif
|
||||
|
||||
if (c->plan->shaper->postprocess_glyphs)
|
||||
if (c->plan->shaper->postprocess_glyphs &&
|
||||
c->buffer->message(c->font, "start postprocess-glyphs")) {
|
||||
c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
|
||||
(void) c->buffer->message(c->font, "end postprocess-glyphs");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1120,8 +1123,11 @@ hb_ot_shape_internal (hb_ot_shape_context_t *c)
|
|||
|
||||
hb_ensure_native_direction (c->buffer);
|
||||
|
||||
if (c->plan->shaper->preprocess_text)
|
||||
if (c->plan->shaper->preprocess_text &&
|
||||
c->buffer->message(c->font, "start preprocess-text")) {
|
||||
c->plan->shaper->preprocess_text (c->plan, c->buffer, c->font);
|
||||
(void) c->buffer->message(c->font, "end preprocess-text");
|
||||
}
|
||||
|
||||
hb_ot_substitute_pre (c);
|
||||
hb_ot_position (c);
|
||||
|
@ -1155,6 +1161,12 @@ _hb_ot_shape (hb_shape_plan_t *shape_plan,
|
|||
|
||||
/**
|
||||
* hb_ot_shape_plan_collect_lookups:
|
||||
* @shape_plan: #hb_shape_plan_t to query
|
||||
* @table_tag: GSUB or GPOS
|
||||
* @lookup_indexes: (out): The #hb_set_t set of lookups returned
|
||||
*
|
||||
* Computes the complete set of GSUB or GPOS lookups that are applicable
|
||||
* under a given @shape_plan.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -1189,6 +1201,15 @@ add_char (hb_font_t *font,
|
|||
|
||||
/**
|
||||
* hb_ot_shape_glyphs_closure:
|
||||
* @font: #hb_font_t to work upon
|
||||
* @buffer: The input buffer to compute from
|
||||
* @features: (array length=num_features): The features enabled on the buffer
|
||||
* @num_features: The number of features enabled on the buffer
|
||||
* @glyphs: (out): The #hb_set_t set of glyphs comprising the transitive closure of the query
|
||||
*
|
||||
* Computes the transitive closure of glyphs needed for a specified
|
||||
* input buffer under the given font and feature list. The closure is
|
||||
* computed as a set, not as a list.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -280,6 +280,7 @@ hb_ot_tags_from_language (const char *lang_str,
|
|||
for (i = 0;
|
||||
i < *count &&
|
||||
tag_idx + i < ARRAY_LENGTH (ot_languages) &&
|
||||
ot_languages[tag_idx + i].tag != HB_TAG_NONE &&
|
||||
0 == strcmp (ot_languages[tag_idx + i].language, ot_languages[tag_idx].language);
|
||||
i++)
|
||||
tags[i] = ot_languages[tag_idx + i].tag;
|
||||
|
|
|
@ -52,11 +52,11 @@
|
|||
|
||||
/**
|
||||
* hb_ot_var_has_data:
|
||||
* @face: #hb_face_t to test
|
||||
* @face: The #hb_face_t to work on
|
||||
*
|
||||
* This function allows to verify the presence of OpenType variation data on the face.
|
||||
* Tests whether a face includes any OpenType variation data in the `fvar` table.
|
||||
*
|
||||
* Return value: true if face has a `fvar' table and false otherwise
|
||||
* Return value: true if data found, false otherwise
|
||||
*
|
||||
* Since: 1.4.2
|
||||
**/
|
||||
|
@ -68,6 +68,11 @@ hb_ot_var_has_data (hb_face_t *face)
|
|||
|
||||
/**
|
||||
* hb_ot_var_get_axis_count:
|
||||
* @face: The #hb_face_t to work on
|
||||
*
|
||||
* Fetches the number of OpenType variation axes included in the face.
|
||||
*
|
||||
* Return value: the number of variation axes defined
|
||||
*
|
||||
* Since: 1.4.2
|
||||
**/
|
||||
|
@ -80,9 +85,17 @@ hb_ot_var_get_axis_count (hb_face_t *face)
|
|||
#ifndef HB_DISABLE_DEPRECATED
|
||||
/**
|
||||
* hb_ot_var_get_axes:
|
||||
* @face: #hb_face_t to work upon
|
||||
* @start_offset: offset of the first lookup to retrieve
|
||||
* @axes_count: (inout) (allow-none): Input = the maximum number of variation axes to return;
|
||||
* Output = the actual number of variation axes returned (may be zero)
|
||||
* @axes_array: (out caller-allocates) (array length=axes_count): The array of variation axes found
|
||||
*
|
||||
* Fetches a list of all variation axes in the specified face. The list returned will begin
|
||||
* at the offset provided.
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: 2.2.0
|
||||
* Deprecated: 2.2.0: use hb_ot_var_get_axis_infos() instead
|
||||
**/
|
||||
unsigned int
|
||||
hb_ot_var_get_axes (hb_face_t *face,
|
||||
|
@ -95,9 +108,16 @@ hb_ot_var_get_axes (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_ot_var_find_axis:
|
||||
* @face: #hb_face_t to work upon
|
||||
* @axis_tag: The #hb_tag_t of the variation axis to query
|
||||
* @axis_index: The index of the variation axis
|
||||
* @axis_info: (out): The #hb_ot_var_axis_info_t of the axis tag queried
|
||||
*
|
||||
* Fetches the variation-axis information corresponding to the specified axis tag
|
||||
* in the specified face.
|
||||
*
|
||||
* Since: 1.4.2
|
||||
* Deprecated: 2.2.0
|
||||
* Deprecated: 2.2.0 - use hb_ot_var_find_axis_info() instead
|
||||
**/
|
||||
hb_bool_t
|
||||
hb_ot_var_find_axis (hb_face_t *face,
|
||||
|
@ -111,6 +131,16 @@ hb_ot_var_find_axis (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_ot_var_get_axis_infos:
|
||||
* @face: #hb_face_t to work upon
|
||||
* @start_offset: offset of the first lookup to retrieve
|
||||
* @axes_count: (inout) (allow-none): Input = the maximum number of variation axes to return;
|
||||
* Output = the actual number of variation axes returned (may be zero)
|
||||
* @axes_array: (out caller-allocates) (array length=axes_count): The array of variation axes found
|
||||
*
|
||||
* Fetches a list of all variation axes in the specified face. The list returned will begin
|
||||
* at the offset provided.
|
||||
*
|
||||
* Return value: the number of variation axes in the face
|
||||
*
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
|
@ -125,6 +155,14 @@ hb_ot_var_get_axis_infos (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_ot_var_find_axis_info:
|
||||
* @face: #hb_face_t to work upon
|
||||
* @axis_tag: The #hb_tag_t of the variation axis to query
|
||||
* @axis_info: (out): The #hb_ot_var_axis_info_t of the axis tag queried
|
||||
*
|
||||
* Fetches the variation-axis information corresponding to the specified axis tag
|
||||
* in the specified face.
|
||||
*
|
||||
* Return value: true if data found, false otherwise
|
||||
*
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
|
@ -141,12 +179,34 @@ hb_ot_var_find_axis_info (hb_face_t *face,
|
|||
* Named instances.
|
||||
*/
|
||||
|
||||
/**
|
||||
* hb_ot_var_get_named_instance_count:
|
||||
* @face: The #hb_face_t to work on
|
||||
*
|
||||
* Fetches the number of named instances included in the face.
|
||||
*
|
||||
* Return value: the number of named instances defined
|
||||
*
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
unsigned int
|
||||
hb_ot_var_get_named_instance_count (hb_face_t *face)
|
||||
{
|
||||
return face->table.fvar->get_instance_count ();
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_ot_var_named_instance_get_subfamily_name_id:
|
||||
* @face: The #hb_face_t to work on
|
||||
* @instance_index: The index of the named instance to query
|
||||
*
|
||||
* Fetches the `name` table Name ID that provides display names for
|
||||
* the "Subfamily name" defined for the given named instance in the face.
|
||||
*
|
||||
* Return value: the Name ID found for the Subfamily name
|
||||
*
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
hb_ot_name_id_t
|
||||
hb_ot_var_named_instance_get_subfamily_name_id (hb_face_t *face,
|
||||
unsigned int instance_index)
|
||||
|
@ -154,6 +214,18 @@ hb_ot_var_named_instance_get_subfamily_name_id (hb_face_t *face,
|
|||
return face->table.fvar->get_instance_subfamily_name_id (instance_index);
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_ot_var_named_instance_get_postscript_name_id:
|
||||
* @face: The #hb_face_t to work on
|
||||
* @instance_index: The index of the named instance to query
|
||||
*
|
||||
* Fetches the `name` table Name ID that provides display names for
|
||||
* the "PostScript name" defined for the given named instance in the face.
|
||||
*
|
||||
* Return value: the Name ID found for the PostScript name
|
||||
*
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
hb_ot_name_id_t
|
||||
hb_ot_var_named_instance_get_postscript_name_id (hb_face_t *face,
|
||||
unsigned int instance_index)
|
||||
|
@ -161,6 +233,21 @@ hb_ot_var_named_instance_get_postscript_name_id (hb_face_t *face,
|
|||
return face->table.fvar->get_instance_postscript_name_id (instance_index);
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_ot_var_named_instance_get_design_coords:
|
||||
* @face: The #hb_face_t to work on
|
||||
* @instance_index: The index of the named instance to query
|
||||
* @coords_length: (inout) (allow-none): Input = the maximum number of coordinates to return;
|
||||
* Output = the actual number of coordinates returned (may be zero)
|
||||
* @coords: (out) (array length=coords_length): The array of coordinates found for the query
|
||||
*
|
||||
* Fetches the design-space coordinates corresponding to the given
|
||||
* named instance in the face.
|
||||
*
|
||||
* Return value: the number of variation axes in the face
|
||||
*
|
||||
* Since: 2.2.0
|
||||
**/
|
||||
unsigned int
|
||||
hb_ot_var_named_instance_get_design_coords (hb_face_t *face,
|
||||
unsigned int instance_index,
|
||||
|
@ -173,6 +260,13 @@ hb_ot_var_named_instance_get_design_coords (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_ot_var_normalize_variations:
|
||||
* @face: The #hb_face_t to work on
|
||||
* @variations: The array of variations to normalize
|
||||
* @variations_length: The number of variations to normalize
|
||||
* @coords: (out) (array length=coords_length): The array of normalized coordinates
|
||||
* @coords_length: The length of the coordinate array
|
||||
*
|
||||
* Normalizes all of the coordinates in the given list of variation axes.
|
||||
*
|
||||
* Since: 1.4.2
|
||||
**/
|
||||
|
@ -200,6 +294,17 @@ hb_ot_var_normalize_variations (hb_face_t *face,
|
|||
|
||||
/**
|
||||
* hb_ot_var_normalize_coords:
|
||||
* @face: The #hb_face_t to work on
|
||||
* @coords_length: The length of the coordinate array
|
||||
* @design_coords: The design-space coordinates to normalize
|
||||
* @normalized_coords: (out): The normalized coordinates
|
||||
*
|
||||
* Normalizes the given design-space coordinates. The minimum and maximum
|
||||
* values for the axis are mapped to the interval [-1,1], with the default
|
||||
* axis value mapped to 0.
|
||||
*
|
||||
* Any additional scaling defined in the face's `avar` table is also
|
||||
* applied, as described at https://docs.microsoft.com/en-us/typography/opentype/spec/avar
|
||||
*
|
||||
* Since: 1.4.2
|
||||
**/
|
||||
|
|
|
@ -35,11 +35,36 @@
|
|||
|
||||
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')
|
||||
|
||||
|
||||
|
@ -73,11 +98,24 @@ typedef enum { /*< flags >*/
|
|||
|
||||
/**
|
||||
* 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
|
||||
{
|
||||
typedef struct hb_ot_var_axis_info_t {
|
||||
unsigned int axis_index;
|
||||
hb_tag_t tag;
|
||||
hb_ot_name_id_t name_id;
|
||||
|
|
|
@ -30,11 +30,11 @@
|
|||
/**
|
||||
* SECTION:hb-set
|
||||
* @title: hb-set
|
||||
* @short_description: Object representing a set of integers
|
||||
* @short_description: Objects representing a set of integers
|
||||
* @include: hb.h
|
||||
*
|
||||
* Set objects represent a mathematical set of integer values. They are
|
||||
* used in non-shaping API to query certain set of characters or glyphs,
|
||||
* used in non-shaping APIs to query certain sets of characters or glyphs,
|
||||
* or other integer values.
|
||||
**/
|
||||
|
||||
|
@ -42,7 +42,9 @@
|
|||
/**
|
||||
* hb_set_create: (Xconstructor)
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Creates a new, initially empty set.
|
||||
*
|
||||
* Return value: (transfer full): The new #hb_set_t
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -62,7 +64,9 @@ hb_set_create ()
|
|||
/**
|
||||
* hb_set_get_empty:
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Fetches the singleton empty #hb_set_t.
|
||||
*
|
||||
* Return value: (transfer full): The empty #hb_set_t
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -74,9 +78,11 @@ hb_set_get_empty ()
|
|||
|
||||
/**
|
||||
* hb_set_reference: (skip)
|
||||
* @set: a set.
|
||||
* @set: A set
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Increases the reference count on a set.
|
||||
*
|
||||
* Return value: (transfer full): The set
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -88,7 +94,11 @@ hb_set_reference (hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_destroy: (skip)
|
||||
* @set: a set.
|
||||
* @set: A set
|
||||
*
|
||||
* Decreases the reference count on a set. When
|
||||
* the reference count reaches zero, the set is
|
||||
* destroyed, freeing all memory.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -104,13 +114,15 @@ hb_set_destroy (hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_set_user_data: (skip)
|
||||
* @set: a set.
|
||||
* @key:
|
||||
* @data:
|
||||
* @destroy:
|
||||
* @replace:
|
||||
* @set: A set
|
||||
* @key: The user-data key to set
|
||||
* @data: A pointer to the user data to set
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Return value:
|
||||
* Attaches a user-data key/data pair to the specified set.
|
||||
*
|
||||
* Return value: %true if success, %false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -126,10 +138,13 @@ hb_set_set_user_data (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_get_user_data: (skip)
|
||||
* @set: a set.
|
||||
* @key:
|
||||
* @set: A set
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Fetches the user data associated with the specified key,
|
||||
* attached to the specified set.
|
||||
*
|
||||
* Return value: (transfer none): A pointer to the user data
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -143,11 +158,11 @@ hb_set_get_user_data (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_allocation_successful:
|
||||
* @set: a set.
|
||||
* @set: A set
|
||||
*
|
||||
* Tests whether memory allocation for a set was successful.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if allocation succeeded, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -159,9 +174,9 @@ hb_set_allocation_successful (const hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_clear:
|
||||
* @set: a set.
|
||||
*
|
||||
* @set: A set
|
||||
*
|
||||
* Clears out the contents of a set.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -175,9 +190,9 @@ hb_set_clear (hb_set_t *set)
|
|||
* hb_set_is_empty:
|
||||
* @set: a set.
|
||||
*
|
||||
* Tests whether a set is empty (contains no elements).
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if @set is empty
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -189,12 +204,12 @@ hb_set_is_empty (const hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_has:
|
||||
* @set: a set.
|
||||
* @codepoint:
|
||||
* @set: A set
|
||||
* @codepoint: The element to query
|
||||
*
|
||||
* Tests whether @codepoint belongs to @set.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if @codepoint is in @set, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -207,10 +222,10 @@ hb_set_has (const hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_add:
|
||||
* @set: a set.
|
||||
* @codepoint:
|
||||
*
|
||||
* @set: A set
|
||||
* @codepoint: The element to add to @set
|
||||
*
|
||||
* Adds @codepoint to @set.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -223,11 +238,12 @@ hb_set_add (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_add_range:
|
||||
* @set: a set.
|
||||
* @first:
|
||||
* @last:
|
||||
*
|
||||
* @set: A set
|
||||
* @first: The first element to add to @set
|
||||
* @last: The final element to add to @set
|
||||
*
|
||||
* Adds all of the elements from @first to @last
|
||||
* (inclusive) to @set.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -241,10 +257,10 @@ hb_set_add_range (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_del:
|
||||
* @set: a set.
|
||||
* @codepoint:
|
||||
*
|
||||
* @set: A set
|
||||
* @codepoint: Removes @codepoint from @set
|
||||
*
|
||||
* Removes @codepoint from @set.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -257,11 +273,12 @@ hb_set_del (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_del_range:
|
||||
* @set: a set.
|
||||
* @first:
|
||||
* @last:
|
||||
*
|
||||
* @set: A set
|
||||
* @first: The first element to remove from @set
|
||||
* @last: The final element to remove from @set
|
||||
*
|
||||
* Removes all of the elements from @first to @last
|
||||
* (inclusive) from @set.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -275,10 +292,11 @@ hb_set_del_range (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_is_equal:
|
||||
* @set: a set.
|
||||
* @other: other set.
|
||||
*
|
||||
* @set: A set
|
||||
* @other: Another set
|
||||
*
|
||||
* Tests whether @set and @other are equal (contain the same
|
||||
* elements).
|
||||
*
|
||||
* Return value: %TRUE if the two sets are equal, %FALSE otherwise.
|
||||
*
|
||||
|
@ -293,10 +311,10 @@ hb_set_is_equal (const hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_is_subset:
|
||||
* @set: a set.
|
||||
* @larger_set: other set.
|
||||
*
|
||||
* @set: A set
|
||||
* @larger_set: Another set
|
||||
*
|
||||
* Tests whether @set is a subset of @larger_set.
|
||||
*
|
||||
* Return value: %TRUE if the @set is a subset of (or equal to) @larger_set, %FALSE otherwise.
|
||||
*
|
||||
|
@ -311,10 +329,10 @@ hb_set_is_subset (const hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_set:
|
||||
* @set: a set.
|
||||
* @other:
|
||||
*
|
||||
* @set: A set
|
||||
* @other: Another set
|
||||
*
|
||||
* Makes the contents of @set equal to the contents of @other.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -327,10 +345,10 @@ hb_set_set (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_union:
|
||||
* @set: a set.
|
||||
* @other:
|
||||
*
|
||||
* @set: A set
|
||||
* @other: Another set
|
||||
*
|
||||
* Makes @set the union of @set and @other.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -343,10 +361,10 @@ hb_set_union (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_intersect:
|
||||
* @set: a set.
|
||||
* @other:
|
||||
*
|
||||
* @set: A set
|
||||
* @other: Another set
|
||||
*
|
||||
* Makes @set the intersection of @set and @other.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -359,10 +377,10 @@ hb_set_intersect (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_subtract:
|
||||
* @set: a set.
|
||||
* @other:
|
||||
*
|
||||
* @set: A set
|
||||
* @other: Another set
|
||||
*
|
||||
* Subtracts the contents of @other from @set.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -375,10 +393,11 @@ hb_set_subtract (hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_symmetric_difference:
|
||||
* @set: a set.
|
||||
* @other:
|
||||
*
|
||||
* @set: A set
|
||||
* @other: Another set
|
||||
*
|
||||
* Makes @set the symmetric difference of @set
|
||||
* and @other.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -392,9 +411,9 @@ hb_set_symmetric_difference (hb_set_t *set,
|
|||
#ifndef HB_DISABLE_DEPRECATED
|
||||
/**
|
||||
* hb_set_invert:
|
||||
* @set: a set.
|
||||
*
|
||||
* @set: A set
|
||||
*
|
||||
* Inverts the contents of @set.
|
||||
*
|
||||
* Since: 0.9.10
|
||||
*
|
||||
|
@ -408,11 +427,11 @@ hb_set_invert (hb_set_t *set HB_UNUSED)
|
|||
|
||||
/**
|
||||
* hb_set_get_population:
|
||||
* @set: a set.
|
||||
* @set: A set
|
||||
*
|
||||
* Returns the number of numbers in the set.
|
||||
* Returns the number of elements in the set.
|
||||
*
|
||||
* Return value: set population.
|
||||
* Return value: The population of @set
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -424,11 +443,11 @@ hb_set_get_population (const hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_get_min:
|
||||
* @set: a set.
|
||||
* @set: A set
|
||||
*
|
||||
* Finds the minimum number in the set.
|
||||
* Finds the smallest element in the set.
|
||||
*
|
||||
* Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
|
||||
* Return value: minimum of @set, or %HB_SET_VALUE_INVALID if @set is empty.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -440,11 +459,11 @@ hb_set_get_min (const hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_get_max:
|
||||
* @set: a set.
|
||||
* @set: A set
|
||||
*
|
||||
* Finds the maximum number in the set.
|
||||
* Finds the largest element in the set.
|
||||
*
|
||||
* Return value: minimum of the set, or %HB_SET_VALUE_INVALID if set is empty.
|
||||
* Return value: maximum of @set, or %HB_SET_VALUE_INVALID if @set is empty.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -456,14 +475,15 @@ hb_set_get_max (const hb_set_t *set)
|
|||
|
||||
/**
|
||||
* hb_set_next:
|
||||
* @set: a set.
|
||||
* @codepoint: (inout):
|
||||
* @set: A set
|
||||
* @codepoint: (inout): Input = Code point to query
|
||||
* Output = Code point retrieved
|
||||
*
|
||||
* Gets the next number in @set that is greater than current value of @codepoint.
|
||||
* Fetches the next element in @set that is greater than current value of @codepoint.
|
||||
*
|
||||
* Set @codepoint to %HB_SET_VALUE_INVALID to get started.
|
||||
*
|
||||
* Return value: whether there was a next value.
|
||||
* Return value: %true if there was a next value, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -476,14 +496,15 @@ hb_set_next (const hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_previous:
|
||||
* @set: a set.
|
||||
* @codepoint: (inout):
|
||||
* @set: A set
|
||||
* @codepoint: (inout): Input = Code point to query
|
||||
* Output = Code point retrieved
|
||||
*
|
||||
* Gets the previous number in @set that is lower than current value of @codepoint.
|
||||
* Fetches the previous element in @set that is lower than current value of @codepoint.
|
||||
*
|
||||
* Set @codepoint to %HB_SET_VALUE_INVALID to get started.
|
||||
*
|
||||
* Return value: whether there was a previous value.
|
||||
* Return value: %true if there was a previous value, false otherwise
|
||||
*
|
||||
* Since: 1.8.0
|
||||
**/
|
||||
|
@ -496,16 +517,17 @@ hb_set_previous (const hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_next_range:
|
||||
* @set: a set.
|
||||
* @first: (out): output first codepoint in the range.
|
||||
* @last: (inout): input current last and output last codepoint in the range.
|
||||
* @set: A set
|
||||
* @first: (out): The first code point in the range
|
||||
* @last: (inout): Input = The current last code point in the range
|
||||
* Output = The last code point in the range
|
||||
*
|
||||
* Gets the next consecutive range of numbers in @set that
|
||||
* Fetches the next consecutive range of elements in @set that
|
||||
* are greater than current value of @last.
|
||||
*
|
||||
* Set @last to %HB_SET_VALUE_INVALID to get started.
|
||||
*
|
||||
* Return value: whether there was a next range.
|
||||
* Return value: %true if there was a next range, false otherwise
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -519,16 +541,17 @@ hb_set_next_range (const hb_set_t *set,
|
|||
|
||||
/**
|
||||
* hb_set_previous_range:
|
||||
* @set: a set.
|
||||
* @first: (inout): input current first and output first codepoint in the range.
|
||||
* @last: (out): output last codepoint in the range.
|
||||
* @set: A set
|
||||
* @first: (inout): Input = The current first code point in the range
|
||||
* Output = The first code point in the range
|
||||
* @last: (out): The last code point in the range
|
||||
*
|
||||
* Gets the previous consecutive range of numbers in @set that
|
||||
* are less than current value of @first.
|
||||
* Fetches the previous consecutive range of elements in @set that
|
||||
* are greater than current value of @last.
|
||||
*
|
||||
* Set @first to %HB_SET_VALUE_INVALID to get started.
|
||||
*
|
||||
* Return value: whether there was a previous range.
|
||||
* Return value: %true if there was a previous range, false otherwise
|
||||
*
|
||||
* Since: 1.8.0
|
||||
**/
|
||||
|
|
|
@ -41,6 +41,15 @@ HB_BEGIN_DECLS
|
|||
*/
|
||||
#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;
|
||||
|
||||
|
||||
|
|
|
@ -37,10 +37,17 @@
|
|||
* @short_description: Object representing a shaping plan
|
||||
* @include: hb.h
|
||||
*
|
||||
* Shape plans are not used for shaping directly, but can be access to query
|
||||
* certain information about how shaping will perform given a set of input
|
||||
* parameters (script, language, direction, features, etc.)
|
||||
* Most client would not need to deal with shape plans directly.
|
||||
* Shape plans are an internal mechanism. Each plan contains state
|
||||
* describing how HarfBuzz will shape a particular text segment, based on
|
||||
* the combination of segment properties and the capabilities in the
|
||||
* font face in use.
|
||||
*
|
||||
* Shape plans are not used for shaping directly, but can be queried to
|
||||
* access certain information about how shaping will perform, given a set
|
||||
* of specific input parameters (script, language, direction, features,
|
||||
* etc.).
|
||||
*
|
||||
* Most client programs will not need to deal with shape plans directly.
|
||||
**/
|
||||
|
||||
|
||||
|
@ -164,15 +171,16 @@ hb_shape_plan_key_t::equal (const hb_shape_plan_key_t *other)
|
|||
|
||||
/**
|
||||
* hb_shape_plan_create: (Xconstructor)
|
||||
* @face:
|
||||
* @props:
|
||||
* @user_features: (array length=num_user_features):
|
||||
* @num_user_features:
|
||||
* @shaper_list: (array zero-terminated=1):
|
||||
* @face: #hb_face_t to use
|
||||
* @props: The #hb_segment_properties_t of the segment
|
||||
* @user_features: (array length=num_user_features): The list of user-selected features
|
||||
* @num_user_features: The number of user-selected features
|
||||
* @shaper_list: (array zero-terminated=1): List of shapers to try
|
||||
*
|
||||
* Constructs a shaping plan for a combination of @face, @user_features, @props,
|
||||
* and @shaper_list.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The shaping plan
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -189,6 +197,24 @@ hb_shape_plan_create (hb_face_t *face,
|
|||
shaper_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_shape_plan_create2: (Xconstructor)
|
||||
* @face: #hb_face_t to use
|
||||
* @props: The #hb_segment_properties_t of the segment
|
||||
* @user_features: (array length=num_user_features): The list of user-selected features
|
||||
* @num_user_features: The number of user-selected features
|
||||
* @coords: (array length=num_coords): The list of variation-space coordinates
|
||||
* @num_coords: The number of variation-space coordinates
|
||||
* @shaper_list: (array zero-terminated=1): List of shapers to try
|
||||
*
|
||||
* The variable-font version of #hb_shape_plan_create.
|
||||
* Constructs a shaping plan for a combination of @face, @user_features, @props,
|
||||
* and @shaper_list, plus the variation-space coordinates @coords.
|
||||
*
|
||||
* Return value: (transfer full): The shaping plan
|
||||
*
|
||||
* Since: 1.4.0
|
||||
**/
|
||||
hb_shape_plan_t *
|
||||
hb_shape_plan_create2 (hb_face_t *face,
|
||||
const hb_segment_properties_t *props,
|
||||
|
@ -248,9 +274,9 @@ bail:
|
|||
/**
|
||||
* hb_shape_plan_get_empty:
|
||||
*
|
||||
* Fetches the singleton empty shaping plan.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The empty shaping plan
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -262,11 +288,11 @@ hb_shape_plan_get_empty ()
|
|||
|
||||
/**
|
||||
* hb_shape_plan_reference: (skip)
|
||||
* @shape_plan: a shape plan.
|
||||
* @shape_plan: A shaping plan
|
||||
*
|
||||
* Increases the reference count on the given shaping plan.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): @shape_plan
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -278,9 +304,11 @@ hb_shape_plan_reference (hb_shape_plan_t *shape_plan)
|
|||
|
||||
/**
|
||||
* hb_shape_plan_destroy: (skip)
|
||||
* @shape_plan: a shape plan.
|
||||
*
|
||||
* @shape_plan: A shaping plan
|
||||
*
|
||||
* Decreases the reference count on the given shaping plan. When the
|
||||
* reference count reaches zero, the shaping plan is destroyed,
|
||||
* freeing all memory.
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -298,13 +326,13 @@ hb_shape_plan_destroy (hb_shape_plan_t *shape_plan)
|
|||
|
||||
/**
|
||||
* hb_shape_plan_set_user_data: (skip)
|
||||
* @shape_plan: a shape plan.
|
||||
* @key:
|
||||
* @data:
|
||||
* @destroy:
|
||||
* @replace:
|
||||
*
|
||||
* @shape_plan: A shaping plan
|
||||
* @key: The user-data key to set
|
||||
* @data: A pointer to the user data
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Attaches a user-data key/data pair to the given shaping plan.
|
||||
*
|
||||
* Return value:
|
||||
*
|
||||
|
@ -322,12 +350,13 @@ hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan,
|
|||
|
||||
/**
|
||||
* hb_shape_plan_get_user_data: (skip)
|
||||
* @shape_plan: a shape plan.
|
||||
* @key:
|
||||
* @shape_plan: A shaping plan
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Fetches the user data associated with the specified key,
|
||||
* attached to the specified shaping plan.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): A pointer to the user data
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -340,11 +369,11 @@ hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan,
|
|||
|
||||
/**
|
||||
* hb_shape_plan_get_shaper:
|
||||
* @shape_plan: a shape plan.
|
||||
* @shape_plan: A shaping plan
|
||||
*
|
||||
* Fetches the shaper from a given shaping plan.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): The shaper
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -355,26 +384,12 @@ hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* hb_shape_plan_execute:
|
||||
* @shape_plan: a shape plan.
|
||||
* @font: a font.
|
||||
* @buffer: a buffer.
|
||||
* @features: (array length=num_features):
|
||||
* @num_features:
|
||||
*
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
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)
|
||||
static bool
|
||||
_hb_shape_plan_execute_internal (hb_shape_plan_t *shape_plan,
|
||||
hb_font_t *font,
|
||||
hb_buffer_t *buffer,
|
||||
const hb_feature_t *features,
|
||||
unsigned int num_features)
|
||||
{
|
||||
DEBUG_MSG_FUNC (SHAPE_PLAN, shape_plan,
|
||||
"num_features=%d shaper_func=%p, shaper_name=%s",
|
||||
|
@ -386,7 +401,8 @@ hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
|
|||
return true;
|
||||
|
||||
assert (!hb_object_is_immutable (buffer));
|
||||
assert (buffer->content_type == HB_BUFFER_CONTENT_TYPE_UNICODE);
|
||||
|
||||
buffer->assert_unicode ();
|
||||
|
||||
if (unlikely (hb_object_is_inert (shape_plan)))
|
||||
return false;
|
||||
|
@ -412,6 +428,36 @@ hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
|
|||
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* hb_shape_plan_execute:
|
||||
* @shape_plan: A shaping plan
|
||||
* @font: The #hb_font_t to use
|
||||
* @buffer: The #hb_buffer_t to work upon
|
||||
* @features: (array length=num_features): Features to enable
|
||||
* @num_features: The number of features to enable
|
||||
*
|
||||
* Executes the given shaping plan on the specified buffer, using
|
||||
* the given @font and @features.
|
||||
*
|
||||
* Return value:
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
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)
|
||||
{
|
||||
bool ret = _hb_shape_plan_execute_internal (shape_plan, font, buffer,
|
||||
features, num_features);
|
||||
|
||||
if (ret && buffer->content_type == HB_BUFFER_CONTENT_TYPE_UNICODE)
|
||||
buffer->content_type = HB_BUFFER_CONTENT_TYPE_GLYPHS;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
@ -420,15 +466,16 @@ hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
|
|||
|
||||
/**
|
||||
* hb_shape_plan_create_cached:
|
||||
* @face:
|
||||
* @props:
|
||||
* @user_features: (array length=num_user_features):
|
||||
* @num_user_features:
|
||||
* @shaper_list: (array zero-terminated=1):
|
||||
* @face: #hb_face_t to use
|
||||
* @props: The #hb_segment_properties_t of the segment
|
||||
* @user_features: (array length=num_user_features): The list of user-selected features
|
||||
* @num_user_features: The number of user-selected features
|
||||
* @shaper_list: (array zero-terminated=1): List of shapers to try
|
||||
*
|
||||
* Creates a cached shaping plan suitable for reuse, for a combination
|
||||
* of @face, @user_features, @props, and @shaper_list.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The shaping plan
|
||||
*
|
||||
* Since: 0.9.7
|
||||
**/
|
||||
|
@ -445,6 +492,25 @@ hb_shape_plan_create_cached (hb_face_t *face,
|
|||
shaper_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_shape_plan_create_cached2:
|
||||
* @face: #hb_face_t to use
|
||||
* @props: The #hb_segment_properties_t of the segment
|
||||
* @user_features: (array length=num_user_features): The list of user-selected features
|
||||
* @num_user_features: The number of user-selected features
|
||||
* @coords: (array length=num_coords): The list of variation-space coordinates
|
||||
* @num_coords: The number of variation-space coordinates
|
||||
* @shaper_list: (array zero-terminated=1): List of shapers to try
|
||||
*
|
||||
* The variable-font version of #hb_shape_plan_create_cached.
|
||||
* Creates a cached shaping plan suitable for reuse, for a combination
|
||||
* of @face, @user_features, @props, and @shaper_list, plus the
|
||||
* variation-space coordinates @coords.
|
||||
*
|
||||
* Return value: (transfer full): The shaping plan
|
||||
*
|
||||
* Since: 1.4.0
|
||||
**/
|
||||
hb_shape_plan_t *
|
||||
hb_shape_plan_create_cached2 (hb_face_t *face,
|
||||
const hb_segment_properties_t *props,
|
||||
|
|
|
@ -36,6 +36,20 @@
|
|||
|
||||
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 *
|
||||
|
|
|
@ -132,8 +132,6 @@ hb_shape_full (hb_font_t *font,
|
|||
unsigned int num_features,
|
||||
const char * const *shaper_list)
|
||||
{
|
||||
if (unlikely (hb_object_is_immutable (buffer))) return false;
|
||||
|
||||
hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached2 (font->face, &buffer->props,
|
||||
features, num_features,
|
||||
font->coords, font->num_coords,
|
||||
|
@ -141,8 +139,6 @@ hb_shape_full (hb_font_t *font,
|
|||
hb_bool_t res = hb_shape_plan_execute (shape_plan, font, buffer, features, num_features);
|
||||
hb_shape_plan_destroy (shape_plan);
|
||||
|
||||
if (res)
|
||||
buffer->content_type = HB_BUFFER_CONTENT_TYPE_GLYPHS;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,11 +40,16 @@
|
|||
* @include: hb.h
|
||||
*
|
||||
* Unicode functions are used to access Unicode character properties.
|
||||
* Client can pass its own Unicode functions to HarfBuzz, or access
|
||||
* the built-in Unicode functions that come with HarfBuzz.
|
||||
* With these functions, client programs can query various properties from
|
||||
* the Unicode Character Database for any code point, such as General
|
||||
* Category (gc), Script (sc), Canonical Combining Class (ccc), etc.
|
||||
*
|
||||
* With the Unicode functions, one can query variour Unicode character
|
||||
* properties, such as General Category, Script, Combining Class, etc.
|
||||
* Client programs can optionally pass in their own Unicode functions
|
||||
* that implement the same queries. The set of functions available is
|
||||
* defined by the virtual methods in #hb_unicode_funcs_t.
|
||||
*
|
||||
* HarfBuzz provides built-in default functions for each method in
|
||||
* #hb_unicode_funcs_t.
|
||||
**/
|
||||
|
||||
|
||||
|
@ -133,6 +138,16 @@ hb_unicode_decompose_compatibility_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED
|
|||
#include "hb-icu.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hb_unicode_funcs_get_default:
|
||||
*
|
||||
* Fetches a pointer to the default Unicode-functions structure that is used
|
||||
* when no functions are explicitly set on #hb_buffer_t.
|
||||
*
|
||||
* Return value: (transfer none): a pointer to the #hb_unicode_funcs_t Unicode-functions structure
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
hb_unicode_funcs_t *
|
||||
hb_unicode_funcs_get_default ()
|
||||
{
|
||||
|
@ -155,11 +170,11 @@ hb_unicode_funcs_get_default ()
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_create: (Xconstructor)
|
||||
* @parent: (nullable):
|
||||
* @parent: (nullable): Parent Unicode-functions structure
|
||||
*
|
||||
* Creates a new #hb_unicode_funcs_t structure of Unicode functions.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The Unicode-functions structure
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -203,9 +218,9 @@ DEFINE_NULL_INSTANCE (hb_unicode_funcs_t) =
|
|||
/**
|
||||
* hb_unicode_funcs_get_empty:
|
||||
*
|
||||
* Fetches the singleton empty Unicode-functions structure.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The empty Unicode-functions structure
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -217,11 +232,11 @@ hb_unicode_funcs_get_empty ()
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_reference: (skip)
|
||||
* @ufuncs: Unicode functions.
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
*
|
||||
* Increases the reference count on a Unicode-functions structure.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer full):
|
||||
* Return value: (transfer full): The Unicode-functions structure
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -233,9 +248,11 @@ hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs)
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_destroy: (skip)
|
||||
* @ufuncs: Unicode functions.
|
||||
*
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
*
|
||||
* Decreases the reference count on a Unicode-functions structure. When
|
||||
* the reference count reaches zero, the Unicode-functions structure is
|
||||
* destroyed, freeing all memory.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -256,15 +273,15 @@ hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs)
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_set_user_data: (skip)
|
||||
* @ufuncs: Unicode functions.
|
||||
* @key:
|
||||
* @data:
|
||||
* @destroy:
|
||||
* @replace:
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
* @key: The user-data key
|
||||
* @data: A pointer to the user data
|
||||
* @destroy: (optional): A callback to call when @data is not needed anymore
|
||||
* @replace: Whether to replace an existing data with the same key
|
||||
*
|
||||
* Attaches a user-data key/data pair to the specified Unicode-functions structure.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if success, %false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -280,12 +297,13 @@ hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_get_user_data: (skip)
|
||||
* @ufuncs: Unicode functions.
|
||||
* @key:
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
* @key: The user-data key to query
|
||||
*
|
||||
* Fetches the user-data associated with the specified key,
|
||||
* attached to the specified Unicode-functions structure.
|
||||
*
|
||||
*
|
||||
* Return value: (transfer none):
|
||||
* Return value: (transfer none): A pointer to the user data
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -299,9 +317,10 @@ hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_make_immutable:
|
||||
* @ufuncs: Unicode functions.
|
||||
*
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
*
|
||||
* Makes the specified Unicode-functions structure
|
||||
* immutable.
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -316,11 +335,12 @@ hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs)
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_is_immutable:
|
||||
* @ufuncs: Unicode functions.
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
*
|
||||
* Tests whether the specified Unicode-functions structure
|
||||
* is immutable.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if @ufuncs is immutable, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -332,11 +352,12 @@ hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs)
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_get_parent:
|
||||
* @ufuncs: Unicode functions.
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
*
|
||||
* Fetches the parent of the Unicode-functions structure
|
||||
* @ufuncs.
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Return value: The parent Unicode-functions structure
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -389,14 +410,18 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
|
|||
|
||||
/**
|
||||
* hb_unicode_compose:
|
||||
* @ufuncs: Unicode functions.
|
||||
* @a:
|
||||
* @b:
|
||||
* @ab: (out):
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
* @a: The first Unicode code point to compose
|
||||
* @b: The second Unicode code point to compose
|
||||
* @ab: (out): The composition of @a, @b
|
||||
*
|
||||
* Fetches the composition of a sequence of two Unicode
|
||||
* code points.
|
||||
*
|
||||
* Calls the composition function of the specified
|
||||
* Unicode-functions structure @ufuncs.
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if @a and @b composed, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -411,14 +436,17 @@ hb_unicode_compose (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_decompose:
|
||||
* @ufuncs: Unicode functions.
|
||||
* @ab:
|
||||
* @a: (out):
|
||||
* @b: (out):
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
* @ab: Unicode code point to decompose
|
||||
* @a: (out): The first code point of the decomposition of @ab
|
||||
* @b: (out): The second code point of the decomposition of @ab
|
||||
*
|
||||
* Fetches the decomposition of a Unicode code point.
|
||||
*
|
||||
* Calls the decomposition function of the specified
|
||||
* Unicode-functions structure @ufuncs.
|
||||
*
|
||||
* Return value:
|
||||
* Return value: %true if @ab was decomposed, false otherwise
|
||||
*
|
||||
* Since: 0.9.2
|
||||
**/
|
||||
|
@ -434,11 +462,12 @@ hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
|
|||
#ifndef HB_DISABLE_DEPRECATED
|
||||
/**
|
||||
* hb_unicode_decompose_compatibility:
|
||||
* @ufuncs: Unicode functions.
|
||||
* @u:
|
||||
* @decomposed: (out):
|
||||
*
|
||||
* @ufuncs: The Unicode-functions structure
|
||||
* @u: Code point to decompose
|
||||
* @decomposed: (out): Compatibility decomposition of @u
|
||||
*
|
||||
* Fetches the compatibility decomposition of a Unicode
|
||||
* code point. Deprecated.
|
||||
*
|
||||
* Return value:
|
||||
*
|
||||
|
|
|
@ -48,7 +48,42 @@ HB_BEGIN_DECLS
|
|||
#define HB_UNICODE_MAX 0x10FFFFu
|
||||
|
||||
|
||||
/* hb_unicode_general_category_t */
|
||||
/**
|
||||
* 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
|
||||
|
@ -85,13 +120,74 @@ typedef enum
|
|||
HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR /* Zs */
|
||||
} hb_unicode_general_category_t;
|
||||
|
||||
/* hb_unicode_combining_class_t */
|
||||
|
||||
/* Note: newer versions of Unicode may add new values. Clients should be ready to handle
|
||||
* any value in the 0..254 range being returned from hb_unicode_combining_class().
|
||||
*/
|
||||
|
||||
/* Unicode Character Database property: Canonical_Combining_Class (ccc) */
|
||||
/**
|
||||
* 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,
|
||||
|
@ -176,6 +272,18 @@ typedef enum
|
|||
* 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;
|
||||
|
||||
|
||||
|
@ -227,40 +335,141 @@ hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs);
|
|||
|
||||
/* 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);
|
||||
|
||||
/* setters */
|
||||
/* func setters */
|
||||
|
||||
/**
|
||||
* hb_unicode_funcs_set_combining_class_func:
|
||||
* @ufuncs: a Unicode function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -271,12 +480,12 @@ hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_set_general_category_func:
|
||||
* @ufuncs: a Unicode function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -287,12 +496,12 @@ hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_set_mirroring_func:
|
||||
* @ufuncs: a Unicode function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -303,12 +512,12 @@ hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_set_script_func:
|
||||
* @ufuncs: a Unicode function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -319,12 +528,12 @@ hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_set_compose_func:
|
||||
* @ufuncs: a Unicode function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -335,12 +544,12 @@ hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* hb_unicode_funcs_set_decompose_func:
|
||||
* @ufuncs: a Unicode function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified):
|
||||
* @user_data:
|
||||
* @destroy:
|
||||
*
|
||||
* @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
|
||||
**/
|
||||
|
@ -353,6 +562,13 @@ hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* 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
|
||||
**/
|
||||
|
@ -362,6 +578,13 @@ hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* 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
|
||||
**/
|
||||
|
@ -371,6 +594,13 @@ hb_unicode_general_category (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* 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
|
||||
**/
|
||||
|
@ -380,6 +610,13 @@ hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs,
|
|||
|
||||
/**
|
||||
* 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
|
||||
**/
|
||||
|
@ -387,12 +624,40 @@ 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,
|
||||
|
|
|
@ -38,9 +38,9 @@ HB_BEGIN_DECLS
|
|||
|
||||
#define HB_VERSION_MAJOR 2
|
||||
#define HB_VERSION_MINOR 7
|
||||
#define HB_VERSION_MICRO 2
|
||||
#define HB_VERSION_MICRO 4
|
||||
|
||||
#define HB_VERSION_STRING "2.7.2"
|
||||
#define HB_VERSION_STRING "2.7.4"
|
||||
|
||||
#define HB_VERSION_ATLEAST(major,minor,micro) \
|
||||
((major)*10000+(minor)*100+(micro) <= \
|
||||
|
|
Loading…
Reference in New Issue