[HarfBuzz] harfbuzz-ng: Branch 'master' - 2 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Fri Jun 8 07:23:10 PDT 2012


 src/hb-uniscribe.cc |  148 ++++++++++++++++++++++++++--------------------------
 1 file changed, 74 insertions(+), 74 deletions(-)

New commits:
commit 0dd86f9f6849d82d60a99e66b6928795cfb2a3c7
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Jun 8 10:23:03 2012 -0400

    Whitespace

diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index 9d121aa..485e084 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -342,78 +342,78 @@ retry:
   bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
   for (unsigned int j = 0; j < item_count; j++)
   {
-      unsigned int i = backward ? item_count - 1 - j : j;
-      unsigned int chars_offset = items[i].iCharPos;
-      unsigned int item_chars_len = items[i + 1].iCharPos - chars_offset;
-
-      OPENTYPE_TAG script_tag;
-      /* We ignore what script tag Uniscribe chose, except to differentiate
-       * between old/new tags.  Not sure if this picks DFLT up correctly...
-       * This also screws things up as the item.analysis also has an opaque
-       * script member. */
-      if (script_tags[i] == hb_uint32_swap (buffer_script_tags[1]))
-        script_tag = hb_uint32_swap (buffer_script_tags[1]);
-      else
-        script_tag = hb_uint32_swap (buffer_script_tags[0]);
-
-      hr = ScriptShapeOpenType (font_data->hdc,
-				&font_data->script_cache,
-				&items[i].a,
-				script_tag,
-				language_tag,
-				range_char_counts,
-				range_properties,
-				range_count,
-				wchars + chars_offset,
-				item_chars_len,
-				glyphs_size - glyphs_offset,
-				/* out */
-				log_clusters + chars_offset,
-				char_props + chars_offset,
-				glyphs + glyphs_offset,
-				glyph_props + glyphs_offset,
-				(int *) &glyphs_len);
-
-      for (unsigned int j = chars_offset; j < chars_offset + item_chars_len; j++)
-        log_clusters[j] += glyphs_offset;
-
-      if (unlikely (items[i].a.fNoGlyphIndex))
-	FAIL ("ScriptShapeOpenType() set fNoGlyphIndex");
-      if (unlikely (hr == E_OUTOFMEMORY))
-      {
-        buffer->ensure (buffer->allocated * 2);
-	if (buffer->in_error)
-	  FAIL ("Buffer resize failed");
-	goto retry;
-      }
-      if (unlikely (hr == USP_E_SCRIPT_NOT_IN_FONT))
-	FAIL ("ScriptShapeOpenType() failed: Font doesn't support script");
-      if (unlikely (FAILED (hr)))
-	FAIL ("ScriptShapeOpenType() failed: 0x%08xL", hr);
-
-      hr = ScriptPlaceOpenType (font_data->hdc,
-				&font_data->script_cache,
-				&items[i].a,
-				script_tag,
-				language_tag,
-				range_char_counts,
-				range_properties,
-				range_count,
-				wchars + chars_offset,
-				log_clusters + chars_offset,
-				char_props + chars_offset,
-				item_chars_len,
-				glyphs + glyphs_offset,
-				glyph_props + glyphs_offset,
-				glyphs_len,
-				/* out */
-				advances + glyphs_offset,
-				offsets + glyphs_offset,
-				NULL);
-      if (unlikely (FAILED (hr)))
-	FAIL ("ScriptPlaceOpenType() failed: 0x%08xL", hr);
-
-      glyphs_offset += glyphs_len;
+    unsigned int i = backward ? item_count - 1 - j : j;
+    unsigned int chars_offset = items[i].iCharPos;
+    unsigned int item_chars_len = items[i + 1].iCharPos - chars_offset;
+
+    OPENTYPE_TAG script_tag;
+    /* We ignore what script tag Uniscribe chose, except to differentiate
+     * between old/new tags.  Not sure if this picks DFLT up correctly...
+     * This also screws things up as the item.analysis also has an opaque
+     * script member. */
+    if (script_tags[i] == hb_uint32_swap (buffer_script_tags[1]))
+      script_tag = hb_uint32_swap (buffer_script_tags[1]);
+    else
+      script_tag = hb_uint32_swap (buffer_script_tags[0]);
+
+    hr = ScriptShapeOpenType (font_data->hdc,
+			      &font_data->script_cache,
+			      &items[i].a,
+			      script_tag,
+			      language_tag,
+			      range_char_counts,
+			      range_properties,
+			      range_count,
+			      wchars + chars_offset,
+			      item_chars_len,
+			      glyphs_size - glyphs_offset,
+			      /* out */
+			      log_clusters + chars_offset,
+			      char_props + chars_offset,
+			      glyphs + glyphs_offset,
+			      glyph_props + glyphs_offset,
+			      (int *) &glyphs_len);
+
+    for (unsigned int j = chars_offset; j < chars_offset + item_chars_len; j++)
+      log_clusters[j] += glyphs_offset;
+
+    if (unlikely (items[i].a.fNoGlyphIndex))
+      FAIL ("ScriptShapeOpenType() set fNoGlyphIndex");
+    if (unlikely (hr == E_OUTOFMEMORY))
+    {
+      buffer->ensure (buffer->allocated * 2);
+      if (buffer->in_error)
+	FAIL ("Buffer resize failed");
+      goto retry;
+    }
+    if (unlikely (hr == USP_E_SCRIPT_NOT_IN_FONT))
+      FAIL ("ScriptShapeOpenType() failed: Font doesn't support script");
+    if (unlikely (FAILED (hr)))
+      FAIL ("ScriptShapeOpenType() failed: 0x%08xL", hr);
+
+    hr = ScriptPlaceOpenType (font_data->hdc,
+			      &font_data->script_cache,
+			      &items[i].a,
+			      script_tag,
+			      language_tag,
+			      range_char_counts,
+			      range_properties,
+			      range_count,
+			      wchars + chars_offset,
+			      log_clusters + chars_offset,
+			      char_props + chars_offset,
+			      item_chars_len,
+			      glyphs + glyphs_offset,
+			      glyph_props + glyphs_offset,
+			      glyphs_len,
+			      /* out */
+			      advances + glyphs_offset,
+			      offsets + glyphs_offset,
+			      NULL);
+    if (unlikely (FAILED (hr)))
+      FAIL ("ScriptPlaceOpenType() failed: 0x%08xL", hr);
+
+    glyphs_offset += glyphs_len;
   }
   glyphs_len = glyphs_offset;
 
commit 8e7beba7c3b3dea3cb3b7e280c5aab4f13b92d31
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Jun 8 10:22:06 2012 -0400

    Fix Uniscribe clusters with direction-overriden Arabic

diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index ce34f77..9d121aa 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -429,11 +429,11 @@ retry:
   }
   if (!backward) {
     for (unsigned int i = 1; i < glyphs_len; i++)
-      if (!glyph_props[i].sva.fClusterStart)
+      if (vis_clusters[i] == -1)
 	vis_clusters[i] = vis_clusters[i - 1];
   } else {
     for (int i = glyphs_len - 2; i >= 0; i--)
-      if (!glyph_props[i].sva.fClusterStart)
+      if (vis_clusters[i] == -1)
 	vis_clusters[i] = vis_clusters[i + 1];
   }
 



More information about the HarfBuzz mailing list