[HarfBuzz] harfbuzz: Branch 'master' - 2 commits
Lars Knoll
lars.knoll at nokia.com
Mon Dec 14 07:35:01 PST 2009
On Wednesday 28 October 2009 05:51:16 am Behdad Esfahbod wrote:
> 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
>
This commit unfortunately made it into Qt 4.6 and causes crashes in
applications.
See http://bugreports.qt.nokia.com/browse/QTBUG-6436
You can not call HB_HeuristicSetGlyphAttributes, before calling
HB_ConvertStringToGlyphIndices.
Can you please provide a test case of what this submit was meant to fix?
Lars
> 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 *
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/harfbuzz
>
More information about the HarfBuzz
mailing list