[HarfBuzz] harfbuzz: Branch 'master' - 4 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Wed Oct 31 17:43:49 UTC 2018


 src/hb-aat-layout-morx-table.hh |   13 +--
 src/hb-dsalgs.hh                |    6 +
 src/hb-set.hh                   |    4 -
 src/test-ot-color.cc            |  135 ++++++++++++++++++----------------------
 4 files changed, 74 insertions(+), 84 deletions(-)

New commits:
commit 5854d3fa251069f8158b97a831d1439c2ff8b510
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Oct 31 10:42:49 2018 -0700

    [set] Warning fix with gcc 8.1
    
    https://github.com/harfbuzz/harfbuzz/pull/1334

diff --git a/src/hb-dsalgs.hh b/src/hb-dsalgs.hh
index e8bd95c2..59df860d 100644
--- a/src/hb-dsalgs.hh
+++ b/src/hb-dsalgs.hh
@@ -610,8 +610,10 @@ struct HbOpXor
 template <typename elt_t, unsigned int byte_size>
 struct hb_vector_size_t
 {
-  elt_t& operator [] (unsigned int i) { return u.v[i]; }
-  const elt_t& operator [] (unsigned int i) const { return u.v[i]; }
+  inline elt_t& operator [] (unsigned int i) { return u.v[i]; }
+  inline const elt_t& operator [] (unsigned int i) const { return u.v[i]; }
+
+  inline void clear (unsigned char v = 0) { memset (this, v, sizeof (*this)); }
 
   template <class Op>
   inline hb_vector_size_t process (const hb_vector_size_t &o) const
diff --git a/src/hb-set.hh b/src/hb-set.hh
index 2dfcc242..947e8d9d 100644
--- a/src/hb-set.hh
+++ b/src/hb-set.hh
@@ -53,8 +53,8 @@ struct hb_set_t
 
   struct page_t
   {
-    inline void init0 (void) { memset (reinterpret_cast<char*>(&v), 0, sizeof (v)); }
-    inline void init1 (void) { memset (reinterpret_cast<char*>(&v), 0xff, sizeof (v)); }
+    inline void init0 (void) { v.clear (); }
+    inline void init1 (void) { v.clear (0xFF); }
 
     inline unsigned int len (void) const
     { return ARRAY_LENGTH_CONST (v); }
commit 850a7af3a419c6c4ab92bff59991758a2951d41f
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Wed Oct 31 14:20:23 2018 +0330

    [ot-color-test] Remove the non-working exact strike size storing (#1339)

diff --git a/src/test-ot-color.cc b/src/test-ot-color.cc
index cb369c0f..1e492e66 100644
--- a/src/test-ot-color.cc
+++ b/src/test-ot-color.cc
@@ -23,7 +23,7 @@
  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  */
 
-#include "hb.hh"
+#include "hb.h"
 #include "hb-ot.h"
 
 #include "hb-ft.h"
@@ -40,74 +40,6 @@
 #include <stdio.h>
 
 static void
-png_dump (hb_face_t *face, unsigned int face_index)
-{
-  unsigned glyph_count = hb_face_get_glyph_count (face);
-  hb_font_t *font = hb_font_create (face);
-
-  /* ugly hack, scans the font for strikes, not needed for regular clients */
-  #define STRIKES_MAX 20
-  unsigned int strikes_count = 0;
-  unsigned int strikes[STRIKES_MAX] = {0};
-  {
-    /* find a sample glyph */
-    unsigned int sample_glyph_id;
-    /* we don't care much about different strikes for different glyphs */
-    for (sample_glyph_id = 0; sample_glyph_id < glyph_count; sample_glyph_id++)
-    {
-      hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id);
-      unsigned int blob_length = hb_blob_get_length (blob);
-      hb_blob_destroy (blob);
-      if (blob_length != 0)
-	break;
-    }
-    /* find strikes it has */
-    unsigned int upem = hb_face_get_upem (face);
-    unsigned int blob_length = 0;
-    for (unsigned int ppem = 1; ppem <= upem && strikes_count < STRIKES_MAX; ppem++)
-    {
-      hb_font_set_ppem (font, ppem, ppem);
-      hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id);
-      unsigned int new_blob_length = hb_blob_get_length (blob);
-      if (blob_length != new_blob_length)
-      {
-	strikes_count++;
-	blob_length = new_blob_length;
-      }
-      if (strikes_count != 0)
-	strikes[strikes_count - 1] = ppem;
-      hb_blob_destroy (blob);
-    }
-    /* can't report the biggest strike correctly, and, we can't do anything about it */
-  }
-  #undef STRIKES_MAX
-
-  for (unsigned int strike = 0; strike < strikes_count; strike++)
-    for (unsigned int glyph_id = 0; glyph_id < glyph_count; glyph_id++)
-    {
-      unsigned int ppem = strikes[strike];
-      hb_font_set_ppem (font, ppem, ppem);
-      hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, glyph_id);
-
-      if (hb_blob_get_length (blob) == 0) continue;
-
-      unsigned int length;
-      const char *data = hb_blob_get_data (blob, &length);
-
-      char output_path[255];
-      sprintf (output_path, "out/png-%d-%d-%d.png", glyph_id, strike, face_index);
-
-      FILE *f = fopen (output_path, "wb");
-      fwrite (data, 1, length, f);
-      fclose (f);
-
-      hb_blob_destroy (blob);
-    }
-
-  hb_font_destroy (font);
-}
-
-static void
 svg_dump (hb_face_t *face, unsigned int face_index)
 {
   unsigned glyph_count = hb_face_get_glyph_count (face);
@@ -136,6 +68,63 @@ svg_dump (hb_face_t *face, unsigned int face_index)
   }
 }
 
