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

New commits:
commit 0dd86f9f6849d82d60a99e66b6928795cfb2a3c7
Author: Behdad Esfahbod <[email protected]>
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 <[email protected]>
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];
   }
 
_______________________________________________
HarfBuzz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to