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

Behdad Esfahbod behdad at kemper.freedesktop.org
Tue Jun 5 21:05:15 UTC 2018


 TODO                             |    2 
 docs/harfbuzz-sections.txt       |    1 
 src/hb-face.cc                   |   95 ++++++++++++++++++++++++---------------
 src/hb-face.h                    |    4 +
 src/hb-ot-shape-complex-khmer.cc |    6 +-
 5 files changed, 67 insertions(+), 41 deletions(-)

New commits:
commit ba3b6d6c6512b58a3d0e5277fbbe4e69b085467d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Mon Jun 4 16:47:45 2018 -0700

    [khmer] Fix Coeng vs Halant confusion
    
    Test suite results are unchanged (34).

diff --git a/src/hb-ot-shape-complex-khmer.cc b/src/hb-ot-shape-complex-khmer.cc
index 7c2cd791..18e3c941 100644
--- a/src/hb-ot-shape-complex-khmer.cc
+++ b/src/hb-ot-shape-complex-khmer.cc
@@ -317,7 +317,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
       if ((FLAG_UNSAFE (info[i].khmer_category()) & (JOINER_FLAGS | FLAG (OT_N) | FLAG (OT_RS) | MEDIAL_FLAGS | FLAG (OT_Coeng))))
       {
 	info[i].khmer_position() = last_pos;
-	if (unlikely (info[i].khmer_category() == OT_H &&
+	if (unlikely (info[i].khmer_category() == OT_Coeng &&
 		      info[i].khmer_position() == POS_PRE_M))
 	{
 	  /*
@@ -538,7 +538,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
    * and possibly multiple substitutions happened prior to this
    * phase, and that might have messed up our properties.  Recover
    * from a particular case of that where we're fairly sure that a
-   * class of OT_H is desired but has been lost. */
+   * class of OT_Coeng is desired but has been lost. */
   if (khmer_plan->virama_glyph)
   {
     unsigned int virama_glyph = khmer_plan->virama_glyph;
@@ -548,7 +548,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
 	  _hb_glyph_info_multiplied (&info[i]))
       {
         /* This will make sure that this glyph passes is_coeng() test. */
-	info[i].khmer_category() = OT_H;
+	info[i].khmer_category() = OT_Coeng;
 	_hb_glyph_info_clear_ligated_and_multiplied (&info[i]);
       }
   }
commit 8220ef8a54bcc94f122d50804c0a5e829de81be1
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Tue Jun 5 22:50:53 2018 +0430

    Fix hb_face_count build issue
    
    I should've rebased #1002 before the merge, my bad

diff --git a/src/hb-face.cc b/src/hb-face.cc
index d7e8a27b..f79940e9 100644
--- a/src/hb-face.cc
+++ b/src/hb-face.cc
@@ -53,7 +53,7 @@ hb_face_count (hb_blob_t *blob)
     return 0;
 
   hb_blob_t *sanitized = OT::Sanitizer<OT::OpenTypeFontFile> ().sanitize (blob);
-  const OT::OpenTypeFontFile& ot = *OT::Sanitizer<OT::OpenTypeFontFile>::lock_instance (sanitized);
+  const OT::OpenTypeFontFile& ot = *sanitized->as<OT::OpenTypeFontFile> ();
 
   return ot.get_face_count ();
 }
commit 32da0c6bc4770568346f6c05fd6b374be2bbd2b2
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date:   Tue Jun 5 18:56:26 2018 +0430

    Add hb_face_count, a new API (#1002)
    
    Simply, it returns the number of faces on a font blob.
    
    To be used on hb-sanitizer tool but other clients also
    can benefit from it.

diff --git a/TODO b/TODO
index c6804d12..6dac0be5 100644
--- a/TODO
+++ b/TODO
@@ -27,8 +27,6 @@ API additions
 
 - Add query / enumeration API for aalt-like features?
 
-- SFNT api? get_num_faces?
-
 - Add segmentation API
 
 - Add hb-fribidi glue?
diff --git a/docs/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt
index 73840391..c837e6b0 100644
--- a/docs/harfbuzz-sections.txt
+++ b/docs/harfbuzz-sections.txt
@@ -169,6 +169,7 @@ hb_coretext_font_get_ct_font
 
 <SECTION>
 <FILE>hb-face</FILE>
+hb_face_count
 hb_face_create
 hb_face_create_for_tables
 hb_face_destroy
diff --git a/src/hb-face.cc b/src/hb-face.cc
index 01271413..d7e8a27b 100644
--- a/src/hb-face.cc
+++ b/src/hb-face.cc
@@ -35,6 +35,29 @@
 #include "hb-ot-maxp-table.hh"
 
 
+
+/**
+ * hb_face_count: Get number of faces on the blob
+ * @blob:
+ *
+ *
+ *
+ * Return value: Number of faces on the blob
+ *
+ * Since: REPLACEME
+ **/
+unsigned int
+hb_face_count (hb_blob_t *blob)
+{
+  if (unlikely (!blob))
+    return 0;
+
+  hb_blob_t *sanitized = OT::Sanitizer<OT::OpenTypeFontFile> ().sanitize (blob);
+  const OT::OpenTypeFontFile& ot = *OT::Sanitizer<OT::OpenTypeFontFile>::lock_instance (sanitized);
+
+  return ot.get_face_count ();
+}
+
 /*
  * hb_face_t
  */
@@ -65,10 +88,10 @@ const hb_face_t _hb_face_nil = {
 /**
  * hb_face_create_for_tables:
  * @reference_table_func: (closure user_data) (destroy destroy) (scope notified):
- * @user_data: 
- * @destroy: 
+ * @user_data:
+ * @destroy:
+ *
  *
- * 
  *
  * Return value: (transfer full)
  *
@@ -147,10 +170,10 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
 
 /**
  * hb_face_create: (Xconstructor)
- * @blob: 
- * @index: 
+ * @blob:
+ * @index:
+ *
  *
- * 
  *
  * Return value: (transfer full):
  *
@@ -182,7 +205,7 @@ hb_face_create (hb_blob_t    *blob,
 /**
  * hb_face_get_empty:
  *
- * 
+ *
  *
  * Return value: (transfer full)
  *
@@ -199,9 +222,9 @@ hb_face_get_empty (void)
  * hb_face_reference: (skip)
  * @face: a face.
  *
- * 
  *
- * Return value: 
+ *
+ * Return value:
  *
  * Since: 0.9.2
  **/
@@ -215,7 +238,7 @@ hb_face_reference (hb_face_t *face)
  * hb_face_destroy: (skip)
  * @face: a face.
  *
- * 
+ *
  *
  * Since: 0.9.2
  **/
@@ -245,14 +268,14 @@ hb_face_destroy (hb_face_t *face)
 /**
  * hb_face_set_user_data: (skip)
  * @face: a face.
- * @key: 
- * @data: 
- * @destroy: 
- * @replace: 
+ * @key:
+ * @data:
+ * @destroy:
+ * @replace:
  *
- * 
  *
- * Return value: 
+ *
+ * Return value:
  *
  * Since: 0.9.2
  **/
@@ -269,9 +292,9 @@ hb_face_set_user_data (hb_face_t          *face,
 /**
  * hb_face_get_user_data: (skip)
  * @face: a face.
- * @key: 
+ * @key:
+ *
  *
- * 
  *
  * Return value: (transfer none):
  *
@@ -288,7 +311,7 @@ hb_face_get_user_data (hb_face_t          *face,
  * hb_face_make_immutable:
  * @face: a face.
  *
- * 
+ *
  *
  * Since: 0.9.2
  **/
@@ -305,9 +328,9 @@ hb_face_make_immutable (hb_face_t *face)
  * hb_face_is_immutable:
  * @face: a face.
  *
- * 
  *
- * Return value: 
+ *
+ * Return value:
  *
  * Since: 0.9.2
  **/
@@ -321,9 +344,9 @@ hb_face_is_immutable (hb_face_t *face)
 /**
  * hb_face_reference_table:
  * @face: a face.
- * @tag: 
+ * @tag:
+ *
  *
- * 
  *
  * Return value: (transfer full):
  *
@@ -340,7 +363,7 @@ hb_face_reference_table (hb_face_t *face,
  * hb_face_reference_blob:
  * @face: a face.
  *
- * 
+ *
  *
  * Return value: (transfer full):
  *
@@ -355,9 +378,9 @@ hb_face_reference_blob (hb_face_t *face)
 /**
  * hb_face_set_index:
  * @face: a face.
- * @index: 
+ * @index:
+ *
  *
- * 
  *
  * Since: 0.9.2
  **/
@@ -375,9 +398,9 @@ hb_face_set_index (hb_face_t    *face,
  * hb_face_get_index:
  * @face: a face.
  *
- * 
  *
- * Return value: 
+ *
+ * Return value:
  *
  * Since: 0.9.2
  **/
@@ -390,9 +413,9 @@ hb_face_get_index (hb_face_t    *face)
 /**
  * hb_face_set_upem:
  * @face: a face.
- * @upem: 
+ * @upem:
+ *
  *
- * 
  *
  * Since: 0.9.2
  **/
@@ -410,9 +433,9 @@ hb_face_set_upem (hb_face_t    *face,
  * hb_face_get_upem:
  * @face: a face.
  *
- * 
  *
- * Return value: 
+ *
+ * Return value:
  *
  * Since: 0.9.2
  **/
@@ -434,9 +457,9 @@ hb_face_t::load_upem (void) const
 /**
  * hb_face_set_glyph_count:
  * @face: a face.
- * @glyph_count: 
+ * @glyph_count:
+ *
  *
- * 
  *
  * Since: 0.9.7
  **/
@@ -454,9 +477,9 @@ hb_face_set_glyph_count (hb_face_t    *face,
  * hb_face_get_glyph_count:
  * @face: a face.
  *
- * 
  *
- * Return value: 
+ *
+ * Return value:
  *
  * Since: 0.9.7
  **/
diff --git a/src/hb-face.h b/src/hb-face.h
index 0ce8d046..983ee56b 100644
--- a/src/hb-face.h
+++ b/src/hb-face.h
@@ -37,6 +37,10 @@
 HB_BEGIN_DECLS
 
 
+HB_EXTERN unsigned int
+hb_face_count (hb_blob_t *blob);
+
+
 /*
  * hb_face_t
  */


More information about the HarfBuzz mailing list