| 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 03fe8e1348b8cdc8909dd9f419fab31ceb4ae8a2..50710dd23e5ebca6525954789a35e3535f990b70 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| @@ -704,7 +704,7 @@ void hb_buffer_t::deallocate_var_all (void)
|
| *
|
| * Return value: (transfer full)
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_buffer_t *
|
| hb_buffer_create (void)
|
| @@ -726,7 +726,7 @@ hb_buffer_create (void)
|
| *
|
| * Return value: (transfer full):
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_buffer_t *
|
| hb_buffer_get_empty (void)
|
| @@ -759,7 +759,7 @@ hb_buffer_get_empty (void)
|
| *
|
| * Return value: (transfer full):
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_buffer_t *
|
| hb_buffer_reference (hb_buffer_t *buffer)
|
| @@ -773,7 +773,7 @@ hb_buffer_reference (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_destroy (hb_buffer_t *buffer)
|
| @@ -800,7 +800,7 @@ hb_buffer_destroy (hb_buffer_t *buffer)
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_bool_t
|
| hb_buffer_set_user_data (hb_buffer_t *buffer,
|
| @@ -821,7 +821,7 @@ hb_buffer_set_user_data (hb_buffer_t *buffer,
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void *
|
| hb_buffer_get_user_data (hb_buffer_t *buffer,
|
| @@ -871,7 +871,7 @@ hb_buffer_get_content_type (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
|
| @@ -897,7 +897,7 @@ hb_buffer_set_unicode_funcs (hb_buffer_t *buffer,
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_unicode_funcs_t *
|
| hb_buffer_get_unicode_funcs (hb_buffer_t *buffer)
|
| @@ -912,7 +912,7 @@ hb_buffer_get_unicode_funcs (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_set_direction (hb_buffer_t *buffer,
|
| @@ -933,7 +933,7 @@ hb_buffer_set_direction (hb_buffer_t *buffer,
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_direction_t
|
| hb_buffer_get_direction (hb_buffer_t *buffer)
|
| @@ -948,7 +948,7 @@ hb_buffer_get_direction (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_set_script (hb_buffer_t *buffer,
|
| @@ -968,7 +968,7 @@ hb_buffer_set_script (hb_buffer_t *buffer,
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_script_t
|
| hb_buffer_get_script (hb_buffer_t *buffer)
|
| @@ -983,7 +983,7 @@ hb_buffer_get_script (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_set_language (hb_buffer_t *buffer,
|
| @@ -1003,7 +1003,7 @@ hb_buffer_set_language (hb_buffer_t *buffer,
|
| *
|
| * Return value: (transfer none):
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_language_t
|
| hb_buffer_get_language (hb_buffer_t *buffer)
|
| @@ -1160,7 +1160,7 @@ hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_reset (hb_buffer_t *buffer)
|
| @@ -1191,7 +1191,7 @@ hb_buffer_clear_contents (hb_buffer_t *buffer)
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_bool_t
|
| hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
|
| @@ -1207,7 +1207,7 @@ hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_bool_t
|
| hb_buffer_allocation_successful (hb_buffer_t *buffer)
|
| @@ -1223,7 +1223,7 @@ hb_buffer_allocation_successful (hb_buffer_t *buffer)
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.7
|
| **/
|
| void
|
| hb_buffer_add (hb_buffer_t *buffer,
|
| @@ -1243,7 +1243,7 @@ hb_buffer_add (hb_buffer_t *buffer,
|
| *
|
| * Return value:
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_bool_t
|
| hb_buffer_set_length (hb_buffer_t *buffer,
|
| @@ -1282,7 +1282,7 @@ hb_buffer_set_length (hb_buffer_t *buffer,
|
| *
|
| * Return value: buffer length.
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| unsigned int
|
| hb_buffer_get_length (hb_buffer_t *buffer)
|
| @@ -1300,7 +1300,7 @@ hb_buffer_get_length (hb_buffer_t *buffer)
|
| *
|
| * Return value: (transfer none) (array length=length): buffer glyph information array.
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_glyph_info_t *
|
| hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
|
| @@ -1322,7 +1322,7 @@ hb_buffer_get_glyph_infos (hb_buffer_t *buffer,
|
| *
|
| * Return value: (transfer none) (array length=length): buffer glyph position array.
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| hb_glyph_position_t *
|
| hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
|
| @@ -1343,7 +1343,7 @@ hb_buffer_get_glyph_positions (hb_buffer_t *buffer,
|
| *
|
| * Reverses buffer contents.
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_reverse (hb_buffer_t *buffer)
|
| @@ -1357,9 +1357,9 @@ hb_buffer_reverse (hb_buffer_t *buffer)
|
| * @start: start index.
|
| * @end: end index.
|
| *
|
| - * Reverses buffer contents between start to end.
|
| + * Reverses buffer contents between start to end.
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.41
|
| **/
|
| void
|
| hb_buffer_reverse_range (hb_buffer_t *buffer,
|
| @@ -1376,7 +1376,7 @@ hb_buffer_reverse_range (hb_buffer_t *buffer,
|
| * reversed, then each cluster (consecutive items having the
|
| * same cluster number) are reversed again.
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_reverse_clusters (hb_buffer_t *buffer)
|
| @@ -1493,7 +1493,7 @@ hb_buffer_add_utf (hb_buffer_t *buffer,
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_add_utf8 (hb_buffer_t *buffer,
|
| @@ -1515,7 +1515,7 @@ hb_buffer_add_utf8 (hb_buffer_t *buffer,
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_add_utf16 (hb_buffer_t *buffer,
|
| @@ -1537,7 +1537,7 @@ hb_buffer_add_utf16 (hb_buffer_t *buffer,
|
| *
|
| *
|
| *
|
| - * Since: 1.0
|
| + * Since: 0.9.2
|
| **/
|
| void
|
| hb_buffer_add_utf32 (hb_buffer_t *buffer,
|
| @@ -1636,7 +1636,7 @@ normalize_glyphs_cluster (hb_buffer_t *buffer,
|
| pos[end - 1].x_advance = total_x_advance;
|
| pos[end - 1].y_advance = total_y_advance;
|
|
|
| - hb_bubble_sort (buffer->info + start, end - start - 1, compare_info_codepoint, buffer->pos + start);
|
| + hb_stable_sort (buffer->info + start, end - start - 1, compare_info_codepoint, buffer->pos + start);
|
| } else {
|
| /* Transfer all cluster advance to the first glyph. */
|
| pos[start].x_advance += total_x_advance;
|
| @@ -1645,7 +1645,7 @@ normalize_glyphs_cluster (hb_buffer_t *buffer,
|
| pos[i].x_offset -= total_x_advance;
|
| pos[i].y_offset -= total_y_advance;
|
| }
|
| - hb_bubble_sort (buffer->info + start + 1, end - start - 1, compare_info_codepoint, buffer->pos + start + 1);
|
| + hb_stable_sort (buffer->info + start + 1, end - start - 1, compare_info_codepoint, buffer->pos + start + 1);
|
| }
|
| }
|
|
|
| @@ -1678,3 +1678,24 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer)
|
| }
|
| normalize_glyphs_cluster (buffer, start, end, backward);
|
| }
|
| +
|
| +void
|
| +hb_buffer_t::sort (unsigned int start, unsigned int end, int(*compar)(const hb_glyph_info_t *, const hb_glyph_info_t *))
|
| +{
|
| + assert (!have_positions);
|
| + for (unsigned int i = start + 1; i < end; i++)
|
| + {
|
| + unsigned int j = i;
|
| + while (j > start && compar (&info[j - 1], &info[i]) > 0)
|
| + j--;
|
| + if (i == j)
|
| + continue;
|
| + /* Move item i to occupy place for item j, shift what's in between. */
|
| + merge_clusters (j, i + 1);
|
| + {
|
| + hb_glyph_info_t t = info[i];
|
| + memmove (&info[j + 1], &info[j], (i - j) * sizeof (hb_glyph_info_t));
|
| + info[j] = t;
|
| + }
|
| + }
|
| +}
|
|
|