[HarfBuzz] harfbuzz: Branch 'master' - 10 commits
Behdad Esfahbod
behdad at kemper.freedesktop.org
Tue Aug 28 16:17:12 PDT 2012
src/Makefile.am | 6 +-
src/check-libstdc++.sh | 2
src/check-static-inits.sh | 4 -
src/hb-atomic-private.hh | 25 ++++++---
src/hb-font.cc | 12 ++--
src/hb-icu-le/FontTableCache.h | 6 +-
src/hb-icu-le/PortableFontInstance.cpp | 39 --------------
src/hb-icu-le/PortableFontInstance.h | 15 +++--
src/hb-icu-le/cmaps.cpp | 2
src/hb-icu-le/cmaps.h | 5 +
src/hb-icu-le/letest.h | 14 +++++
src/hb-icu-le/sfnt.h | 6 +-
src/hb-open-file-private.hh | 4 +
src/hb-open-type-private.hh | 9 +--
src/hb-ot-head-table.hh | 4 +
src/hb-ot-hhea-table.hh | 5 +
src/hb-ot-hmtx-table.hh | 6 ++
src/hb-ot-layout-common-private.hh | 5 +
src/hb-ot-layout-gdef-table.hh | 4 +
src/hb-ot-layout-gpos-table.hh | 4 +
src/hb-ot-layout-gsub-table.hh | 4 +
src/hb-ot-layout-gsubgpos-private.hh | 4 +
src/hb-ot-layout-private.hh | 12 +++-
src/hb-ot-layout.cc | 91 ++++++++++++++++-----------------
src/hb-ot-maxp-table.hh | 4 +
src/hb-ot-name-table.hh | 4 +
src/hb-ot-shape-fallback.cc | 7 +-
src/hb-uniscribe.cc | 8 +-
src/main.cc | 2
29 files changed, 184 insertions(+), 129 deletions(-)
New commits:
commit 2eef71737ea29ffadbb5a2be4a898b44f53f66ac
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Tue Aug 28 19:16:38 2012 -0400
[hb-icu-le] Add visbility
diff --git a/src/hb-icu-le/FontTableCache.h b/src/hb-icu-le/FontTableCache.h
index d41d7c7..f956f88 100644
--- a/src/hb-icu-le/FontTableCache.h
+++ b/src/hb-icu-le/FontTableCache.h
@@ -13,6 +13,9 @@
#include <hb-blob.h>
#include "layout/LETypes.h"
+#include "letest.h"
+
+HB_BEGIN_VISIBILITY
U_NAMESPACE_USE
@@ -40,5 +43,6 @@ private:
le_int32 fTableCacheSize;
};
-#endif
+HB_END_VISIBILITY
+#endif
diff --git a/src/hb-icu-le/PortableFontInstance.cpp b/src/hb-icu-le/PortableFontInstance.cpp
index f4eb171..c38e2b1 100644
--- a/src/hb-icu-le/PortableFontInstance.cpp
+++ b/src/hb-icu-le/PortableFontInstance.cpp
@@ -24,45 +24,6 @@
#include <string.h>
-//
-// Finds the high bit by binary searching
-// through the bits in n.
-//
-le_int8 PortableFontInstance::highBit(le_int32 value)
-{
- if (value <= 0) {
- return -32;
- }
-
- le_uint8 bit = 0;
-
- if (value >= 1 << 16) {
- value >>= 16;
- bit += 16;
- }
-
- if (value >= 1 << 8) {
- value >>= 8;
- bit += 8;
- }
-
- if (value >= 1 << 4) {
- value >>= 4;
- bit += 4;
- }
-
- if (value >= 1 << 2) {
- value >>= 2;
- bit += 2;
- }
-
- if (value >= 1 << 1) {
- value >>= 1;
- bit += 1;
- }
-
- return bit;
-}
PortableFontInstance::PortableFontInstance(hb_face_t *face, float xScale, float yScale, LEErrorCode &status)
: fFace(face), fXScale(xScale), fYScale(yScale), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
diff --git a/src/hb-icu-le/PortableFontInstance.h b/src/hb-icu-le/PortableFontInstance.h
index 4bfeb36..ff48311 100644
--- a/src/hb-icu-le/PortableFontInstance.h
+++ b/src/hb-icu-le/PortableFontInstance.h
@@ -21,11 +21,14 @@
#include "layout/LETypes.h"
#include "layout/LEFontInstance.h"
+#include "letest.h"
#include "FontTableCache.h"
#include "cmaps.h"
+HB_BEGIN_VISIBILITY
+
class PortableFontInstance : public LEFontInstance, protected FontTableCache
{
private:
@@ -51,8 +54,6 @@ private:
le_uint16 fNumGlyphs;
le_uint16 fNumLongHorMetrics;
- static le_int8 highBit(le_int32 value);
-
void getMetrics();
CMAPMapper *findUnicodeMapper();
@@ -109,4 +110,6 @@ public:
};
+HB_END_VISIBILITY
+
#endif
diff --git a/src/hb-icu-le/cmaps.cpp b/src/hb-icu-le/cmaps.cpp
index 87087aa..d03ee71 100644
--- a/src/hb-icu-le/cmaps.cpp
+++ b/src/hb-icu-le/cmaps.cpp
@@ -18,7 +18,7 @@
// Finds the high bit by binary searching
// through the bits in value.
//
-le_int8 highBit(le_uint32 value)
+static inline le_int8 highBit(le_uint32 value)
{
le_uint8 bit = 0;
diff --git a/src/hb-icu-le/cmaps.h b/src/hb-icu-le/cmaps.h
index fcad788..cf73f3a 100644
--- a/src/hb-icu-le/cmaps.h
+++ b/src/hb-icu-le/cmaps.h
@@ -13,6 +13,8 @@
#include "letest.h"
#include "sfnt.h"
+HB_BEGIN_VISIBILITY
+
class CMAPMapper
{
public:
@@ -80,5 +82,6 @@ inline CMAPMapper::~CMAPMapper()
{
}
-#endif
+HB_END_VISIBILITY
+#endif
diff --git a/src/hb-icu-le/letest.h b/src/hb-icu-le/letest.h
index f924ca8..ff564ba 100644
--- a/src/hb-icu-le/letest.h
+++ b/src/hb-icu-le/letest.h
@@ -14,12 +14,24 @@
#ifndef __LETEST_H
#define __LETEST_H
+
+#if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__MINGW32__)
+# define HB_BEGIN_VISIBILITY _Pragma ("GCC visibility push(hidden)")
+# define HB_END_VISIBILITY _Pragma ("GCC visibility pop")
+#else
+# define HB_BEGIN_VISIBILITY
+# define HB_END_VISIBILITY
+#endif
+
+
#include "layout/LETypes.h"
/*#include "unicode/ctest.h"*/
#include <stdlib.h>
#include <string.h>
+HB_BEGIN_VISIBILITY
+
U_NAMESPACE_USE
#define ARRAY_SIZE(array) (sizeof array / sizeof array[0])
@@ -46,4 +58,6 @@ typedef struct TestResult TestResult;
//U_CFUNC void addCTests(TestNode **root);
+HB_END_VISIBILITY
+
#endif
diff --git a/src/hb-icu-le/sfnt.h b/src/hb-icu-le/sfnt.h
index 4a8f2f3..feec0ad 100644
--- a/src/hb-icu-le/sfnt.h
+++ b/src/hb-icu-le/sfnt.h
@@ -9,6 +9,9 @@
#define __SFNT_H
#include "layout/LETypes.h"
+#include "letest.h"
+
+HB_BEGIN_VISIBILITY
U_NAMESPACE_USE
@@ -445,5 +448,6 @@ struct NAMETable
typedef struct NAMETable NAMETable;
#endif
-#endif
+HB_END_VISIBILITY
+#endif
commit d59e28e49204ed609d8a1bf3c0f21ab5fc178337
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Tue Aug 28 19:08:36 2012 -0400
Minor
diff --git a/src/Makefile.am b/src/Makefile.am
index 166ba79..d7c4560 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -252,7 +252,6 @@ dist_check_SCRIPTS = \
check-exported-symbols.sh \
check-includes.sh \
check-internal-symbols.sh \
- check-static-inits.sh \
$(NULL)
if HAVE_ICU
@@ -260,6 +259,11 @@ else
dist_check_SCRIPTS += check-libstdc++.sh
endif
+if HAVE_ICU_LE
+else
+dist_check_SCRIPTS += check-static-inits.sh
+endif
+
TESTS = $(dist_check_SCRIPTS)
TESTS_ENVIRONMENT = \
srcdir="$(srcdir)" \
diff --git a/src/check-libstdc++.sh b/src/check-libstdc++.sh
index 0521532..e7e0e29 100755
--- a/src/check-libstdc++.sh
+++ b/src/check-libstdc++.sh
@@ -27,7 +27,7 @@ for suffix in so dylib; do
fi
done
if ! $tested; then
- echo "check-internal-symbols.sh: libharfbuzz shared library not found; skipping test"
+ echo "check-libstdc++.sh: libharfbuzz shared library not found; skipping test"
exit 77
fi
diff --git a/src/check-static-inits.sh b/src/check-static-inits.sh
index 1eceb1b..bb0a7ff 100755
--- a/src/check-static-inits.sh
+++ b/src/check-static-inits.sh
@@ -28,10 +28,10 @@ for obj in $OBJS; do
fi
done
-echo "Checking that no object file has lazy static C++ constructors/destructors"
+echo "Checking that no object file has lazy static C++ constructors/destructors or other such stuff"
for obj in $OBJS; do
if objdump -t "$obj" | grep '__c'; then
- echo "Ouch, $obj has lazy static C++ constructors/destructors"
+ echo "Ouch, $obj has lazy static C++ constructors/destructors or other such stuff"
stat=1
fi
done
commit af169d2813ff8075288cd4a7811f0715e4fea3da
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Tue Aug 28 19:08:22 2012 -0400
Minor
diff --git a/src/hb-icu-le/PortableFontInstance.h b/src/hb-icu-le/PortableFontInstance.h
index a444772..4bfeb36 100644
--- a/src/hb-icu-le/PortableFontInstance.h
+++ b/src/hb-icu-le/PortableFontInstance.h
@@ -99,13 +99,13 @@ public:
virtual le_bool getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &point) const;
- float getXPixelsPerEm() const;
+ virtual float getXPixelsPerEm() const;
- float getYPixelsPerEm() const;
+ virtual float getYPixelsPerEm() const;
- float getScaleFactorX() const;
+ virtual float getScaleFactorX() const;
- float getScaleFactorY() const;
+ virtual float getScaleFactorY() const;
};
commit 52ff2681d88886e2165ced397966ba29c2073583
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Tue Aug 28 18:03:35 2012 -0400
Use VisualStudio-style atomic intrinsics on mingw32
diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh
index 0f70641..4ae5b86 100644
--- a/src/hb-atomic-private.hh
+++ b/src/hb-atomic-private.hh
@@ -42,17 +42,28 @@
#if 0
-#elif !defined(HB_NO_MT) && defined(_MSC_VER) && _MSC_VER >= 1600
+#elif !defined(HB_NO_MT) && defined(_MSC_VER) || defined(__MINGW32__)
-#include <intrin.h>
-/* On x86, _InterlockedCompareExchangePointer is a macro defined in concrt.h */
-#include <concrt.h>
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+/* mingw32 does not have MemoryBarrier.
+ * MemoryBarrier may be defined as a macro or a function.
+ * Just make a failsafe version for ourselves. */
+#ifdef MemoryBarrier
+#define HBMemoryBarrier MemoryBarrier
+#else
+static inline void HBMemoryBarrier (void) {
+ long dummy = 0;
+ InterlockedExchange (&dummy, 1);
+}
+#endif
typedef long hb_atomic_int_t;
-#define hb_atomic_int_add(AI, V) _InterlockedExchangeAdd (&(AI), (V))
+#define hb_atomic_int_add(AI, V) InterlockedExchangeAdd (&(AI), (V))
-#define hb_atomic_ptr_get(P) (MemoryBarrier (), (void *) *(P))
-#define hb_atomic_ptr_cmpexch(P,O,N) (_InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O))
+#define hb_atomic_ptr_get(P) (HBMemoryBarrier (), (void *) *(P))
+#define hb_atomic_ptr_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O))
#elif !defined(HB_NO_MT) && defined(__APPLE__)
commit 7c8e844d92aa604fc4b396343721ea90eb83adb8
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Tue Aug 28 17:57:49 2012 -0400
Use namespace for OpenType tables
Avoids USHORT, SHORT, ULONG, LONG clashes with Windows API.
diff --git a/src/hb-font.cc b/src/hb-font.cc
index 922dee3..0627032 100644
--- a/src/hb-font.cc
+++ b/src/hb-font.cc
@@ -589,10 +589,10 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void
if (tag == HB_TAG_NONE)
return hb_blob_reference (data->blob);
- const OpenTypeFontFile &ot_file = *Sanitizer<OpenTypeFontFile>::lock_instance (data->blob);
- const OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
+ const OT::OpenTypeFontFile &ot_file = *OT::Sanitizer<OT::OpenTypeFontFile>::lock_instance (data->blob);
+ const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index);
- const OpenTypeTable &table = ot_face.get_table_by_tag (tag);
+ const OT::OpenTypeTable &table = ot_face.get_table_by_tag (tag);
hb_blob_t *blob = hb_blob_create_sub_blob (data->blob, table.offset, table.length);
@@ -608,7 +608,7 @@ hb_face_create (hb_blob_t *blob,
if (unlikely (!blob || !hb_blob_get_length (blob)))
return hb_face_get_empty ();
- hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (Sanitizer<OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
+ hb_face_for_data_closure_t *closure = _hb_face_for_data_closure_create (OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (hb_blob_reference (blob)), index);
if (unlikely (!closure))
return hb_face_get_empty ();
@@ -740,8 +740,8 @@ hb_face_get_upem (hb_face_t *face)
void
hb_face_t::load_upem (void) const
{
- hb_blob_t *head_blob = Sanitizer<head>::sanitize (reference_table (HB_OT_TAG_head));
- const head *head_table = Sanitizer<head>::lock_instance (head_blob);
+ hb_blob_t *head_blob = OT::Sanitizer<OT::head>::sanitize (reference_table (HB_OT_TAG_head));
+ const OT::head *head_table = OT::Sanitizer<OT::head>::lock_instance (head_blob);
upem = head_table->get_upem ();
hb_blob_destroy (head_blob);
}
diff --git a/src/hb-open-file-private.hh b/src/hb-open-file-private.hh
index e2d4a2c..31fedfb 100644
--- a/src/hb-open-file-private.hh
+++ b/src/hb-open-file-private.hh
@@ -32,6 +32,8 @@
#include "hb-open-type-private.hh"
+namespace OT {
+
/*
*
@@ -253,5 +255,7 @@ struct OpenTypeFontFile
};
+} // namespace OT
+
#endif /* HB_OPEN_FILE_PRIVATE_HH */
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 4d8c507..4cbb855 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -34,6 +34,8 @@
#include "hb-blob.h"
+namespace OT {
+
/*
* Casts
@@ -382,11 +384,6 @@ struct IntType
DEFINE_SIZE_STATIC (sizeof (Type));
};
-/* Typedef these to avoid clash with windows.h */
-#define USHORT HB_USHORT
-#define SHORT HB_SHORT
-#define ULONG HB_ULONG
-#define LONG HB_LONG
typedef IntType<uint16_t> USHORT; /* 16-bit unsigned integer. */
typedef IntType<int16_t> SHORT; /* 16-bit signed integer. */
typedef IntType<uint32_t> ULONG; /* 32-bit unsigned integer. */
@@ -714,5 +711,7 @@ struct SortedArrayOf : ArrayOf<Type> {
};
+} // namespace OT
+
#endif /* HB_OPEN_TYPE_PRIVATE_HH */
diff --git a/src/hb-ot-head-table.hh b/src/hb-ot-head-table.hh
index bf2d245..0934168 100644
--- a/src/hb-ot-head-table.hh
+++ b/src/hb-ot-head-table.hh
@@ -32,6 +32,8 @@
#include "hb-open-type-private.hh"
+namespace OT {
+
/*
* head -- Font Header
@@ -141,5 +143,7 @@ struct head
};
+} // namespace OT
+
#endif /* HB_OT_HEAD_TABLE_HH */
diff --git a/src/hb-ot-hhea-table.hh b/src/hb-ot-hhea-table.hh
index 24f8bdc..5009e6b 100644
--- a/src/hb-ot-hhea-table.hh
+++ b/src/hb-ot-hhea-table.hh
@@ -30,6 +30,8 @@
#include "hb-open-type-private.hh"
+namespace OT {
+
/*
* hhea -- The Horizontal Header Table
@@ -89,4 +91,7 @@ struct hhea
};
+} // namespace OT
+
+
#endif /* HB_OT_HHEA_TABLE_HH */
diff --git a/src/hb-ot-hmtx-table.hh b/src/hb-ot-hmtx-table.hh
index cc7cfbb..feb6016 100644
--- a/src/hb-ot-hmtx-table.hh
+++ b/src/hb-ot-hmtx-table.hh
@@ -30,6 +30,8 @@
#include "hb-open-type-private.hh"
+namespace OT {
+
/*
* hmtx -- The Horizontal Metrics Table
@@ -83,4 +85,8 @@ struct hmtx
DEFINE_SIZE_ARRAY2 (0, longHorMetric, leftSideBearingX);
};
+
+} // namespace OT
+
+
#endif /* HB_OT_HMTX_TABLE_HH */
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index cea5b75..48c7e0c 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -34,6 +34,9 @@
#include "hb-set-private.hh"
+namespace OT {
+
+
#define NOT_COVERED ((unsigned int) -1)
#define MAX_NESTING_LEVEL 8
@@ -763,5 +766,7 @@ struct Device
};
+} // namespace OT
+
#endif /* HB_OT_LAYOUT_COMMON_PRIVATE_HH */
diff --git a/src/hb-ot-layout-gdef-table.hh b/src/hb-ot-layout-gdef-table.hh
index cebbe68..92ae1cf 100644
--- a/src/hb-ot-layout-gdef-table.hh
+++ b/src/hb-ot-layout-gdef-table.hh
@@ -34,6 +34,8 @@
#include "hb-font-private.hh"
+namespace OT {
+
/*
* Attachment List Table
@@ -421,5 +423,7 @@ struct GDEF
};
+} // namespace OT
+
#endif /* HB_OT_LAYOUT_GDEF_TABLE_HH */
diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index b99146c..93755da 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -32,6 +32,8 @@
#include "hb-ot-layout-gsubgpos-private.hh"
+namespace OT {
+
/* buffer **position** var allocations */
#define attach_lookback() var.u16[0] /* number of glyphs to go back to attach this glyph to its base */
@@ -1713,5 +1715,7 @@ static inline bool position_lookup (hb_apply_context_t *c, unsigned int lookup_i
#undef cursive_chain
+} // namespace OT
+
#endif /* HB_OT_LAYOUT_GPOS_TABLE_HH */
diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh
index 1114418..a14db14 100644
--- a/src/hb-ot-layout-gsub-table.hh
+++ b/src/hb-ot-layout-gsub-table.hh
@@ -32,6 +32,8 @@
#include "hb-ot-layout-gsubgpos-private.hh"
+namespace OT {
+
struct SingleSubstFormat1
{
@@ -1410,5 +1412,7 @@ static inline bool substitute_lookup (hb_apply_context_t *c, unsigned int lookup
}
+} // namespace OT
+
#endif /* HB_OT_LAYOUT_GSUB_TABLE_HH */
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index 7d4849f..de56402 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -34,6 +34,8 @@
#include "hb-set-private.hh"
+namespace OT {
+
#ifndef HB_DEBUG_CLOSURE
#define HB_DEBUG_CLOSURE (HB_DEBUG+0)
@@ -1682,5 +1684,7 @@ struct GSUBGPOS
};
+} // namespace OT
+
#endif /* HB_OT_LAYOUT_GSUBGPOS_PRIVATE_HH */
diff --git a/src/hb-ot-layout-private.hh b/src/hb-ot-layout-private.hh
index 3f2c3ef..70fda8e 100644
--- a/src/hb-ot-layout-private.hh
+++ b/src/hb-ot-layout-private.hh
@@ -185,15 +185,21 @@ hb_ot_layout_position_finish (hb_font_t *font,
* hb_ot_layout_t
*/
+namespace OT {
+ struct GDEF;
+ struct GSUB;
+ struct GPOS;
+}
+
struct hb_ot_layout_t
{
hb_blob_t *gdef_blob;
hb_blob_t *gsub_blob;
hb_blob_t *gpos_blob;
- const struct GDEF *gdef;
- const struct GSUB *gsub;
- const struct GPOS *gpos;
+ const struct OT::GDEF *gdef;
+ const struct OT::GSUB *gsub;
+ const struct OT::GPOS *gpos;
unsigned int gsub_lookup_count;
unsigned int gpos_lookup_count;
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index 44420ff..a319959 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -35,7 +35,6 @@
#include "hb-ot-layout-gpos-table.hh"
#include "hb-ot-maxp-table.hh"
-
#include <stdlib.h>
#include <string.h>
@@ -49,14 +48,14 @@ _hb_ot_layout_create (hb_face_t *face)
if (unlikely (!layout))
return NULL;
- layout->gdef_blob = Sanitizer<GDEF>::sanitize (face->reference_table (HB_OT_TAG_GDEF));
- layout->gdef = Sanitizer<GDEF>::lock_instance (layout->gdef_blob);
+ layout->gdef_blob = OT::Sanitizer<OT::GDEF>::sanitize (face->reference_table (HB_OT_TAG_GDEF));
+ layout->gdef = OT::Sanitizer<OT::GDEF>::lock_instance (layout->gdef_blob);
- layout->gsub_blob = Sanitizer<GSUB>::sanitize (face->reference_table (HB_OT_TAG_GSUB));
- layout->gsub = Sanitizer<GSUB>::lock_instance (layout->gsub_blob);
+ layout->gsub_blob = OT::Sanitizer<OT::GSUB>::sanitize (face->reference_table (HB_OT_TAG_GSUB));
+ layout->gsub = OT::Sanitizer<OT::GSUB>::lock_instance (layout->gsub_blob);
- layout->gpos_blob = Sanitizer<GPOS>::sanitize (face->reference_table (HB_OT_TAG_GPOS));
- layout->gpos = Sanitizer<GPOS>::lock_instance (layout->gpos_blob);
+ layout->gpos_blob = OT::Sanitizer<OT::GPOS>::sanitize (face->reference_table (HB_OT_TAG_GPOS));
+ layout->gpos = OT::Sanitizer<OT::GPOS>::lock_instance (layout->gpos_blob);
layout->gsub_lookup_count = layout->gsub->get_lookup_count ();
layout->gpos_lookup_count = layout->gpos->get_lookup_count ();
@@ -92,22 +91,22 @@ _hb_ot_layout_destroy (hb_ot_layout_t *layout)
free (layout);
}
-static inline const GDEF&
+static inline const OT::GDEF&
_get_gdef (hb_face_t *face)
{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(GDEF);
+ if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::GDEF);
return *hb_ot_layout_from_face (face)->gdef;
}
-static inline const GSUB&
+static inline const OT::GSUB&
_get_gsub (hb_face_t *face)
{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(GSUB);
+ if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::GSUB);
return *hb_ot_layout_from_face (face)->gsub;
}
-static inline const GPOS&
+static inline const OT::GPOS&
_get_gpos (hb_face_t *face)
{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(GPOS);
+ if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return OT::Null(OT::GPOS);
return *hb_ot_layout_from_face (face)->gpos;
}
@@ -149,14 +148,14 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
* GSUB/GPOS
*/
-static const GSUBGPOS&
+static const OT::GSUBGPOS&
get_gsubgpos_table (hb_face_t *face,
hb_tag_t table_tag)
{
switch (table_tag) {
case HB_OT_TAG_GSUB: return _get_gsub (face);
case HB_OT_TAG_GPOS: return _get_gpos (face);
- default: return Null(GSUBGPOS);
+ default: return OT::Null(OT::GSUBGPOS);
}
}
@@ -168,7 +167,7 @@ hb_ot_layout_table_get_script_tags (hb_face_t *face,
unsigned int *script_count /* IN/OUT */,
hb_tag_t *script_tags /* OUT */)
{
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
return g.get_script_tags (start_offset, script_count, script_tags);
}
@@ -179,8 +178,8 @@ hb_ot_layout_table_find_script (hb_face_t *face,
hb_tag_t script_tag,
unsigned int *script_index)
{
- ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
if (g.find_script_index (script_tag, script_index))
return true;
@@ -205,8 +204,8 @@ hb_ot_layout_table_choose_script (hb_face_t *face,
unsigned int *script_index,
hb_tag_t *chosen_script)
{
- ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_SCRIPT_INDEX);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
while (*script_tags)
{
@@ -254,7 +253,7 @@ hb_ot_layout_table_get_feature_tags (hb_face_t *face,
unsigned int *feature_count /* IN/OUT */,
hb_tag_t *feature_tags /* OUT */)
{
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
return g.get_feature_tags (start_offset, feature_count, feature_tags);
}
@@ -268,7 +267,7 @@ hb_ot_layout_script_get_language_tags (hb_face_t *face,
unsigned int *language_count /* IN/OUT */,
hb_tag_t *language_tags /* OUT */)
{
- const Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
+ const OT::Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
return s.get_lang_sys_tags (start_offset, language_count, language_tags);
}
@@ -280,8 +279,8 @@ hb_ot_layout_script_find_language (hb_face_t *face,
hb_tag_t language_tag,
unsigned int *language_index)
{
- ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX);
- const Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
+ ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX);
+ const OT::Script &s = get_gsubgpos_table (face, table_tag).get_script (script_index);
if (s.find_lang_sys_index (language_tag, language_index))
return true;
@@ -301,7 +300,7 @@ hb_ot_layout_language_get_required_feature_index (hb_face_t *face,
unsigned int language_index,
unsigned int *feature_index)
{
- const LangSys &l = get_gsubgpos_table (face, table_tag).get_script (script_index).get_lang_sys (language_index);
+ const OT::LangSys &l = get_gsubgpos_table (face, table_tag).get_script (script_index).get_lang_sys (language_index);
if (feature_index) *feature_index = l.get_required_feature_index ();
@@ -317,8 +316,8 @@ hb_ot_layout_language_get_feature_indexes (hb_face_t *face,
unsigned int *feature_count /* IN/OUT */,
unsigned int *feature_indexes /* OUT */)
{
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
- const LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
return l.get_feature_indexes (start_offset, feature_count, feature_indexes);
}
@@ -332,8 +331,8 @@ hb_ot_layout_language_get_feature_tags (hb_face_t *face,
unsigned int *feature_count /* IN/OUT */,
hb_tag_t *feature_tags /* OUT */)
{
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
- const LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
ASSERT_STATIC (sizeof (unsigned int) == sizeof (hb_tag_t));
unsigned int ret = l.get_feature_indexes (start_offset, feature_count, (unsigned int *) feature_tags);
@@ -356,9 +355,9 @@ hb_ot_layout_language_find_feature (hb_face_t *face,
hb_tag_t feature_tag,
unsigned int *feature_index)
{
- ASSERT_STATIC (Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_FEATURE_INDEX);
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
- const LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
+ ASSERT_STATIC (OT::Index::NOT_FOUND_INDEX == HB_OT_LAYOUT_NO_FEATURE_INDEX);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ const OT::LangSys &l = g.get_script (script_index).get_lang_sys (language_index);
unsigned int num_features = l.get_feature_count ();
for (unsigned int i = 0; i < num_features; i++) {
@@ -382,21 +381,21 @@ hb_ot_layout_feature_get_lookup_indexes (hb_face_t *face,
unsigned int *lookup_count /* IN/OUT */,
unsigned int *lookup_indexes /* OUT */)
{
- const GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
- const Feature &f = g.get_feature (feature_index);
+ const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
+ const OT::Feature &f = g.get_feature (feature_index);
return f.get_lookup_indexes (start_offset, lookup_count, lookup_indexes);
}
/*
- * GSUB
+ * OT::GSUB
*/
hb_bool_t
hb_ot_layout_has_substitution (hb_face_t *face)
{
- return &_get_gsub (face) != &Null(GSUB);
+ return &_get_gsub (face) != &OT::Null(OT::GSUB);
}
hb_bool_t
@@ -418,14 +417,14 @@ hb_ot_layout_would_substitute_lookup_fast (hb_face_t *face,
hb_bool_t zero_context)
{
if (unlikely (lookup_index >= hb_ot_layout_from_face (face)->gsub_lookup_count)) return false;
- hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context, &hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
+ OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, zero_context, &hb_ot_layout_from_face (face)->gsub_digests[lookup_index]);
return hb_ot_layout_from_face (face)->gsub->would_substitute_lookup (&c, lookup_index);
}
void
hb_ot_layout_substitute_start (hb_font_t *font, hb_buffer_t *buffer)
{
- GSUB::substitute_start (font, buffer);
+ OT::GSUB::substitute_start (font, buffer);
}
hb_bool_t
@@ -435,14 +434,14 @@ hb_ot_layout_substitute_lookup (hb_font_t *font,
hb_mask_t mask)
{
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gsub_lookup_count)) return false;
- hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gsub_digests[lookup_index]);
+ OT::hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gsub_digests[lookup_index]);
return hb_ot_layout_from_face (font->face)->gsub->substitute_lookup (&c, lookup_index);
}
void
hb_ot_layout_substitute_finish (hb_font_t *font, hb_buffer_t *buffer)
{
- GSUB::substitute_finish (font, buffer);
+ OT::GSUB::substitute_finish (font, buffer);
}
void
@@ -450,24 +449,24 @@ hb_ot_layout_substitute_closure_lookup (hb_face_t *face,
unsigned int lookup_index,
hb_set_t *glyphs)
{
- hb_closure_context_t c (face, glyphs);
+ OT::hb_closure_context_t c (face, glyphs);
_get_gsub (face).closure_lookup (&c, lookup_index);
}
/*
- * GPOS
+ * OT::GPOS
*/
hb_bool_t
hb_ot_layout_has_positioning (hb_face_t *face)
{
- return &_get_gpos (face) != &Null(GPOS);
+ return &_get_gpos (face) != &OT::Null(OT::GPOS);
}
void
hb_ot_layout_position_start (hb_font_t *font, hb_buffer_t *buffer)
{
- GPOS::position_start (font, buffer);
+ OT::GPOS::position_start (font, buffer);
}
hb_bool_t
@@ -477,12 +476,12 @@ hb_ot_layout_position_lookup (hb_font_t *font,
hb_mask_t mask)
{
if (unlikely (lookup_index >= hb_ot_layout_from_face (font->face)->gpos_lookup_count)) return false;
- hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gpos_digests[lookup_index]);
+ OT::hb_apply_context_t c (font, buffer, mask, &hb_ot_layout_from_face (font->face)->gpos_digests[lookup_index]);
return hb_ot_layout_from_face (font->face)->gpos->position_lookup (&c, lookup_index);
}
void
hb_ot_layout_position_finish (hb_font_t *font, hb_buffer_t *buffer, hb_bool_t zero_width_attached_marks)
{
- GPOS::position_finish (font, buffer, zero_width_attached_marks);
+ OT::GPOS::position_finish (font, buffer, zero_width_attached_marks);
}
diff --git a/src/hb-ot-maxp-table.hh b/src/hb-ot-maxp-table.hh
index c2c90d1..9e113c7 100644
--- a/src/hb-ot-maxp-table.hh
+++ b/src/hb-ot-maxp-table.hh
@@ -30,6 +30,8 @@
#include "hb-open-type-private.hh"
+namespace OT {
+
/*
* maxp -- The Maximum Profile Table
@@ -61,5 +63,7 @@ struct maxp
};
+} // namespace OT
+
#endif /* HB_OT_MAXP_TABLE_HH */
diff --git a/src/hb-ot-name-table.hh b/src/hb-ot-name-table.hh
index e0d2e89..6cc7a5e 100644
--- a/src/hb-ot-name-table.hh
+++ b/src/hb-ot-name-table.hh
@@ -30,6 +30,8 @@
#include "hb-open-type-private.hh"
+namespace OT {
+
/*
* name -- The Naming Table
@@ -124,5 +126,7 @@ struct name
};
+} // namespace OT
+
#endif /* HB_OT_NAME_TABLE_HH */
diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index d732b57..18b88b2 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -33,8 +33,6 @@
#include <windows.h>
#include <usp10.h>
-typedef ULONG WIN_ULONG;
-
#include "hb-uniscribe.h"
#include "hb-ot-name-table.hh"
@@ -121,8 +119,8 @@ populate_log_font (LOGFONTW *lf,
lf->lfHeight = -font->y_scale;
lf->lfCharSet = DEFAULT_CHARSET;
- hb_blob_t *blob = Sanitizer<name>::sanitize (hb_face_reference_table (font->face, HB_TAG ('n','a','m','e')));
- const name *name_table = Sanitizer<name>::lock_instance (blob);
+ hb_blob_t *blob = OT::Sanitizer<OT::name>::sanitize (hb_face_reference_table (font->face, HB_TAG ('n','a','m','e')));
+ const OT::name *name_table = OT::Sanitizer<OT::name>::lock_instance (blob);
unsigned int len = name_table->get_name (3, 1, 0x409, 4,
lf->lfFaceName,
sizeof (lf->lfFaceName[0]) * LF_FACESIZE)
@@ -305,7 +303,7 @@ retry:
SCRIPT_ITEM items[MAX_ITEMS + 1];
SCRIPT_CONTROL bidi_control = {0};
SCRIPT_STATE bidi_state = {0};
- WIN_ULONG script_tags[MAX_ITEMS];
+ ULONG script_tags[MAX_ITEMS];
int item_count;
/* MinGW32 doesn't define fMergeNeutralItems, so we bruteforce */
diff --git a/src/main.cc b/src/main.cc
index 07d3d69..b362744 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -36,6 +36,8 @@
#include <stdio.h>
+using namespace OT;
+
int
main (int argc, char **argv)
commit dc5df5af6b349c3d9e4ab876864d9dec8096401f
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Tue Aug 28 16:31:23 2012 -0400
Revert "Minor"
This reverts commit 3e0a03978b91994bb7fa7922593cbdfc50878dfc.
I know remember why that line is there :).
diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc
index c1ba9b6..857bf55 100644
--- a/src/hb-ot-shape-complex-arabic.cc
+++ b/src/hb-ot-shape-complex-arabic.cc
@@ -90,6 +90,7 @@ static hb_codepoint_t get_arabic_shape (hb_codepoint_t u, unsigned int shape)
static uint16_t get_ligature (hb_codepoint_t first, hb_codepoint_t second)
{
+ if (unlikely (!second)) return 0;
for (unsigned i = 0; i < ARRAY_LENGTH (ligature_table); i++)
if (ligature_table[i].first == first)
for (unsigned j = 0; j < ARRAY_LENGTH (ligature_table[i].ligatures); j++)
commit 3e0a03978b91994bb7fa7922593cbdfc50878dfc
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Aug 27 17:10:02 2012 -0400
Minor
diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc
index 857bf55..c1ba9b6 100644
--- a/src/hb-ot-shape-complex-arabic.cc
+++ b/src/hb-ot-shape-complex-arabic.cc
@@ -90,7 +90,6 @@ static hb_codepoint_t get_arabic_shape (hb_codepoint_t u, unsigned int shape)
static uint16_t get_ligature (hb_codepoint_t first, hb_codepoint_t second)
{
- if (unlikely (!second)) return 0;
for (unsigned i = 0; i < ARRAY_LENGTH (ligature_table); i++)
if (ligature_table[i].first == first)
for (unsigned j = 0; j < ARRAY_LENGTH (ligature_table[i].ligatures); j++)
commit 667218a5b134728863a318c73070f4e323590bbd
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Aug 27 17:00:44 2012 -0400
Minor
diff --git a/src/hb-ot-shape-fallback.cc b/src/hb-ot-shape-fallback.cc
index b0dcc75..aa6239c 100644
--- a/src/hb-ot-shape-fallback.cc
+++ b/src/hb-ot-shape-fallback.cc
@@ -263,15 +263,13 @@ position_around_base (const hb_ot_shape_plan_t *plan,
if (this_combining_class != last_combining_class)
cluster_extents = base_extents;
- position_mark (plan, font, buffer, base_extents, i, this_combining_class);
+ position_mark (plan, font, buffer, cluster_extents, i, this_combining_class);
buffer->pos[i].x_advance = 0;
buffer->pos[i].y_advance = 0;
buffer->pos[i].x_offset += x_offset;
buffer->pos[i].y_offset += y_offset;
- /* combine cluster extents. */
-
last_combining_class = this_combining_class;
} else {
if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
commit 30dd62251fcd04c2cbaa9b979d47ddbf62c6d460
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Aug 27 16:54:34 2012 -0400
Only fallback-position glyphs if we have the ccc
Previously, ccc=0 Thai / Lao marks were being
mispositioned. Don't touch them.
diff --git a/src/hb-ot-shape-fallback.cc b/src/hb-ot-shape-fallback.cc
index f1ea61a..b0dcc75 100644
--- a/src/hb-ot-shape-fallback.cc
+++ b/src/hb-ot-shape-fallback.cc
@@ -257,7 +257,7 @@ position_around_base (const hb_ot_shape_plan_t *plan,
unsigned int last_combining_class = 255;
hb_glyph_extents_t cluster_extents;
for (unsigned int i = base + 1; i < end; i++)
- if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
+ if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]))
{
unsigned int this_combining_class = recategorize_combining_class (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]));
if (this_combining_class != last_combining_class)
commit e1ba62811a61afb046d349e578cd141363c7fb34
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Aug 27 16:28:05 2012 -0400
Center unknown marks horizontally
diff --git a/src/hb-ot-shape-fallback.cc b/src/hb-ot-shape-fallback.cc
index 56a3e7a..f1ea61a 100644
--- a/src/hb-ot-shape-fallback.cc
+++ b/src/hb-ot-shape-fallback.cc
@@ -171,6 +171,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
}
/* Fall through */
+ default:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE:
case HB_UNICODE_COMBINING_CLASS_BELOW:
More information about the HarfBuzz
mailing list