| Index: third_party/harfbuzz-ng/src/hb-buffer.cc
|
| diff --git a/third_party/harfbuzz-ng/src/hb-buffer.cc b/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| index 5c71734b9de9a1d61b8c36deb40f376a31cc8bcf..c731ed189fd78850a29d8f4bdf10f275c1793c96 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| @@ -35,8 +35,26 @@
|
| #define HB_DEBUG_BUFFER (HB_DEBUG+0)
|
| #endif
|
|
|
| +/**
|
| + * SECTION: hb-buffer
|
| + * @title: Buffers
|
| + * @short_description: Input and output buffers
|
| + * @include: hb.h
|
| + *
|
| + * Buffers serve dual role in HarfBuzz; they hold the input characters that are
|
| + * passed hb_shape(), and after shaping they hold the output glyphs.
|
| + **/
|
|
|
| /**
|
| + * hb_segment_properties_equal:
|
| + * @a: first #hb_segment_properties_t to compare.
|
| + * @b: second #hb_segment_properties_t to compare.
|
| + *
|
| + * Checks the equality of two #hb_segment_properties_t's.
|
| + *
|
| + * Return value: (transfer full):
|
| + * %true if all properties of @a equal those of @b, false otherwise.
|
| + *
|
| * Since: 0.9.7
|
| **/
|
| hb_bool_t
|
| @@ -52,6 +70,14 @@ hb_segment_properties_equal (const hb_segment_properties_t *a,
|
| }
|
|
|
| /**
|
| + * hb_segment_properties_hash:
|
| + * @p: #hb_segment_properties_t to hash.
|
| + *
|
| + * Creates a hash representing @p.
|
| + *
|
| + * Return value:
|
| + * A hash of @p.
|
| + *
|
| * Since: 0.9.7
|
| **/
|
| unsigned int
|
| @@ -706,9 +732,14 @@ void hb_buffer_t::deallocate_var_all (void)
|
| /**
|
| * hb_buffer_create: (Xconstructor)
|
| *
|
| - *
|
| + * Creates a new #hb_buffer_t with all properties to defaults.
|
| *
|
| - * Return value: (transfer full)
|
| + * Return value: (transfer full):
|
| + * A newly allocated #hb_buffer_t with a reference count of 1. The initial
|
| + * reference count should be released with hb_buffer_destroy() when you are done
|
| + * using the #hb_buffer_t. This function never returns %NULL. If memory cannot
|
| + * be allocated, a special #hb_buffer_t object will be returned on which
|
| + * hb_buffer_allocation_successful() returns %false.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -763,11 +794,13 @@ hb_buffer_get_empty (void)
|
|
|
| /**
|
| * hb_buffer_reference: (skip)
|
| - * @buffer: a buffer.
|
| + * @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.
|
| *
|
| * Return value: (transfer full):
|
| + * The referenced #hb_buffer_t.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -779,9 +812,11 @@ hb_buffer_reference (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_destroy: (skip)
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * Deallocate the @buffer.
|
| + * Decreases the reference count on @buffer by one. If the result is zero, then
|
| + * @buffer and all associated resources are freed. See hb_buffer_reference().
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -794,13 +829,15 @@ hb_buffer_destroy (hb_buffer_t *buffer)
|
|
|
| free (buffer->info);
|
| free (buffer->pos);
|
| + if (buffer->message_destroy)
|
| + buffer->message_destroy (buffer->message_data);
|
|
|
| free (buffer);
|
| }
|
|
|
| /**
|
| * hb_buffer_set_user_data: (skip)
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @key:
|
| * @data:
|
| * @destroy:
|
| @@ -824,7 +861,7 @@ hb_buffer_set_user_data (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_user_data: (skip)
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @key:
|
| *
|
| *
|
| @@ -843,10 +880,11 @@ hb_buffer_get_user_data (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_set_content_type:
|
| - * @buffer: a buffer.
|
| - * @content_type:
|
| + * @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).
|
| *
|
| * Since: 0.9.5
|
| **/
|
| @@ -859,11 +897,12 @@ hb_buffer_set_content_type (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_content_type:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * see hb_buffer_set_content_type().
|
| *
|
| - * Return value:
|
| + * Return value:
|
| + * The type of @buffer contents.
|
| *
|
| * Since: 0.9.5
|
| **/
|
| @@ -876,7 +915,7 @@ hb_buffer_get_content_type (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_unicode_funcs:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @unicode_funcs:
|
| *
|
| *
|
| @@ -901,7 +940,7 @@ hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_unicode_funcs:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| *
|
| *
|
| @@ -917,10 +956,16 @@ hb_buffer_get_unicode_funcs (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_direction:
|
| - * @buffer: a buffer.
|
| - * @direction:
|
| + * @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
|
| + * setting @buffer direction, and it controls the visual direction for the
|
| + * output glyphs; for RTL direction the glyphs will be reversed. Many layout
|
| + * features depend on the proper setting of the direction, for example,
|
| + * reversing RTL text before shaping, then shaping with LTR direction is not
|
| + * the same as keeping the text in logical order and shaping with RTL
|
| + * direction.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -937,11 +982,12 @@ hb_buffer_set_direction (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_direction:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * See hb_buffer_set_direction()
|
| *
|
| - * Return value:
|
| + * Return value:
|
| + * The direction of the @buffer.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -953,10 +999,18 @@ hb_buffer_get_direction (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_script:
|
| - * @buffer: a buffer.
|
| - * @script:
|
| + * @buffer: an #hb_buffer_t.
|
| + * @script: an #hb_script_t to set.
|
| *
|
| - *
|
| + * Sets the script of @buffer to @script.
|
| + *
|
| + * Script is crucial for choosing the proper shaping behaviour for scripts that
|
| + * require it (e.g. Arabic) and the which OpenType features defined in the font
|
| + * to be applied.
|
| + *
|
| + * You can pass one of the predefined #hb_script_t values, or use
|
| + * hb_script_from_string() or hb_script_from_iso15924_tag() to get the
|
| + * corresponding script from an ISO 15924 script tag.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -972,11 +1026,12 @@ hb_buffer_set_script (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_script:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * See hb_buffer_set_script().
|
| *
|
| - * Return value:
|
| + * Return value:
|
| + * The #hb_script_t of the @buffer.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -988,10 +1043,18 @@ hb_buffer_get_script (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_language:
|
| - * @buffer: a buffer.
|
| - * @language:
|
| + * @buffer: an #hb_buffer_t.
|
| + * @language: an hb_language_t to set.
|
| *
|
| - *
|
| + * Sets the language of @buffer to @language.
|
| + *
|
| + * Languages are crucial for selecting which OpenType feature to apply to the
|
| + * buffer which can result in applying language-specific behaviour. Languages
|
| + * are orthogonal to the scripts, and though they are related, they are
|
| + * different concepts and should not be confused with each other.
|
| + *
|
| + * Use hb_language_from_string() to convert from ISO 639 language codes to
|
| + * #hb_language_t.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1007,11 +1070,12 @@ hb_buffer_set_language (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_language:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * See hb_buffer_set_language().
|
| *
|
| * Return value: (transfer none):
|
| + * The #hb_language_t of the buffer. Must not be freed by the caller.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1023,10 +1087,12 @@ hb_buffer_get_language (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_segment_properties:
|
| - * @buffer: a buffer.
|
| - * @props:
|
| + * @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
|
| + * hb_buffer_set_language() individually.
|
| *
|
| * Since: 0.9.7
|
| **/
|
| @@ -1042,10 +1108,10 @@ hb_buffer_set_segment_properties (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_segment_properties:
|
| - * @buffer: a buffer.
|
| - * @props: (out):
|
| + * @buffer: an #hb_buffer_t.
|
| + * @props: (out): the output #hb_segment_properties_t.
|
| *
|
| - *
|
| + * Sets @props to the #hb_segment_properties_t of @buffer.
|
| *
|
| * Since: 0.9.7
|
| **/
|
| @@ -1059,10 +1125,10 @@ hb_buffer_get_segment_properties (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_set_flags:
|
| - * @buffer: a buffer.
|
| - * @flags:
|
| + * @buffer: an #hb_buffer_t.
|
| + * @flags: the buffer flags to set.
|
| *
|
| - *
|
| + * Sets @buffer flags to @flags. See #hb_buffer_flags_t.
|
| *
|
| * Since: 0.9.7
|
| **/
|
| @@ -1078,11 +1144,12 @@ hb_buffer_set_flags (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_flags:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * See hb_buffer_set_flags().
|
| *
|
| * Return value:
|
| + * The @buffer flags.
|
| *
|
| * Since: 0.9.7
|
| **/
|
| @@ -1094,7 +1161,7 @@ hb_buffer_get_flags (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_cluster_level:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @cluster_level:
|
| *
|
| *
|
| @@ -1113,7 +1180,7 @@ hb_buffer_set_cluster_level (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_cluster_level:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| *
|
| *
|
| @@ -1130,10 +1197,13 @@ hb_buffer_get_cluster_level (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_set_replacement_codepoint:
|
| - * @buffer: a buffer.
|
| - * @replacement:
|
| + * @buffer: an #hb_buffer_t.
|
| + * @replacement: the replacement #hb_codepoint_t
|
| *
|
| - *
|
| + * Sets the #hb_codepoint_t that replaces invalid entries for a given encoding
|
| + * when adding text to @buffer.
|
| + *
|
| + * Default is %HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT.
|
| *
|
| * Since: 0.9.31
|
| **/
|
| @@ -1149,11 +1219,12 @@ hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_replacement_codepoint:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * See hb_buffer_set_replacement_codepoint().
|
| *
|
| * Return value:
|
| + * The @buffer replacement #hb_codepoint_t.
|
| *
|
| * Since: 0.9.31
|
| **/
|
| @@ -1166,9 +1237,10 @@ hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_reset:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * Resets the buffer to its initial status, as if it was just newly created
|
| + * with hb_buffer_create().
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1180,9 +1252,10 @@ hb_buffer_reset (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_clear_contents:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * Similar to hb_buffer_reset(), but does not clear the Unicode functions and
|
| + * the replacement code point.
|
| *
|
| * Since: 0.9.11
|
| **/
|
| @@ -1194,12 +1267,13 @@ hb_buffer_clear_contents (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_pre_allocate:
|
| - * @buffer: a buffer.
|
| - * @size:
|
| + * @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:
|
| + * Return value:
|
| + * %true if @buffer memory allocation succeeded, %false otherwise.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1211,11 +1285,12 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
|
|
|
| /**
|
| * hb_buffer_allocation_successful:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| - *
|
| + * Check if allocating memory for the buffer succeeded.
|
| *
|
| - * Return value:
|
| + * Return value:
|
| + * %true if @buffer memory allocation succeeded, %false otherwise.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1227,11 +1302,18 @@ hb_buffer_allocation_successful (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_add:
|
| - * @buffer: a buffer.
|
| - * @codepoint:
|
| - * @cluster:
|
| + * @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
|
| + * the client wants, they are usually used to refer to the index of the
|
| + * character in the input text stream and are output in
|
| + * #hb_glyph_info_t.cluster field.
|
| + *
|
| + * This function does not check the validity of @codepoint, it is up to the
|
| + * caller to ensure it is a valid Unicode code point.
|
| *
|
| * Since: 0.9.7
|
| **/
|
| @@ -1246,12 +1328,14 @@ hb_buffer_add (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_set_length:
|
| - * @buffer: a buffer.
|
| - * @length:
|
| + * @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.
|
| *
|
| * Return value:
|
| + * %true if @buffer memory allocation succeeded, %false otherwise.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1286,11 +1370,13 @@ hb_buffer_set_length (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_length:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| * Returns the number of items in the buffer.
|
| *
|
| - * Return value: buffer length.
|
| + * Return value:
|
| + * The @buffer length.
|
| + * The value valid as long as buffer has not been modified.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1302,13 +1388,15 @@ hb_buffer_get_length (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_get_glyph_infos:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @length: (out): output array length.
|
| *
|
| - * Returns buffer glyph information array. Returned pointer
|
| - * is valid as long as buffer contents are not modified.
|
| + * Returns @buffer glyph information array. Returned pointer
|
| + * is valid as long as @buffer contents are not modified.
|
| *
|
| - * Return value: (transfer none) (array length=length): buffer glyph information array.
|
| + * Return value: (transfer none) (array length=length):
|
| + * The @buffer glyph information array.
|
| + * The value valid as long as buffer has not been modified.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1324,13 +1412,15 @@ hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_get_glyph_positions:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @length: (out): output length.
|
| *
|
| - * Returns buffer glyph position array. Returned pointer
|
| - * is valid as long as buffer contents are not modified.
|
| + * Returns @buffer glyph position array. Returned pointer
|
| + * is valid as long as @buffer contents are not modified.
|
| *
|
| - * Return value: (transfer none) (array length=length): buffer glyph position array.
|
| + * Return value: (transfer none) (array length=length):
|
| + * The @buffer glyph position array.
|
| + * The value valid as long as buffer has not been modified.
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1349,7 +1439,7 @@ hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_reverse:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| * Reverses buffer contents.
|
| *
|
| @@ -1363,7 +1453,7 @@ hb_buffer_reverse (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_reverse_range:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| * @start: start index.
|
| * @end: end index.
|
| *
|
| @@ -1380,7 +1470,7 @@ hb_buffer_reverse_range (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_reverse_clusters:
|
| - * @buffer: a buffer.
|
| + * @buffer: an #hb_buffer_t.
|
| *
|
| * Reverses buffer clusters. That is, the buffer contents are
|
| * reversed, then each cluster (consecutive items having the
|
| @@ -1396,7 +1486,7 @@ hb_buffer_reverse_clusters (hb_buffer_t *buffer)
|
|
|
| /**
|
| * hb_buffer_guess_segment_properties:
|
| - * @buffer: a buffer.
|
| + * @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
|
| @@ -1495,13 +1585,18 @@ hb_buffer_add_utf (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_add_utf8:
|
| - * @buffer: a buffer.
|
| - * @text: (array length=text_length) (element-type uint8_t):
|
| - * @text_length:
|
| - * @item_offset:
|
| - * @item_length:
|
| + * @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
|
| + * end of @text (assuming it is %NULL terminated).
|
| *
|
| - *
|
| + * See hb_buffer_add_codepoints().
|
| + *
|
| + * Replaces invalid UTF-8 characters with the @buffer replacement code point,
|
| + * see hb_buffer_set_replacement_codepoint().
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1517,13 +1612,17 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_add_utf16:
|
| - * @buffer: a buffer.
|
| - * @text: (array length=text_length):
|
| - * @text_length:
|
| - * @item_offset:
|
| - * @item_length:
|
| + * @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().
|
| + *
|
| + * Replaces invalid UTF-16 characters with the @buffer replacement code point,
|
| + * see hb_buffer_set_replacement_codepoint().
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1539,13 +1638,17 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_add_utf32:
|
| - * @buffer: a buffer.
|
| - * @text: (array length=text_length):
|
| - * @text_length:
|
| - * @item_offset:
|
| - * @item_length:
|
| + * @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().
|
| + *
|
| + * Replaces invalid UTF-32 characters with the @buffer replacement code point,
|
| + * see hb_buffer_set_replacement_codepoint().
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1561,13 +1664,18 @@ hb_buffer_add_utf32 (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_add_latin1:
|
| - * @buffer: a buffer.
|
| - * @text: (array length=text_length) (element-type uint8_t):
|
| - * @text_length:
|
| - * @item_offset:
|
| - * @item_length:
|
| + * @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
|
| + * 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.
|
| + *
|
| + * <note>Has nothing to do with non-Unicode Latin-1 encoding.</note>
|
| *
|
| * Since: 0.9.39
|
| **/
|
| @@ -1583,13 +1691,25 @@ hb_buffer_add_latin1 (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_add_codepoints:
|
| - * @buffer: a buffer.
|
| - * @text: (array length=text_length):
|
| - * @text_length:
|
| - * @item_offset:
|
| - * @item_length:
|
| - *
|
| - *
|
| + * @buffer: a #hb_buffer_t to append characters to.
|
| + * @text: (array length=text_length): an array of Unicode code points to append.
|
| + * @text_length: the length of the @text, or -1 if it is %NULL terminated.
|
| + * @item_offset: the offset of the first code point to add to the @buffer.
|
| + * @item_length: the number of code points to add to the @buffer, or -1 for the
|
| + * end of @text (assuming it is %NULL terminated).
|
| + *
|
| + * Appends characters from @text array to @buffer. The @item_offset is the
|
| + * position of the first character from @text that will be appended, and
|
| + * @item_length is the number of character. When shaping part of a larger text
|
| + * (e.g. a run of text from a paragraph), instead of passing just the substring
|
| + * corresponding to the run, it is preferable to pass the whole
|
| + * paragraph and specify the run start and length as @item_offset and
|
| + * @item_length, respectively, to give HarfBuzz the full context to be able,
|
| + * for example, to do cross-run Arabic shaping or properly handle combining
|
| + * marks at stat of run.
|
| + *
|
| + * This function does not check the validity of @text, it is up to the caller
|
| + * to ensure it contains a valid Unicode code points.
|
| *
|
| * Since: 0.9.31
|
| **/
|
| @@ -1661,9 +1781,12 @@ normalize_glyphs_cluster (hb_buffer_t *buffer,
|
|
|
| /**
|
| * hb_buffer_normalize_glyphs:
|
| - * @buffer: a buffer.
|
| + * @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.
|
| + *
|
| + * <note>This has nothing to do with Unicode normalization.</note>
|
| *
|
| * Since: 0.9.2
|
| **/
|
| @@ -1709,3 +1832,45 @@ hb_buffer_t::sort (unsigned int start, unsigned int end, int(*compar)(const hb_g
|
| }
|
| }
|
| }
|
| +
|
| +/*
|
| + * Debugging.
|
| + */
|
| +
|
| +/**
|
| + * hb_buffer_set_message_func:
|
| + * @buffer: an #hb_buffer_t.
|
| + * @func: (closure user_data) (destroy destroy) (scope notified):
|
| + * @user_data:
|
| + * @destroy:
|
| + *
|
| + *
|
| + *
|
| + * Since: 1.1.3
|
| + **/
|
| +void
|
| +hb_buffer_set_message_func (hb_buffer_t *buffer,
|
| + hb_buffer_message_func_t func,
|
| + void *user_data, hb_destroy_func_t destroy)
|
| +{
|
| + if (buffer->message_destroy)
|
| + buffer->message_destroy (buffer->message_data);
|
| +
|
| + if (func) {
|
| + buffer->message_func = func;
|
| + buffer->message_data = user_data;
|
| + buffer->message_destroy = destroy;
|
| + } else {
|
| + buffer->message_func = NULL;
|
| + buffer->message_data = NULL;
|
| + buffer->message_destroy = NULL;
|
| + }
|
| +}
|
| +
|
| +bool
|
| +hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap)
|
| +{
|
| + char buf[100];
|
| + vsnprintf (buf, sizeof (buf), fmt, ap);
|
| + return (bool) this->message_func (this, font, buf, this->message_data);
|
| +}
|
|
|