Hello community,
here is the log from the commit of package harfbuzz for openSUSE:Factory checked in at 2013-05-28 11:45:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/harfbuzz (Old)
and /work/SRC/openSUSE:Factory/.harfbuzz.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "harfbuzz"
Changes:
--------
--- /work/SRC/openSUSE:Factory/harfbuzz/harfbuzz.changes 2013-04-22 14:05:51.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.harfbuzz.new/harfbuzz.changes 2013-05-28 11:45:10.000000000 +0200
@@ -1,0 +2,8 @@
+Wed May 22 12:19:17 UTC 2013 - dimstar@opensuse.org
+
+- Update to version 0.9.17:
+ + Build fixes.
+ + Fix bug in hb_set_get_min().
+ + Fix regression with Arabic mark positioning / width-zeroing.
+
+-------------------------------------------------------------------
Old:
----
harfbuzz-0.9.16.tar.bz2
New:
----
harfbuzz-0.9.17.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ harfbuzz.spec ++++++
--- /var/tmp/diff_new_pack.vzRsij/_old 2013-05-28 11:45:11.000000000 +0200
+++ /var/tmp/diff_new_pack.vzRsij/_new 2013-05-28 11:45:11.000000000 +0200
@@ -17,7 +17,7 @@
Name: harfbuzz
-Version: 0.9.16
+Version: 0.9.17
Release: 0
# FIXME: graphite2 is not packaged / http://projects.palaso.org/projects/graphitedev
Summary: An OpenType text shaping engine
++++++ harfbuzz-0.9.16.tar.bz2 -> harfbuzz-0.9.17.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/NEWS new/harfbuzz-0.9.17/NEWS
--- old/harfbuzz-0.9.16/NEWS 2013-04-19 22:27:04.000000000 +0200
+++ new/harfbuzz-0.9.17/NEWS 2013-05-20 15:23:34.000000000 +0200
@@ -1,3 +1,11 @@
+Overview of changes leading to 0.9.17
+Monday, May 20, 2013
+=====================================
+
+- Build fixes.
+- Fix bug in hb_set_get_min().
+- Fix regression with Arabic mark positioning / width-zeroing.
+
Overview of changes leading to 0.9.16
Friday, April 19, 2013
=====================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/configure new/harfbuzz-0.9.17/configure
--- old/harfbuzz-0.9.16/configure 2013-04-19 22:24:01.000000000 +0200
+++ new/harfbuzz-0.9.17/configure 2013-05-20 15:23:53.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for HarfBuzz 0.9.16.
+# Generated by GNU Autoconf 2.68 for HarfBuzz 0.9.17.
#
# Report bugs to http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz.
#
@@ -571,8 +571,8 @@
# Identity of this package.
PACKAGE_NAME='HarfBuzz'
PACKAGE_TARNAME='harfbuzz'
-PACKAGE_VERSION='0.9.16'
-PACKAGE_STRING='HarfBuzz 0.9.16'
+PACKAGE_VERSION='0.9.17'
+PACKAGE_STRING='HarfBuzz 0.9.17'
PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz'
PACKAGE_URL='http://harfbuzz.org/'
@@ -1385,7 +1385,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures HarfBuzz 0.9.16 to adapt to many kinds of systems.
+\`configure' configures HarfBuzz 0.9.17 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1455,7 +1455,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of HarfBuzz 0.9.16:";;
+ short | recursive ) echo "Configuration of HarfBuzz 0.9.17:";;
esac
cat <<\_ACEOF
@@ -1589,7 +1589,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-HarfBuzz configure 0.9.16
+HarfBuzz configure 0.9.17
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2133,7 +2133,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by HarfBuzz $as_me 0.9.16, which was
+It was created by HarfBuzz $as_me 0.9.17, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -2954,7 +2954,7 @@
# Define the identity of the package.
PACKAGE='harfbuzz'
- VERSION='0.9.16'
+ VERSION='0.9.17'
# Some tools Automake needs.
@@ -16284,8 +16284,8 @@
HB_VERSION_MAJOR=0
HB_VERSION_MINOR=9
-HB_VERSION_MICRO=16
-HB_VERSION=0.9.16
+HB_VERSION_MICRO=17
+HB_VERSION=0.9.17
@@ -16296,7 +16296,7 @@
-HB_LIBTOOL_VERSION_INFO=916:0:916
+HB_LIBTOOL_VERSION_INFO=917:0:917
@@ -17361,7 +17361,7 @@
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
ICU_CFLAGS=`$ICU_CONFIG --cppflags`
- ICU_LIBS=`$ICU_CONFIG --ldflags-libsonly`
+ ICU_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -17560,7 +17560,7 @@
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
ICU_LE_CFLAGS=`$ICU_CONFIG --cppflags`
- ICU_LE_LIBS=`$ICU_CONFIG --ldflags-libsonly --ldflags-layout`
+ ICU_LE_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly --ldflags-layout`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -18613,7 +18613,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by HarfBuzz $as_me 0.9.16, which was
+This file was extended by HarfBuzz $as_me 0.9.17, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18680,7 +18680,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-HarfBuzz config.status 0.9.16
+HarfBuzz config.status 0.9.17
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/configure.ac new/harfbuzz-0.9.17/configure.ac
--- old/harfbuzz-0.9.16/configure.ac 2013-04-19 22:23:07.000000000 +0200
+++ new/harfbuzz-0.9.17/configure.ac 2013-05-20 15:21:57.000000000 +0200
@@ -1,6 +1,6 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [0.9.16],
+ [0.9.17],
[http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
[harfbuzz],
[http://harfbuzz.org/])
@@ -13,7 +13,7 @@
AM_SILENT_RULES([yes])
# Initialize libtool
-AM_PROG_AR
+m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
LT_PREREQ([2.2])
LT_INIT([disable-static])
@@ -177,7 +177,7 @@
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
ICU_CFLAGS=`$ICU_CONFIG --cppflags`
- ICU_LIBS=`$ICU_CONFIG --ldflags-libsonly`
+ ICU_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly`
AC_SUBST(ICU_CFLAGS)
AC_SUBST(ICU_LIBS)
AC_MSG_RESULT([yes])
@@ -205,7 +205,7 @@
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
ICU_LE_CFLAGS=`$ICU_CONFIG --cppflags`
- ICU_LE_LIBS=`$ICU_CONFIG --ldflags-libsonly --ldflags-layout`
+ ICU_LE_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly --ldflags-layout`
AC_SUBST(ICU_LE_CFLAGS)
AC_SUBST(ICU_LE_LIBS)
AC_MSG_RESULT([yes])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-buffer-private.hh new/harfbuzz-0.9.17/src/hb-buffer-private.hh
--- old/harfbuzz-0.9.16/src/hb-buffer-private.hh 2013-03-19 10:47:13.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-buffer-private.hh 2013-05-02 21:46:20.000000000 +0200
@@ -80,6 +80,8 @@
inline hb_glyph_info_t &prev (void) { return out_info[out_len - 1]; }
inline hb_glyph_info_t prev (void) const { return info[out_len - 1]; }
+ inline bool has_separate_output (void) const { return info != out_info; }
+
unsigned int serial;
/* These reflect current allocations of the bytes in glyph_info_t's var1 and var2. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-buffer.cc new/harfbuzz-0.9.17/src/hb-buffer.cc
--- old/harfbuzz-0.9.16/src/hb-buffer.cc 2013-03-19 10:47:13.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-buffer.cc 2013-04-30 17:35:05.000000000 +0200
@@ -549,7 +549,7 @@
{
assert (byte_i < 8 && byte_i + count <= 8);
- if (DEBUG (BUFFER))
+ if (DEBUG_ENABLED (BUFFER))
dump_var_allocation (this);
DEBUG_MSG (BUFFER, this,
"Allocating var bytes %d..%d for %s",
@@ -564,7 +564,7 @@
void hb_buffer_t::deallocate_var (unsigned int byte_i, unsigned int count, const char *owner)
{
- if (DEBUG (BUFFER))
+ if (DEBUG_ENABLED (BUFFER))
dump_var_allocation (this);
DEBUG_MSG (BUFFER, this,
@@ -581,7 +581,7 @@
void hb_buffer_t::assert_var (unsigned int byte_i, unsigned int count, const char *owner)
{
- if (DEBUG (BUFFER))
+ if (DEBUG_ENABLED (BUFFER))
dump_var_allocation (this);
DEBUG_MSG (BUFFER, this,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-layout-gpos-table.hh new/harfbuzz-0.9.17/src/hb-ot-layout-gpos-table.hh
--- old/harfbuzz-0.9.16/src/hb-ot-layout-gpos-table.hh 2013-04-18 05:14:23.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-ot-layout-gpos-table.hh 2013-05-14 21:21:11.000000000 +0200
@@ -710,8 +710,6 @@
TRACE_COLLECT_GLYPHS (this);
/* (this+coverage).add_coverage (c->input); // Don't need this. */
- /* TODO only add values for pairs that have nonzero adjustments. */
-
unsigned int count1 = class1Count;
const ClassDef &klass1 = this+classDef1;
for (unsigned int i = 0; i < count1; i++)
@@ -1014,7 +1012,6 @@
TRACE_COLLECT_GLYPHS (this);
(this+markCoverage).add_coverage (c->input);
(this+baseCoverage).add_coverage (c->input);
- /* TODO only add combinations that have nonzero adjustment. */
}
inline const Coverage &get_coverage (void) const
@@ -1118,7 +1115,6 @@
TRACE_COLLECT_GLYPHS (this);
(this+markCoverage).add_coverage (c->input);
(this+ligatureCoverage).add_coverage (c->input);
- /* TODO only add combinations that have nonzero adjustment. */
}
inline const Coverage &get_coverage (void) const
@@ -1234,7 +1230,6 @@
TRACE_COLLECT_GLYPHS (this);
(this+mark1Coverage).add_coverage (c->input);
(this+mark2Coverage).add_coverage (c->input);
- /* TODO only add combinations that have nonzero adjustment. */
}
inline const Coverage &get_coverage (void) const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-layout-gsub-table.hh new/harfbuzz-0.9.17/src/hb-ot-layout-gsub-table.hh
--- old/harfbuzz-0.9.16/src/hb-ot-layout-gsub-table.hh 2013-04-18 05:36:37.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-ot-layout-gsub-table.hh 2013-05-14 21:21:11.000000000 +0200
@@ -275,11 +275,18 @@
unsigned int klass = c->buffer->cur().glyph_props() &
HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE ? HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
unsigned int count = substitute.len;
- for (unsigned int i = 0; i < count; i++) {
- set_lig_props_for_component (c->buffer->cur(), i);
- c->output_glyph (substitute.array[i], klass);
+ if (count == 1) /* Special-case to make it in-place. */
+ {
+ c->replace_glyph (substitute.array[0]);
+ }
+ else
+ {
+ for (unsigned int i = 0; i < count; i++) {
+ set_lig_props_for_component (c->buffer->cur(), i);
+ c->output_glyph (substitute.array[i], klass);
+ }
+ c->buffer->skip_glyph ();
}
- c->buffer->skip_glyph ();
return TRACE_RETURN (true);
}
@@ -1196,38 +1203,38 @@
if (likely (!is_reverse ()))
{
- /* in/out forward substitution */
- c->buffer->clear_output ();
- c->buffer->idx = 0;
-
- while (c->buffer->idx < c->buffer->len)
- {
- if (digest->may_have (c->buffer->cur().codepoint) &&
- (c->buffer->cur().mask & c->lookup_mask) &&
- apply_once (c))
- ret = true;
- else
- c->buffer->next_glyph ();
- }
- if (ret)
- c->buffer->swap_buffers ();
+ /* in/out forward substitution */
+ c->buffer->clear_output ();
+ c->buffer->idx = 0;
+
+ while (c->buffer->idx < c->buffer->len)
+ {
+ if (digest->may_have (c->buffer->cur().codepoint) &&
+ (c->buffer->cur().mask & c->lookup_mask) &&
+ apply_once (c))
+ ret = true;
+ else
+ c->buffer->next_glyph ();
+ }
+ if (ret)
+ c->buffer->swap_buffers ();
}
else
{
- /* in-place backward substitution */
- c->buffer->remove_output ();
- c->buffer->idx = c->buffer->len - 1;
- do
- {
- if (digest->may_have (c->buffer->cur().codepoint) &&
- (c->buffer->cur().mask & c->lookup_mask) &&
- apply_once (c))
- ret = true;
- else
- c->buffer->idx--;
+ /* in-place backward substitution */
+ c->buffer->remove_output ();
+ c->buffer->idx = c->buffer->len - 1;
+ do
+ {
+ if (digest->may_have (c->buffer->cur().codepoint) &&
+ (c->buffer->cur().mask & c->lookup_mask) &&
+ apply_once (c))
+ ret = true;
+ else
+ c->buffer->idx--;
- }
- while ((int) c->buffer->idx >= 0);
+ }
+ while ((int) c->buffer->idx >= 0);
}
return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-map-private.hh new/harfbuzz-0.9.17/src/hb-ot-map-private.hh
--- old/harfbuzz-0.9.16/src/hb-ot-map-private.hh 2013-03-19 12:04:53.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-ot-map-private.hh 2013-05-14 21:21:11.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Copyright © 2009,2010 Red Hat, Inc.
- * Copyright © 2010,2011,2012 Google, Inc.
+ * Copyright © 2010,2011,2012,2013 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -31,8 +31,8 @@
#include "hb-buffer-private.hh"
-#include "hb-ot-layout-private.hh"
+struct hb_ot_shape_plan_t;
static const hb_tag_t table_tags[2] = {HB_OT_TAG_GSUB, HB_OT_TAG_GPOS};
@@ -67,9 +67,9 @@
typedef void (*pause_func_t) (const struct hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer);
- struct pause_map_t {
- unsigned int num_lookups; /* Cumulative */
- pause_func_t callback;
+ struct stage_map_t {
+ unsigned int last_lookup; /* Cumulative */
+ pause_func_t pause_func;
};
@@ -110,23 +110,28 @@
*lookup_count = 0;
return;
}
- assert (stage <= pauses[table_index].len);
- unsigned int start = stage ? pauses[table_index][stage - 1].num_lookups : 0;
- unsigned int end = stage < pauses[table_index].len ? pauses[table_index][stage].num_lookups : lookups[table_index].len;
+ assert (stage <= stages[table_index].len);
+ unsigned int start = stage ? stages[table_index][stage - 1].last_lookup : 0;
+ unsigned int end = stage < stages[table_index].len ? stages[table_index][stage].last_lookup : lookups[table_index].len;
*plookups = &lookups[table_index][start];
*lookup_count = end - start;
}
HB_INTERNAL void collect_lookups (unsigned int table_index, hb_set_t *lookups) const;
+ HB_INTERNAL inline void apply (unsigned int table_index,
+ const struct hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer) const;
HB_INTERNAL void substitute (const struct hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const;
HB_INTERNAL void position (const struct hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const;
inline void finish (void) {
features.finish ();
- lookups[0].finish ();
- lookups[1].finish ();
- pauses[0].finish ();
- pauses[1].finish ();
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ {
+ lookups[table_index].finish ();
+ stages[table_index].finish ();
+ }
}
public:
@@ -145,7 +150,7 @@
hb_prealloced_array_t features;
hb_prealloced_array_t lookups[2]; /* GSUB/GPOS */
- hb_prealloced_array_t pauses[2]; /* GSUB/GPOS */
+ hb_prealloced_array_t stages[2]; /* GSUB/GPOS */
};
enum hb_ot_map_feature_flags_t {
@@ -195,8 +200,10 @@
inline void finish (void) {
feature_infos.finish ();
- pauses[0].finish ();
- pauses[1].finish ();
+ for (unsigned int table_index = 0; table_index < 2; table_index++)
+ {
+ stages[table_index].finish ();
+ }
}
private:
@@ -213,9 +220,9 @@
{ return (a->tag != b->tag) ? (a->tag < b->tag ? -1 : 1) : (a->seq < b->seq ? -1 : 1); }
};
- struct pause_info_t {
- unsigned int stage;
- hb_ot_map_t::pause_func_t callback;
+ struct stage_info_t {
+ unsigned int index;
+ hb_ot_map_t::pause_func_t pause_func;
};
HB_INTERNAL void add_pause (unsigned int table_index, hb_ot_map_t::pause_func_t pause_func);
@@ -232,8 +239,8 @@
private:
unsigned int current_stage[2]; /* GSUB/GPOS */
- hb_prealloced_array_t feature_infos;
- hb_prealloced_array_t pauses[2]; /* GSUB/GPOS */
+ hb_prealloced_array_t feature_infos;
+ hb_prealloced_array_t stages[2]; /* GSUB/GPOS */
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-map.cc new/harfbuzz-0.9.17/src/hb-ot-map.cc
--- old/harfbuzz-0.9.16/src/hb-ot-map.cc 2013-04-19 00:31:10.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-ot-map.cc 2013-05-14 21:21:11.000000000 +0200
@@ -1,6 +1,6 @@
/*
* Copyright © 2009,2010 Red Hat, Inc.
- * Copyright © 2010,2011 Google, Inc.
+ * Copyright © 2010,2011,2013 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -28,6 +28,8 @@
#include "hb-ot-map-private.hh"
+#include "hb-ot-layout-private.hh"
+
void
hb_ot_map_t::add_lookups (hb_face_t *face,
@@ -100,55 +102,50 @@
info->stage[1] = current_stage[1];
}
-/* Keep the next two functions in sync. */
-
-void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const
+inline void hb_ot_map_t::apply (unsigned int table_index,
+ const hb_ot_shape_plan_t *plan,
+ hb_font_t *font,
+ hb_buffer_t *buffer) const
{
- const unsigned int table_index = 0;
unsigned int i = 0;
- for (unsigned int pause_index = 0; pause_index < pauses[table_index].len; pause_index++) {
- const pause_map_t *pause = &pauses[table_index][pause_index];
- for (; i < pause->num_lookups; i++)
- hb_ot_layout_substitute_lookup (font, buffer,
- lookups[table_index][i].index,
- lookups[table_index][i].mask,
- lookups[table_index][i].auto_zwj);
-
- buffer->clear_output ();
+ for (unsigned int stage_index = 0; stage_index < stages[table_index].len; stage_index++) {
+ const stage_map_t *stage = &stages[table_index][stage_index];
+ for (; i < stage->last_lookup; i++)
+ switch (table_index)
+ {
+ case 0:
+ hb_ot_layout_substitute_lookup (font, buffer, lookups[table_index][i].index,
+ lookups[table_index][i].mask,
+ lookups[table_index][i].auto_zwj);
+ break;
+
+ case 1:
+ hb_ot_layout_position_lookup (font, buffer, lookups[table_index][i].index,
+ lookups[table_index][i].mask,
+ lookups[table_index][i].auto_zwj);
+ break;
+ }
- if (pause->callback)
- pause->callback (plan, font, buffer);
+ if (stage->pause_func)
+ {
+ buffer->clear_output ();
+ stage->pause_func (plan, font, buffer);
+ }
}
+}
- for (; i < lookups[table_index].len; i++)
- hb_ot_layout_substitute_lookup (font, buffer, lookups[table_index][i].index,
- lookups[table_index][i].mask,
- lookups[table_index][i].auto_zwj);
+void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const
+{
+ apply (0, plan, font, buffer);
}
void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const
{
- const unsigned int table_index = 1;
- unsigned int i = 0;
-
- for (unsigned int pause_index = 0; pause_index < pauses[table_index].len; pause_index++) {
- const pause_map_t *pause = &pauses[table_index][pause_index];
- for (; i < pause->num_lookups; i++)
- hb_ot_layout_position_lookup (font, buffer, lookups[table_index][i].index,
- lookups[table_index][i].mask,
- lookups[table_index][i].auto_zwj);
-
- if (pause->callback)
- pause->callback (plan, font, buffer);
- }
-
- for (; i < lookups[table_index].len; i++)
- hb_ot_layout_position_lookup (font, buffer, lookups[table_index][i].index,
- lookups[table_index][i].mask,
- lookups[table_index][i].auto_zwj);
+ apply (1, plan, font, buffer);
}
+
void hb_ot_map_t::collect_lookups (unsigned int table_index, hb_set_t *lookups_out) const
{
for (unsigned int i = 0; i < lookups[table_index].len; i++)
@@ -157,10 +154,10 @@
void hb_ot_map_builder_t::add_pause (unsigned int table_index, hb_ot_map_t::pause_func_t pause_func)
{
- pause_info_t *p = pauses[table_index].push ();
- if (likely (p)) {
- p->stage = current_stage[table_index];
- p->callback = pause_func;
+ stage_info_t *s = stages[table_index].push ();
+ if (likely (s)) {
+ s->index = current_stage[table_index];
+ s->pause_func = pause_func;
}
current_stage[table_index]++;
@@ -277,7 +274,7 @@
&required_feature_index))
m.add_lookups (face, table_index, required_feature_index, 1, true);
- unsigned int pause_index = 0;
+ unsigned int stage_index = 0;
unsigned int last_num_lookups = 0;
for (unsigned stage = 0; stage < current_stage[table_index]; stage++)
{
@@ -307,14 +304,14 @@
last_num_lookups = m.lookups[table_index].len;
- if (pause_index < pauses[table_index].len && pauses[table_index][pause_index].stage == stage) {
- hb_ot_map_t::pause_map_t *pause_map = m.pauses[table_index].push ();
- if (likely (pause_map)) {
- pause_map->num_lookups = last_num_lookups;
- pause_map->callback = pauses[table_index][pause_index].callback;
+ if (stage_index < stages[table_index].len && stages[table_index][stage_index].index == stage) {
+ hb_ot_map_t::stage_map_t *stage_map = m.stages[table_index].push ();
+ if (likely (stage_map)) {
+ stage_map->last_lookup = last_num_lookups;
+ stage_map->pause_func = stages[table_index][stage_index].pause_func;
}
- pause_index++;
+ stage_index++;
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape-complex-arabic.cc new/harfbuzz-0.9.17/src/hb-ot-shape-complex-arabic.cc
--- old/harfbuzz-0.9.16/src/hb-ot-shape-complex-arabic.cc 2013-04-04 20:22:54.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-ot-shape-complex-arabic.cc 2013-05-20 15:07:20.000000000 +0200
@@ -352,6 +352,6 @@
NULL, /* decompose */
NULL, /* compose */
setup_masks_arabic,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
true, /* fallback_position */
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape-complex-default.cc new/harfbuzz-0.9.17/src/hb-ot-shape-complex-default.cc
--- old/harfbuzz-0.9.16/src/hb-ot-shape-complex-default.cc 2013-04-05 05:04:20.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-ot-shape-complex-default.cc 2013-05-20 15:07:20.000000000 +0200
@@ -215,6 +215,6 @@
NULL, /* decompose */
compose_default,
NULL, /* setup_masks */
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE,
true, /* fallback_position */
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape-complex-myanmar.cc new/harfbuzz-0.9.17/src/hb-ot-shape-complex-myanmar.cc
--- old/harfbuzz-0.9.16/src/hb-ot-shape-complex-myanmar.cc 2013-03-19 12:04:53.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-ot-shape-complex-myanmar.cc 2013-05-20 15:07:20.000000000 +0200
@@ -540,6 +540,6 @@
NULL, /* decompose */
NULL, /* compose */
setup_masks_myanmar,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY,
false, /* fallback_position */
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape-complex-private.hh new/harfbuzz-0.9.17/src/hb-ot-shape-complex-private.hh
--- old/harfbuzz-0.9.16/src/hb-ot-shape-complex-private.hh 2013-04-05 18:38:44.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-ot-shape-complex-private.hh 2013-05-20 15:14:39.000000000 +0200
@@ -41,8 +41,10 @@
enum hb_ot_shape_zero_width_marks_type_t {
HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE,
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF
+// HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape-complex-thai.cc new/harfbuzz-0.9.17/src/hb-ot-shape-complex-thai.cc
--- old/harfbuzz-0.9.16/src/hb-ot-shape-complex-thai.cc 2013-03-19 10:47:13.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-ot-shape-complex-thai.cc 2013-05-20 15:07:20.000000000 +0200
@@ -373,6 +373,6 @@
NULL, /* decompose */
NULL, /* compose */
NULL, /* setup_masks */
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE,
false,/* fallback_position */
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape-private.hh new/harfbuzz-0.9.17/src/hb-ot-shape-private.hh
--- old/harfbuzz-0.9.16/src/hb-ot-shape-private.hh 2013-03-19 10:47:13.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-ot-shape-private.hh 2013-05-02 21:46:20.000000000 +0200
@@ -30,8 +30,7 @@
#include "hb-private.hh"
#include "hb-ot-map-private.hh"
-
-
+#include "hb-ot-layout-private.hh"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-ot-shape.cc new/harfbuzz-0.9.17/src/hb-ot-shape.cc
--- old/harfbuzz-0.9.16/src/hb-ot-shape.cc 2013-03-19 10:47:13.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-ot-shape.cc 2013-05-20 15:18:14.000000000 +0200
@@ -401,6 +401,30 @@
/* Position */
static inline void
+zero_mark_widths_by_unicode (hb_buffer_t *buffer)
+{
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++)
+ if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
+ {
+ buffer->pos[i].x_advance = 0;
+ buffer->pos[i].y_advance = 0;
+ }
+}
+
+static inline void
+zero_mark_widths_by_gdef (hb_buffer_t *buffer)
+{
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++)
+ if ((buffer->info[i].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK))
+ {
+ buffer->pos[i].x_advance = 0;
+ buffer->pos[i].y_advance = 0;
+ }
+}
+
+static inline void
hb_ot_position_default (hb_ot_shape_context_t *c)
{
hb_ot_layout_position_start (c->font, c->buffer);
@@ -419,22 +443,22 @@
}
- /* Zero'ing mark widths by GDEF (as used in Myanmar spec) happens
- * *before* GPOS. */
switch (c->plan->shaper->zero_width_marks)
{
- case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF:
- for (unsigned int i = 0; i < count; i++)
- if ((c->buffer->info[i].glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK))
- {
- c->buffer->pos[i].x_advance = 0;
- c->buffer->pos[i].y_advance = 0;
- }
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY:
+ zero_mark_widths_by_gdef (c->buffer);
break;
+ /* Not currently used for any shaper:
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY:
+ zero_mark_widths_by_unicode (c->buffer);
+ break;
+ */
+
default:
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE:
- case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE:
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE:
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE:
break;
}
}
@@ -468,22 +492,20 @@
ret = true;
}
- /* Zero'ing mark widths by Unicode happens
- * *after* GPOS. */
switch (c->plan->shaper->zero_width_marks)
{
- case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE:
- for (unsigned int i = 0; i < count; i++)
- if (_hb_glyph_info_get_general_category (&c->buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
- {
- c->buffer->pos[i].x_advance = 0;
- c->buffer->pos[i].y_advance = 0;
- }
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_LATE:
+ zero_mark_widths_by_unicode (c->buffer);
+ break;
+
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE:
+ zero_mark_widths_by_gdef (c->buffer);
break;
default:
case HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE:
- case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF:
+ //case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_UNICODE_EARLY:
+ case HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_EARLY:
break;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-private.hh new/harfbuzz-0.9.17/src/hb-private.hh
--- old/harfbuzz-0.9.16/src/hb-private.hh 2013-04-19 00:39:29.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-private.hh 2013-05-02 19:56:57.000000000 +0200
@@ -563,8 +563,8 @@
return level < max_level;
}
-#define DEBUG_LEVEL(WHAT, LEVEL) (_hb_debug ((LEVEL), HB_DEBUG_##WHAT))
-#define DEBUG(WHAT) (DEBUG_LEVEL (WHAT, 0))
+#define DEBUG_LEVEL_ENABLED(WHAT, LEVEL) (_hb_debug ((LEVEL), HB_DEBUG_##WHAT))
+#define DEBUG_ENABLED(WHAT) (DEBUG_LEVEL_ENABLED (WHAT, 0))
template <int max_level> static inline void
_hb_debug_msg_va (const char *what,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-set-private.hh new/harfbuzz-0.9.17/src/hb-set-private.hh
--- old/harfbuzz-0.9.16/src/hb-set-private.hh 2013-04-19 20:41:00.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-set-private.hh 2013-05-14 21:30:46.000000000 +0200
@@ -45,12 +45,14 @@
{
ASSERT_POD ();
+ static const unsigned int mask_bytes = sizeof (mask_t);
+ static const unsigned int mask_bits = sizeof (mask_t) * 8;
static const unsigned int num_bits = 0
- + (sizeof (mask_t) >= 1 ? 3 : 0)
- + (sizeof (mask_t) >= 2 ? 1 : 0)
- + (sizeof (mask_t) >= 4 ? 1 : 0)
- + (sizeof (mask_t) >= 8 ? 1 : 0)
- + (sizeof (mask_t) >= 16? 1 : 0)
+ + (mask_bytes >= 1 ? 3 : 0)
+ + (mask_bytes >= 2 ? 1 : 0)
+ + (mask_bytes >= 4 ? 1 : 0)
+ + (mask_bytes >= 8 ? 1 : 0)
+ + (mask_bytes >= 16? 1 : 0)
+ 0;
ASSERT_STATIC (shift < sizeof (hb_codepoint_t) * 8);
@@ -65,7 +67,7 @@
}
inline void add_range (hb_codepoint_t a, hb_codepoint_t b) {
- if ((b >> shift) - (a >> shift) >= sizeof (mask_t) * 8 - 1)
+ if ((b >> shift) - (a >> shift) >= mask_bits - 1)
mask = (mask_t) -1;
else {
mask_t ma = mask_for (a);
@@ -81,7 +83,7 @@
private:
static inline mask_t mask_for (hb_codepoint_t g) {
- return ((mask_t) 1) << ((g >> shift) & (sizeof (mask_t) * 8 - 1));
+ return ((mask_t) 1) << ((g >> shift) & (mask_bits - 1));
}
mask_t mask;
};
@@ -295,7 +297,7 @@
{
for (unsigned int i = 0; i < ELTS; i++)
if (elts[i])
- for (unsigned int j = 0; i < BITS; j++)
+ for (unsigned int j = 0; j < BITS; j++)
if (elts[i] & (1 << j))
return i * BITS + j;
return SENTINEL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-unicode-private.hh new/harfbuzz-0.9.17/src/hb-unicode-private.hh
--- old/harfbuzz-0.9.16/src/hb-unicode-private.hh 2013-03-19 12:04:53.000000000 +0100
+++ new/harfbuzz-0.9.17/src/hb-unicode-private.hh 2013-05-04 01:09:45.000000000 +0200
@@ -128,6 +128,9 @@
* is NOT Default_Ignorable, but it really behaves in a way that it should
* be. That has been reported to the Unicode Technical Committee for
* consideration. As such, we include it here, since Uniscribe removes it.
+ * It *is* in Unicode 6.3 however. U+061C ARABIC LETTER MARK from Unicode
+ * 6.3 is also added manually. The new Unicode 6.3 bidi formatting
+ * characters are encoded in a block that was Default_Ignorable already.
*
* Note: While U+115F and U+1160 are Default_Ignorable, we do NOT want to
* hide them, as the way Uniscribe has implemented them is with regular
@@ -173,6 +176,7 @@
switch (page) {
case 0x00: return unlikely (ch == 0x00AD);
case 0x03: return unlikely (ch == 0x034F);
+ case 0x06: return unlikely (ch == 0x061C);
case 0x17: return hb_in_range (ch, 0x17B4, 0x17B5);
case 0x18: return hb_in_range (ch, 0x180B, 0x180E);
case 0x20: return hb_in_ranges (ch, 0x200B, 0x200F,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/src/hb-version.h new/harfbuzz-0.9.17/src/hb-version.h
--- old/harfbuzz-0.9.16/src/hb-version.h 2013-04-19 22:24:07.000000000 +0200
+++ new/harfbuzz-0.9.17/src/hb-version.h 2013-05-20 15:24:00.000000000 +0200
@@ -38,9 +38,9 @@
#define HB_VERSION_MAJOR 0
#define HB_VERSION_MINOR 9
-#define HB_VERSION_MICRO 16
+#define HB_VERSION_MICRO 17
-#define HB_VERSION_STRING "0.9.16"
+#define HB_VERSION_STRING "0.9.17"
#define HB_VERSION_CHECK(major,minor,micro) \
((major)*10000+(minor)*100+(micro) >= \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/harfbuzz-0.9.16/test/api/test-set.c new/harfbuzz-0.9.17/test/api/test-set.c
--- old/harfbuzz-0.9.16/test/api/test-set.c 2013-01-03 06:22:38.000000000 +0100
+++ new/harfbuzz-0.9.17/test/api/test-set.c 2013-05-14 21:29:42.000000000 +0200
@@ -64,6 +64,10 @@
hb_set_clear (s);
test_empty (s);
+ hb_set_add (s, 33000);
+ test_not_empty (s);
+ hb_set_clear (s);
+
hb_set_add_range (s, 10, 29);
test_not_empty (s);
g_assert (hb_set_has (s, 13));
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org