[HarfBuzz] harfbuzz: Branch 'master' - 10 commits
Behdad Esfahbod
behdad at kemper.freedesktop.org
Thu Mar 15 14:47:11 UTC 2018
CMakeLists.txt | 31 +++++++--
src/hb-aat-layout-common-private.hh | 84 ---------------------------
src/hb-aat-layout-trak-table.hh | 8 +-
src/hb-open-type-private.hh | 87 +++++++++++++++++++++++++++
src/hb-ot-color-cbdt-table.hh | 112 +++++++++++++++++-------------------
src/hb-ot-color-colr-table.hh | 70 ++++------------------
src/hb-ot-layout-common-private.hh | 10 +--
src/hb-ot-var-fvar-table.hh | 6 -
src/hb-private.hh | 13 ----
9 files changed, 191 insertions(+), 230 deletions(-)
New commits:
commit a0dccb6188d7a9174643c7239041cb1a5300b957
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 16:31:53 2018 +0100
Add NameID
diff --git a/src/hb-aat-layout-trak-table.hh b/src/hb-aat-layout-trak-table.hh
index 5767b116..ab743733 100644
--- a/src/hb-aat-layout-trak-table.hh
+++ b/src/hb-aat-layout-trak-table.hh
@@ -56,11 +56,11 @@ struct TrackTableEntry
}
protected:
- Fixed track; /* Track value for this record. */
- HBUINT16 trackNameID; /* The 'name' table index for this track */
+ Fixed track; /* Track value for this record. */
+ NameID trackNameID; /* The 'name' table index for this track */
OffsetTo<UnsizedArrayOf<FWORD> >
- values; /* Offset from start of tracking table to
- * per-size tracking values for this track. */
+ values; /* Offset from start of tracking table to
+ * per-size tracking values for this track. */
public:
DEFINE_SIZE_STATIC (8);
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index b065711b..5060b3eb 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -729,6 +729,9 @@ DEFINE_NULL_DATA (Tag, " ");
/* Glyph index number, same as uint16 (length = 16 bits) */
typedef HBUINT16 GlyphID;
+/* Name-table index, same as uint16 (length = 16 bits) */
+typedef HBUINT16 NameID;
+
/* Script/language-system/feature index */
struct Index : HBUINT16 {
static const unsigned int NOT_FOUND_INDEX = 0xFFFFu;
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index c5e7f521..e9240aaa 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -398,7 +398,7 @@ struct FeatureParamsStylisticSet
* added to the end of this Feature Parameters
* table in the future. */
- HBUINT16 uiNameID; /* The 'name' table name ID that specifies a
+ NameID uiNameID; /* The 'name' table name ID that specifies a
* string (or strings, for multiple languages)
* for a user-interface label for this
* feature. The values of uiLabelNameId and
@@ -427,24 +427,24 @@ struct FeatureParamsCharacterVariants
}
HBUINT16 format; /* Format number is set to 0. */
- HBUINT16 featUILableNameID; /* The ‘name’ table name ID that
+ NameID featUILableNameID; /* The ‘name’ table name ID that
* specifies a string (or strings,
* for multiple languages) for a
* user-interface label for this
* feature. (May be nullptr.) */
- HBUINT16 featUITooltipTextNameID;/* The ‘name’ table name ID that
+ NameID featUITooltipTextNameID;/* The ‘name’ table name ID that
* specifies a string (or strings,
* for multiple languages) that an
* application can use for tooltip
* text for this feature. (May be
* nullptr.) */
- HBUINT16 sampleTextNameID; /* The ‘name’ table name ID that
+ NameID sampleTextNameID; /* The ‘name’ table name ID that
* specifies sample text that
* illustrates the effect of this
* feature. (May be nullptr.) */
HBUINT16 numNamedParameters; /* Number of named parameters. (May
* be zero.) */
- HBUINT16 firstParamUILabelNameID;/* The first ‘name’ table name ID
+ NameID firstParamUILabelNameID;/* The first ‘name’ table name ID
* used to specify strings for
* user-interface labels for the
* feature parameters. (Must be zero
diff --git a/src/hb-ot-var-fvar-table.hh b/src/hb-ot-var-fvar-table.hh
index 999b7236..17ff0e51 100644
--- a/src/hb-ot-var-fvar-table.hh
+++ b/src/hb-ot-var-fvar-table.hh
@@ -42,11 +42,11 @@ struct InstanceRecord
}
protected:
- HBUINT16 subfamilyNameID;/* The name ID for entries in the 'name' table
+ NameID subfamilyNameID;/* The name ID for entries in the 'name' table
* that provide subfamily names for this instance. */
HBUINT16 reserved; /* Reserved for future use — set to 0. */
Fixed coordinates[VAR];/* The coordinates array for this instance. */
- //HBUINT16 postScriptNameIDX;/*Optional. The name ID for entries in the 'name'
+ //NameID postScriptNameIDX;/*Optional. The name ID for entries in the 'name'
// * table that provide PostScript names for this
// * instance. */
@@ -68,7 +68,7 @@ struct AxisRecord
Fixed defaultValue; /* The default coordinate value for the axis. */
Fixed maxValue; /* The maximum coordinate value for the axis. */
HBUINT16 reserved; /* Reserved for future use — set to 0. */
- HBUINT16 axisNameID; /* The name ID for entries in the 'name' table that
+ NameID axisNameID; /* The name ID for entries in the 'name' table that
* provide a display name for this axis. */
public:
commit 56946d21c0696ed6a098434537979396171c9bfb
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 16:26:33 2018 +0100
[color/COLR] Simplify
diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh
index fe93f64b..c1cf6de5 100644
--- a/src/hb-ot-color-colr-table.hh
+++ b/src/hb-ot-color-colr-table.hh
@@ -79,51 +79,9 @@ struct COLR
inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
- if (!(c->check_struct (this) &&
- c->check_array (&(this+layers), sizeof (LayerRecord), numLayers) &&
- c->check_array (&(this+baseGlyphs), sizeof (BaseGlyphRecord), numBaseGlyphs)))
- return_trace (false);
-
- const BaseGlyphRecord* base_glyph_records = (this+baseGlyphs).arrayZ;
- for (unsigned int i = 0; i < numBaseGlyphs; ++i)
- if (base_glyph_records[i].firstLayerIdx +
- base_glyph_records[i].numLayers > numLayers)
- return_trace (false);
-
- return_trace (true);
- }
-
- inline bool get_base_glyph_record (hb_codepoint_t glyph_id,
- unsigned int &first_layer,
- unsigned int &num_layers) const
- {
- const BaseGlyphRecord* base_glyph_records = (this+baseGlyphs).arrayZ;
- unsigned int min = 0, max = numBaseGlyphs - 1;
- while (min <= max)
- {
- unsigned int mid = (min + max) / 2;
- hb_codepoint_t glyphid = base_glyph_records[mid].glyphid;
- if (glyphid > glyph_id)
- max = mid - 1;
- else if (glyphid < glyph_id)
- min = mid + 1;
- else
- {
- first_layer = base_glyph_records[mid].firstLayerIdx;
- num_layers = base_glyph_records[mid].numLayers;
- return true;
- }
- }
- return false;
- }
-
- inline void get_layer_record (int layer,
- hb_codepoint_t &glyph_id,
- unsigned int &palette_index) const
- {
- const LayerRecord* records = (this+layers).arrayZ;
- glyph_id = records[layer].glyphid;
- palette_index = records[layer].colorIdx;
+ return_trace (c->check_struct (this) &&
+ (this+baseGlyphs).sanitize (c, numBaseGlyphs) &&
+ (this+layers).sanitize (c, numLayers));
}
protected:
commit 6418ae4e8a3f4681cb4e7d54c589562930bc0678
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 16:18:42 2018 +0100
[color/COLR] Clean up
diff --git a/src/hb-aat-layout-common-private.hh b/src/hb-aat-layout-common-private.hh
index 7c0dfa8b..454b141f 100644
--- a/src/hb-aat-layout-common-private.hh
+++ b/src/hb-aat-layout-common-private.hh
@@ -140,90 +140,6 @@ struct BinSearchArrayOf
};
-/* TODO Move this to hb-open-type-private.hh and use it in ArrayOf, HeadlessArrayOf,
- * and other places around the code base?? */
-template <typename Type>
-struct UnsizedArrayOf
-{
- inline const Type& operator [] (unsigned int i) const { return arrayZ[i]; }
- inline Type& operator [] (unsigned int i) { return arrayZ[i]; }
-
- inline bool sanitize (hb_sanitize_context_t *c, unsigned int count) const
- {
- TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c, count))) return_trace (false);
-
- /* Note: for structs that do not reference other structs,
- * we do not need to call their sanitize() as we already did
- * a bound check on the aggregate array size. We just include
- * a small unreachable expression to make sure the structs
- * pointed to do have a simple sanitize(), ie. they do not
- * reference other structs via offsets.
- */
- (void) (false && arrayZ[0].sanitize (c));
-
- return_trace (true);
- }
- inline bool sanitize (hb_sanitize_context_t *c, unsigned int count, const void *base) const
- {
- TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c, count))) return_trace (false);
- for (unsigned int i = 0; i < count; i++)
- if (unlikely (!arrayZ[i].sanitize (c, base)))
- return_trace (false);
- return_trace (true);
- }
- template <typename T>
- inline bool sanitize (hb_sanitize_context_t *c, unsigned int count, const void *base, T user_data) const
- {
- TRACE_SANITIZE (this);
- if (unlikely (!sanitize_shallow (c, count))) return_trace (false);
- for (unsigned int i = 0; i < count; i++)
- if (unlikely (!arrayZ[i].sanitize (c, base, user_data)))
- return_trace (false);
- return_trace (true);
- }
-
- private:
- inline bool sanitize_shallow (hb_sanitize_context_t *c, unsigned int count) const
- {
- TRACE_SANITIZE (this);
- return_trace (c->check_array (arrayZ, arrayZ[0].static_size, count));
- }
-
- public:
- Type arrayZ[VAR];
- public:
- DEFINE_SIZE_ARRAY (0, arrayZ);
-};
-
-/* Unsized array of offset's */
-template <typename Type, typename OffsetType>
-struct UnsizedOffsetArrayOf : UnsizedArrayOf<OffsetTo<Type, OffsetType> > {};
-
-/* Unsized array of offsets relative to the beginning of the array itself. */
-template <typename Type, typename OffsetType>
-struct UnsizedOffsetListOf : UnsizedOffsetArrayOf<Type, OffsetType>
-{
- inline const Type& operator [] (unsigned int i) const
- {
- return this+this->arrayZ[i];
- }
-
- inline bool sanitize (hb_sanitize_context_t *c, unsigned int count) const
- {
- TRACE_SANITIZE (this);
- return_trace ((UnsizedOffsetArrayOf<Type, OffsetType>::sanitize (c, count, this)));
- }
- template <typename T>
- inline bool sanitize (hb_sanitize_context_t *c, unsigned int count, T user_data) const
- {
- TRACE_SANITIZE (this);
- return_trace ((UnsizedOffsetArrayOf<Type, OffsetType>::sanitize (c, count, this, user_data)));
- }
-};
-
-
/*
* Lookup Table
*/
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 5d33199e..b065711b 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -862,6 +862,90 @@ static inline Type& operator + (Base &base, OffsetTo<Type, OffsetType> &offset)
* Array Types
*/
+
+/* TODO Use it in ArrayOf, HeadlessArrayOf, and other places around the code base?? */
+template <typename Type>
+struct UnsizedArrayOf
+{
+ inline const Type& operator [] (unsigned int i) const { return arrayZ[i]; }
+ inline Type& operator [] (unsigned int i) { return arrayZ[i]; }
+
+ inline bool sanitize (hb_sanitize_context_t *c, unsigned int count) const
+ {
+ TRACE_SANITIZE (this);
+ if (unlikely (!sanitize_shallow (c, count))) return_trace (false);
+
+ /* Note: for structs that do not reference other structs,
+ * we do not need to call their sanitize() as we already did
+ * a bound check on the aggregate array size. We just include
+ * a small unreachable expression to make sure the structs
+ * pointed to do have a simple sanitize(), ie. they do not
+ * reference other structs via offsets.
+ */
+ (void) (false && arrayZ[0].sanitize (c));
+
+ return_trace (true);
+ }
+ inline bool sanitize (hb_sanitize_context_t *c, unsigned int count, const void *base) const
+ {
+ TRACE_SANITIZE (this);
+ if (unlikely (!sanitize_shallow (c, count))) return_trace (false);
+ for (unsigned int i = 0; i < count; i++)
+ if (unlikely (!arrayZ[i].sanitize (c, base)))
+ return_trace (false);
+ return_trace (true);
+ }
+ template <typename T>
+ inline bool sanitize (hb_sanitize_context_t *c, unsigned int count, const void *base, T user_data) const
+ {
+ TRACE_SANITIZE (this);
+ if (unlikely (!sanitize_shallow (c, count))) return_trace (false);
+ for (unsigned int i = 0; i < count; i++)
+ if (unlikely (!arrayZ[i].sanitize (c, base, user_data)))
+ return_trace (false);
+ return_trace (true);
+ }
+
+ private:
+ inline bool sanitize_shallow (hb_sanitize_context_t *c, unsigned int count) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (c->check_array (arrayZ, arrayZ[0].static_size, count));
+ }
+
+ public:
+ Type arrayZ[VAR];
+ public:
+ DEFINE_SIZE_ARRAY (0, arrayZ);
+};
+
+/* Unsized array of offset's */
+template <typename Type, typename OffsetType>
+struct UnsizedOffsetArrayOf : UnsizedArrayOf<OffsetTo<Type, OffsetType> > {};
+
+/* Unsized array of offsets relative to the beginning of the array itself. */
+template <typename Type, typename OffsetType>
+struct UnsizedOffsetListOf : UnsizedOffsetArrayOf<Type, OffsetType>
+{
+ inline const Type& operator [] (unsigned int i) const
+ {
+ return this+this->arrayZ[i];
+ }
+
+ inline bool sanitize (hb_sanitize_context_t *c, unsigned int count) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace ((UnsizedOffsetArrayOf<Type, OffsetType>::sanitize (c, count, this)));
+ }
+ template <typename T>
+ inline bool sanitize (hb_sanitize_context_t *c, unsigned int count, T user_data) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace ((UnsizedOffsetArrayOf<Type, OffsetType>::sanitize (c, count, this, user_data)));
+ }
+};
+
+
/* An array with a number of elements. */
template <typename Type, typename LenType=HBUINT16>
struct ArrayOf
diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh
index 9f8b9375..fe93f64b 100644
--- a/src/hb-ot-color-colr-table.hh
+++ b/src/hb-ot-color-colr-table.hh
@@ -80,14 +80,14 @@ struct COLR
{
TRACE_SANITIZE (this);
if (!(c->check_struct (this) &&
- c->check_array (&(this+layerRecordsOffsetZ), sizeof (LayerRecord), numLayerRecords) &&
- c->check_array (&(this+baseGlyphRecordsZ), sizeof (BaseGlyphRecord), numBaseGlyphRecords)))
+ c->check_array (&(this+layers), sizeof (LayerRecord), numLayers) &&
+ c->check_array (&(this+baseGlyphs), sizeof (BaseGlyphRecord), numBaseGlyphs)))
return_trace (false);
- const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this);
- for (unsigned int i = 0; i < numBaseGlyphRecords; ++i)
+ const BaseGlyphRecord* base_glyph_records = (this+baseGlyphs).arrayZ;
+ for (unsigned int i = 0; i < numBaseGlyphs; ++i)
if (base_glyph_records[i].firstLayerIdx +
- base_glyph_records[i].numLayers > numLayerRecords)
+ base_glyph_records[i].numLayers > numLayers)
return_trace (false);
return_trace (true);
@@ -97,8 +97,8 @@ struct COLR
unsigned int &first_layer,
unsigned int &num_layers) const
{
- const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this);
- unsigned int min = 0, max = numBaseGlyphRecords - 1;
+ const BaseGlyphRecord* base_glyph_records = (this+baseGlyphs).arrayZ;
+ unsigned int min = 0, max = numBaseGlyphs - 1;
while (min <= max)
{
unsigned int mid = (min + max) / 2;
@@ -121,19 +121,19 @@ struct COLR
hb_codepoint_t &glyph_id,
unsigned int &palette_index) const
{
- const LayerRecord* records = &layerRecordsOffsetZ (this);
+ const LayerRecord* records = (this+layers).arrayZ;
glyph_id = records[layer].glyphid;
palette_index = records[layer].colorIdx;
}
protected:
- HBUINT16 version; /* Table version number */
- HBUINT16 numBaseGlyphRecords; /* Number of Base Glyph Records */
- LOffsetTo<BaseGlyphRecord>
- baseGlyphRecordsZ; /* Offset to Base Glyph records. */
- LOffsetTo<LayerRecord>
- layerRecordsOffsetZ; /* Offset to Layer Records */
- HBUINT16 numLayerRecords; /* Number of Layer Records */
+ HBUINT16 version; /* Table version number */
+ HBUINT16 numBaseGlyphs; /* Number of Base Glyph Records */
+ LOffsetTo<UnsizedArrayOf<BaseGlyphRecord> >
+ baseGlyphs; /* Offset to Base Glyph records. */
+ LOffsetTo<UnsizedArrayOf<LayerRecord> >
+ layers; /* Offset to Layer Records */
+ HBUINT16 numLayers; /* Number of Layer Records */
public:
DEFINE_SIZE_STATIC (14);
};
commit 150c53ee969876c2831b6165cb71655e7ce2dbdb
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 16:08:12 2018 +0100
[color/COLR] Fix bad sanitize
Bad bad bad bad code. Don't do that. If compiler's not happy, understand why.
diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh
index 01d70377..9f8b9375 100644
--- a/src/hb-ot-color-colr-table.hh
+++ b/src/hb-ot-color-colr-table.hh
@@ -80,8 +80,8 @@ struct COLR
{
TRACE_SANITIZE (this);
if (!(c->check_struct (this) &&
- c->check_array ((const void*) &layerRecordsOffsetZ, sizeof (LayerRecord), numLayerRecords) &&
- c->check_array ((const void*) &baseGlyphRecordsZ, sizeof (BaseGlyphRecord), numBaseGlyphRecords)))
+ c->check_array (&(this+layerRecordsOffsetZ), sizeof (LayerRecord), numLayerRecords) &&
+ c->check_array (&(this+baseGlyphRecordsZ), sizeof (BaseGlyphRecord), numBaseGlyphRecords)))
return_trace (false);
const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this);
commit 399c800b93879186da2b7c892c7aa21468f062f2
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 16:03:01 2018 +0100
[color/COLR] Clean up
diff --git a/src/hb-ot-color-colr-table.hh b/src/hb-ot-color-colr-table.hh
index 2c3b1ccc..01d70377 100644
--- a/src/hb-ot-color-colr-table.hh
+++ b/src/hb-ot-color-colr-table.hh
@@ -48,8 +48,8 @@ struct LayerRecord
}
protected:
- GlyphID gID; /* Glyph ID of layer glyph */
- HBUINT16 paletteIndex; /* Index value to use with a selected color palette */
+ GlyphID glyphid; /* Glyph ID of layer glyph */
+ HBUINT16 colorIdx; /* Index value to use with a selected color palette */
public:
DEFINE_SIZE_STATIC (4);
};
@@ -65,9 +65,9 @@ struct BaseGlyphRecord
}
protected:
- GlyphID gID; /* Glyph ID of reference glyph */
- HBUINT16 firstLayerIndex; /* Index to the layer record */
- HBUINT16 numLayers; /* Number of color layers associated with this glyph */
+ GlyphID glyphid; /* Glyph ID of reference glyph */
+ HBUINT16 firstLayerIdx; /* Index to the layer record */
+ HBUINT16 numLayers; /* Number of color layers associated with this glyph */
public:
DEFINE_SIZE_STATIC (6);
};
@@ -86,29 +86,30 @@ struct COLR
const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this);
for (unsigned int i = 0; i < numBaseGlyphRecords; ++i)
- if (base_glyph_records[i].firstLayerIndex +
+ if (base_glyph_records[i].firstLayerIdx +
base_glyph_records[i].numLayers > numLayerRecords)
return_trace (false);
return_trace (true);
}
- inline bool get_base_glyph_record (
- hb_codepoint_t glyph_id, unsigned int &first_layer, unsigned int &num_layers) const
+ inline bool get_base_glyph_record (hb_codepoint_t glyph_id,
+ unsigned int &first_layer,
+ unsigned int &num_layers) const
{
const BaseGlyphRecord* base_glyph_records = &baseGlyphRecordsZ (this);
unsigned int min = 0, max = numBaseGlyphRecords - 1;
while (min <= max)
{
unsigned int mid = (min + max) / 2;
- hb_codepoint_t gID = base_glyph_records[mid].gID;
- if (gID > glyph_id)
+ hb_codepoint_t glyphid = base_glyph_records[mid].glyphid;
+ if (glyphid > glyph_id)
max = mid - 1;
- else if (gID < glyph_id)
+ else if (glyphid < glyph_id)
min = mid + 1;
else
{
- first_layer = base_glyph_records[mid].firstLayerIndex;
+ first_layer = base_glyph_records[mid].firstLayerIdx;
num_layers = base_glyph_records[mid].numLayers;
return true;
}
@@ -117,11 +118,12 @@ struct COLR
}
inline void get_layer_record (int layer,
- hb_codepoint_t &glyph_id, unsigned int &palette_index) const
+ hb_codepoint_t &glyph_id,
+ unsigned int &palette_index) const
{
const LayerRecord* records = &layerRecordsOffsetZ (this);
- glyph_id = records[layer].gID;
- palette_index = records[layer].paletteIndex;
+ glyph_id = records[layer].glyphid;
+ palette_index = records[layer].colorIdx;
}
protected:
commit 9e337341d54c4ee12eec58e025a6831bb976d61f
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 15:52:53 2018 +0100
[color/cbdt] Clean up
diff --git a/src/hb-ot-color-cbdt-table.hh b/src/hb-ot-color-cbdt-table.hh
index e7ab917e..b4971bda 100644
--- a/src/hb-ot-color-cbdt-table.hh
+++ b/src/hb-ot-color-cbdt-table.hh
@@ -47,21 +47,21 @@ struct SmallGlyphMetrics
extents->height = -height;
}
- HBUINT8 height;
- HBUINT8 width;
- HBINT8 bearingX;
- HBINT8 bearingY;
- HBUINT8 advance;
-
+ HBUINT8 height;
+ HBUINT8 width;
+ HBINT8 bearingX;
+ HBINT8 bearingY;
+ HBUINT8 advance;
+ public:
DEFINE_SIZE_STATIC(5);
};
struct BigGlyphMetrics : SmallGlyphMetrics
{
- HBINT8 vertBearingX;
- HBINT8 vertBearingY;
- HBUINT8 vertAdvance;
-
+ HBINT8 vertBearingX;
+ HBINT8 vertBearingY;
+ HBUINT8 vertAdvance;
+ public:
DEFINE_SIZE_STATIC(8);
};
@@ -73,19 +73,19 @@ struct SBitLineMetrics
return_trace (c->check_struct (this));
}
- HBINT8 ascender;
- HBINT8 decender;
- HBUINT8 widthMax;
- HBINT8 caretSlopeNumerator;
- HBINT8 caretSlopeDenominator;
- HBINT8 caretOffset;
- HBINT8 minOriginSB;
- HBINT8 minAdvanceSB;
- HBINT8 maxBeforeBL;
- HBINT8 minAfterBL;
- HBINT8 padding1;
- HBINT8 padding2;
-
+ HBINT8 ascender;
+ HBINT8 decender;
+ HBUINT8 widthMax;
+ HBINT8 caretSlopeNumerator;
+ HBINT8 caretSlopeDenominator;
+ HBINT8 caretOffset;
+ HBINT8 minOriginSB;
+ HBINT8 minAdvanceSB;
+ HBINT8 maxBeforeBL;
+ HBINT8 minAfterBL;
+ HBINT8 padding1;
+ HBINT8 padding2;
+ public:
DEFINE_SIZE_STATIC(12);
};
@@ -102,10 +102,10 @@ struct IndexSubtableHeader
return_trace (c->check_struct (this));
}
- HBUINT16 indexFormat;
- HBUINT16 imageFormat;
- HBUINT32 imageDataOffset;
-
+ HBUINT16 indexFormat;
+ HBUINT16 imageFormat;
+ HBUINT32 imageDataOffset;
+ public:
DEFINE_SIZE_STATIC(8);
};
@@ -131,9 +131,9 @@ struct IndexSubtableFormat1Or3
return true;
}
- IndexSubtableHeader header;
- Offset<OffsetType> offsetArrayZ[VAR];
-
+ IndexSubtableHeader header;
+ Offset<OffsetType> offsetArrayZ[VAR];
+ public:
DEFINE_SIZE_ARRAY(8, offsetArrayZ);
};
@@ -214,10 +214,10 @@ struct IndexSubtableRecord
offset, length, format);
}
- HBUINT16 firstGlyphIndex;
- HBUINT16 lastGlyphIndex;
- LOffsetTo<IndexSubtable> offsetToSubtable;
-
+ GlyphID firstGlyphIndex;
+ GlyphID lastGlyphIndex;
+ LOffsetTo<IndexSubtable> offsetToSubtable;
+ public:
DEFINE_SIZE_STATIC(8);
};
@@ -249,8 +249,7 @@ struct IndexSubtableArray
}
protected:
- IndexSubtableRecord indexSubtablesZ[VAR];
-
+ IndexSubtableRecord indexSubtablesZ[VAR];
public:
DEFINE_SIZE_ARRAY(0, indexSubtablesZ);
};
@@ -275,19 +274,19 @@ struct BitmapSizeTable
}
protected:
- LOffsetTo<IndexSubtableArray> indexSubtableArrayOffset;
- HBUINT32 indexTablesSize;
- HBUINT32 numberOfIndexSubtables;
- HBUINT32 colorRef;
- SBitLineMetrics horizontal;
- SBitLineMetrics vertical;
- HBUINT16 startGlyphIndex;
- HBUINT16 endGlyphIndex;
- HBUINT8 ppemX;
- HBUINT8 ppemY;
- HBUINT8 bitDepth;
- HBINT8 flags;
-
+ LOffsetTo<IndexSubtableArray>
+ indexSubtableArrayOffset;
+ HBUINT32 indexTablesSize;
+ HBUINT32 numberOfIndexSubtables;
+ HBUINT32 colorRef;
+ SBitLineMetrics horizontal;
+ SBitLineMetrics vertical;
+ GlyphID startGlyphIndex;
+ GlyphID endGlyphIndex;
+ HBUINT8 ppemX;
+ HBUINT8 ppemY;
+ HBUINT8 bitDepth;
+ HBINT8 flags;
public:
DEFINE_SIZE_STATIC(48);
};
@@ -299,11 +298,10 @@ struct BitmapSizeTable
struct GlyphBitmapDataFormat17
{
- SmallGlyphMetrics glyphMetrics;
- HBUINT32 dataLen;
- HBUINT8 dataZ[VAR];
-
- DEFINE_SIZE_ARRAY(9, dataZ);
+ SmallGlyphMetrics glyphMetrics;
+ ArrayOf<HBUINT8, HBUINT32> data;
+ public:
+ DEFINE_SIZE_ARRAY(9, data);
};
@@ -352,7 +350,6 @@ struct CBLC
protected:
FixedVersion<> version;
LArrayOf<BitmapSizeTable> sizeTables;
-
public:
DEFINE_SIZE_ARRAY(8, sizeTables);
};
@@ -459,9 +456,8 @@ struct CBDT
protected:
- FixedVersion<>version;
- HBUINT8 dataZ[VAR];
-
+ FixedVersion<> version;
+ HBUINT8 dataZ[VAR];
public:
DEFINE_SIZE_ARRAY(4, dataZ);
};
commit 86a0ac284fc4c2ce96354bfdf32878b6db5c77bd
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed Mar 14 15:51:33 2018 +0100
Revert "hb-private.hh: Add fallback implementation for round()"
This reverts commit b9dcbb1f8312d8606b230f75594d40b7d4087004.
This is gross. Should be only done if a specific macro is defined. Not the other way
around. This fails my build as autotools companions where not added anyway.
diff --git a/src/hb-private.hh b/src/hb-private.hh
index 62a103cf..daa496e9 100644
--- a/src/hb-private.hh
+++ b/src/hb-private.hh
@@ -1070,17 +1070,4 @@ struct hb_string_t
};
-/* fallback for round() */
-#if !defined (HAVE_ROUND) && !defined (HAVE_DECL_ROUND)
-static inline double
-round (double x)
-{
- if (x >= 0)
- return floor (x + 0.5);
- else
- return ceil (x - 0.5);
-}
-#endif
-
-
#endif /* HB_PRIVATE_HH */
commit 791d80a1d42ce0bd7c5f0a3d3d10c562a6161a82
Merge: d4907e83 22de9bf5
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Thu Mar 15 11:40:52 2018 +0330
Merge pull request #886 from madig/only-export-visible-symbols
CMake: hide symbols by default on non-MSVC, define export attribute
commit 22de9bf56d80dbf6a13a06beafd21711bdab78af
Author: Nikolaus Waxweiler <nikolaus.waxweiler at daltonmaag.com>
Date: Wed Mar 14 10:29:24 2018 +0000
Enable implicit symbol hiding for all libraries, static and shared
This covers all built libraries now and both static and shared builds.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3de85399..b9796ebf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,7 @@
cmake_minimum_required(VERSION 2.8.0)
+# Allow symbol hiding for both static and shared libs.
+cmake_policy(SET CMP0063 NEW)
+
project(harfbuzz)
enable_testing()
@@ -524,23 +527,19 @@ endif ()
## Define harfbuzz library
add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers})
+set_target_properties(harfbuzz PROPERTIES
+ C_VISIBILITY_PRESET hidden
+ CXX_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN TRUE)
target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS})
-if (BUILD_SHARED_LIBS)
- if (WIN32 AND NOT MINGW)
- add_definitions("-DHB_EXTERN=__declspec(dllexport) extern")
- else ()
- add_definitions("-DHB_EXTERN=__attribute__(( visibility( \"default\" ) )) extern")
- set_target_properties(harfbuzz PROPERTIES
- C_VISIBILITY_PRESET hidden
- CXX_VISIBILITY_PRESET hidden
- VISIBILITY_INLINES_HIDDEN TRUE)
- endif ()
-endif ()
-
## Define harfbuzz-subset library
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers})
add_dependencies(harfbuzz-subset harfbuzz)
+set_target_properties(harfbuzz-subset PROPERTIES
+ C_VISIBILITY_PRESET hidden
+ CXX_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN TRUE)
target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS})
if (UNIX OR MINGW)
@@ -568,11 +567,23 @@ if (HB_HAVE_GOBJECT)
${hb_gobject_headers}
${hb_gobject_gen_headers}
)
+ set_target_properties(harfbuzz-gobject PROPERTIES
+ C_VISIBILITY_PRESET hidden
+ CXX_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN TRUE)
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/src)
add_dependencies(harfbuzz-gobject harfbuzz)
target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS})
endif ()
+if (BUILD_SHARED_LIBS)
+ if (WIN32 AND NOT MINGW)
+ add_definitions("-DHB_EXTERN=__declspec(dllexport) extern")
+ else ()
+ add_definitions("-DHB_EXTERN=__attribute__(( visibility( \"default\" ) )) extern")
+ endif ()
+endif ()
+
# On Windows, g-ir-scanner requires a DLL build in order for it to work
if (WIN32)
if (NOT BUILD_SHARED_LIBS)
commit ce975dce7ae8950b6e7b9a2d0c00ead9d45f73ff
Author: Nikolaus Waxweiler <madigens at gmail.com>
Date: Wed Mar 14 00:50:32 2018 +0000
CMake: hide symbols by default on non-MSVC, define export attribute
This change makes sure that non-MSVC builds using CMake properly hide
non-exported functions.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 53e89740..3de85399 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -131,14 +131,6 @@ if (MSVC)
add_definitions(-wd4244 -wd4267 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS)
endif ()
-if (BUILD_SHARED_LIBS)
- if (WIN32 AND NOT MINGW)
- add_definitions("-DHB_EXTERN=__declspec(dllexport) extern")
- else ()
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden")
- endif ()
-endif ()
-
## Detect if we are running inside a distribution or regular repository folder
# if (EXISTS "${PROJECT_SOURCE_DIR}/ChangeLog")
@@ -534,6 +526,18 @@ endif ()
add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers})
target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS})
+if (BUILD_SHARED_LIBS)
+ if (WIN32 AND NOT MINGW)
+ add_definitions("-DHB_EXTERN=__declspec(dllexport) extern")
+ else ()
+ add_definitions("-DHB_EXTERN=__attribute__(( visibility( \"default\" ) )) extern")
+ set_target_properties(harfbuzz PROPERTIES
+ C_VISIBILITY_PRESET hidden
+ CXX_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN TRUE)
+ endif ()
+endif ()
+
## Define harfbuzz-subset library
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers})
add_dependencies(harfbuzz-subset harfbuzz)
More information about the HarfBuzz
mailing list