[HarfBuzz] harfbuzz: Branch 'master' - 2 commits
Behdad Esfahbod
behdad at kemper.freedesktop.org
Tue Oct 27 21:51:16 PDT 2009
contrib/harfbuzz-unicode.c | 27 ++++++++++++++++++++++++---
src/harfbuzz-hebrew.c | 3 ++-
2 files changed, 26 insertions(+), 4 deletions(-)
New commits:
commit b90ffbace5536786eafe23e28ec3eee74c7c4e27
Author: Adam Langley <agl at chromium.org>
Date: Tue Oct 27 16:13:20 2009 -0700
Initialize Hebrew shaper_item even when HB_SelectScript fails
diff --git a/src/harfbuzz-hebrew.c b/src/harfbuzz-hebrew.c
index 533a063..2bda386 100644
--- a/src/harfbuzz-hebrew.c
+++ b/src/harfbuzz-hebrew.c
@@ -56,6 +56,8 @@ HB_Bool HB_HebrewShape(HB_ShaperItem *shaper_item)
assert(shaper_item->item.script == HB_Script_Hebrew);
+ HB_HeuristicSetGlyphAttributes(shaper_item);
+
#ifndef NO_OPENTYPE
if (HB_SelectScript(shaper_item, hebrew_features)) {
@@ -64,7 +66,6 @@ HB_Bool HB_HebrewShape(HB_ShaperItem *shaper_item)
return FALSE;
- HB_HeuristicSetGlyphAttributes(shaper_item);
HB_OpenTypeShape(shaper_item, /*properties*/0);
return HB_OpenTypePosition(shaper_item, availableGlyphs, /*doLogClusters*/TRUE);
}
commit 620f1d90a7c7207492ff3eabf0f6185e8b78f9dc
Author: Adam Langley <agl at chromium.org>
Date: Tue Oct 27 16:08:38 2009 -0700
Implement HB_GetMirroredChar under contrib/
diff --git a/contrib/harfbuzz-unicode.c b/contrib/harfbuzz-unicode.c
index 9b3c43e..51dd4ea 100644
--- a/contrib/harfbuzz-unicode.c
+++ b/contrib/harfbuzz-unicode.c
@@ -6,8 +6,9 @@
#include <harfbuzz-shaper.h>
#include "harfbuzz-unicode.h"
-#include "tables/script-properties.h"
#include "tables/grapheme-break-properties.h"
+#include "tables/mirroring-properties.h"
+#include "tables/script-properties.h"
uint32_t
utf16_to_code_point(const uint16_t *chars, size_t len, ssize_t *iter) {
@@ -234,10 +235,30 @@ HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *gclass, HB_Line
*breakclass = HB_GetLineBreakClass(ch);
}
+static int
+mirroring_property_cmp(const void *vkey, const void *vcandidate) {
+ const uint32_t key = (uint32_t) (intptr_t) vkey;
+ const struct mirroring_property *candidate = vcandidate;
+
+ if (key < candidate->a) {
+ return -1;
+ } else if (key > candidate->a) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
HB_UChar16
HB_GetMirroredChar(HB_UChar16 ch) {
- abort();
- return 0;
+ const void *mprop = bsearch((void *) (intptr_t) ch, mirroring_properties,
+ mirroring_properties_count,
+ sizeof(struct mirroring_property),
+ mirroring_property_cmp);
+ if (!mprop)
+ return ch;
+
+ return ((const struct mirroring_property *) mprop)->b;
}
void *
More information about the HarfBuzz
mailing list