+/* _png API is so easy to use unlike the below code, don't get confused */
+static void
+png_dump (hb_face_t *face, unsigned int face_index)
+{
+  unsigned glyph_count = hb_face_get_glyph_count (face);
+  hb_font_t *font = hb_font_create (face);
+
+  /* scans the font for strikes */
+  unsigned int sample_glyph_id;
+  /* we don't care about different strikes for different glyphs at this point */
+  for (sample_glyph_id = 0; sample_glyph_id < glyph_count; sample_glyph_id++)
+  {
+    hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id);
+    unsigned int blob_length = hb_blob_get_length (blob);
+    hb_blob_destroy (blob);
+    if (blob_length != 0)
+      break;
+  }
+
+  unsigned int upem = hb_face_get_upem (face);
+  unsigned int blob_length = 0;
+  unsigned int strike = 0;
+  for (unsigned int ppem = 1; ppem <= upem; ppem++)
+  {
+    hb_font_set_ppem (font, ppem, ppem);
+    hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, sample_glyph_id);
+    unsigned int new_blob_length = hb_blob_get_length (blob);
+    hb_blob_destroy (blob);
+    if (new_blob_length != blob_length)
+    {
+      for (unsigned int glyph_id = 0; glyph_id < glyph_count; glyph_id++)
+      {
+	hb_blob_t *blob = hb_ot_color_glyph_reference_png (font, glyph_id);
+
+	if (hb_blob_get_length (blob) == 0) continue;
+
+	unsigned int length;
+	const char *data = hb_blob_get_data (blob, &length);
+
+	char output_path[255];
+	sprintf (output_path, "out/png-%d-%d-%d.png", glyph_id, strike, face_index);
+
+	FILE *f = fopen (output_path, "wb");
+	fwrite (data, 1, length, f);
+	fclose (f);
+
+	hb_blob_destroy (blob);
+      }
+
+      strike++;
+      blob_length = new_blob_length;
+    }
+  }
+
+  hb_font_destroy (font);
+}
+
 static void
 layered_glyph_dump (hb_face_t *face, cairo_font_face_t *cairo_face, unsigned int face_index)
 {
@@ -144,7 +133,7 @@ layered_glyph_dump (hb_face_t *face, cairo_font_face_t *cairo_face, unsigned int
   unsigned glyph_count = hb_face_get_glyph_count (face);
   for (hb_codepoint_t gid = 0; gid < glyph_count; ++gid)
   {
-    unsigned int num_layers = hb_ot_color_glyph_get_layers (face, gid, 0, nullptr, nullptr);
+    unsigned int num_layers = hb_ot_color_glyph_get_layers (face, gid, 0, NULL, NULL);
     if (!num_layers)
       continue;
 
@@ -181,7 +170,7 @@ layered_glyph_dump (hb_face_t *face, cairo_font_face_t *cairo_face, unsigned int
       for (unsigned int palette = 0; palette < palette_count; palette++) {
 	char output_path[255];
 
-	unsigned int num_colors = hb_ot_color_palette_get_colors (face, palette, 0, nullptr, nullptr);
+	unsigned int num_colors = hb_ot_color_palette_get_colors (face, palette, 0, NULL, NULL);
 	if (!num_colors)
 	  continue;
 
@@ -282,14 +271,14 @@ main (int argc, char **argv)
 
 
   FILE *font_name_file = fopen ("out/.dumped_font_name", "r");
-  if (font_name_file != nullptr)
+  if (font_name_file != NULL)
   {
     fprintf (stderr, "Purge or move ./out folder in order to run a new dump\n");
     exit (1);
   }
 
   font_name_file = fopen ("out/.dumped_font_name", "w");
-  if (font_name_file == nullptr)
+  if (font_name_file == NULL)
   {
     fprintf (stderr, "./out is not accessible as a folder, create it please\n");
     exit (1);
commit 2e639c47c9d35ff7dc4dde21f744f9ee695a27f3
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Wed Oct 31 14:20:14 2018 +0330

    [aat] Fix older compilers by not referencing enum directly (#1340)

diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index 51bb3b33..45dbc28a 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -427,13 +427,12 @@ struct LigatureSubtable
 
   typedef LigatureEntry<Types::extended> LigatureEntryT;
   typedef typename LigatureEntryT::EntryData EntryData;
-  typedef typename LigatureEntryT::Flags Flags;
 
   struct driver_context_t
   {
     enum
     {
-      DontAdvance	= LigatureEntry<Types::extended>::DontAdvance,
+      DontAdvance	= LigatureEntryT::DontAdvance,
     };
     static const bool in_place = false;
     enum LigActionFlags
@@ -470,7 +469,7 @@ struct LigatureSubtable
       unsigned int flags = entry->flags;
 
       DEBUG_MSG (APPLY, nullptr, "Ligature transition at %d", buffer->idx);
-      if (flags & Flags::SetComponent)
+      if (flags & LigatureEntryT::SetComponent)
       {
         if (unlikely (match_length >= ARRAY_LENGTH (match_positions)))
 	  return false;
commit 642c9dcf1b34b51ffdbf88ccbef4762aa12a5cbe
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Wed Oct 31 14:02:37 2018 +0330

    [aat] Minor, remove extra semicolons

diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index 08a380a4..51bb3b33 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -388,11 +388,11 @@ struct LigatureEntry<true>
 
   template <typename Flags>
   static inline bool performAction (Flags flags)
-  { return flags & PerformAction; };
+  { return flags & PerformAction; }
 
   template <typename Entry, typename Flags>
   static inline unsigned int ligActionIndex (Entry &entry, Flags flags)
-  { return entry->data.ligActionIndex; };
+  { return entry->data.ligActionIndex; }
 };
 template <>
 struct LigatureEntry<false>
@@ -412,11 +412,11 @@ struct LigatureEntry<false>
 
   template <typename Flags>
   static inline bool performAction (Flags flags)
-  { return flags & Offset; };
+  { return flags & Offset; }
 
   template <typename Entry, typename Flags>
   static inline unsigned int ligActionIndex (Entry &entry, Flags flags)
-  { return flags & 0x3FFF; };
+  { return flags & 0x3FFF; }
 };
 
 


More information about the HarfBuzz mailing list