platform/upstream/libHarfBuzzSharp.git
9 years agoFix hb-uniscribe build
Behdad Esfahbod [Wed, 4 Mar 2015 20:03:39 +0000 (12:03 -0800)]
Fix hb-uniscribe build

9 years agoFix reverse_range() to only reverse alt array if positions are used
Behdad Esfahbod [Tue, 3 Mar 2015 00:06:55 +0000 (16:06 -0800)]
Fix reverse_range() to only reverse alt array if positions are used

In hb-coretext, when we were using scratch buffer for book-keeping,
a reverse_range() caused by the notdef-insertion loop could mess up
our log_clusters.  Ouch!

9 years agoBetter error message if libtool is not installed
Behdad Esfahbod [Thu, 26 Feb 2015 21:58:32 +0000 (13:58 -0800)]
Better error message if libtool is not installed

Fixes https://github.com/behdad/harfbuzz/pull/88

9 years agoClean up gtk-doc.make
Behdad Esfahbod [Thu, 26 Feb 2015 21:55:34 +0000 (13:55 -0800)]
Clean up gtk-doc.make

9 years agoInstall git.mk in docs/
Behdad Esfahbod [Thu, 26 Feb 2015 21:53:05 +0000 (13:53 -0800)]
Install git.mk in docs/

9 years agoUpdate git.mk from upstream
Behdad Esfahbod [Thu, 26 Feb 2015 21:52:50 +0000 (13:52 -0800)]
Update git.mk from upstream

9 years agoMinor refactoring
Behdad Esfahbod [Sat, 21 Feb 2015 13:51:17 +0000 (16:51 +0300)]
Minor refactoring

9 years agoMinor
Behdad Esfahbod [Sat, 21 Feb 2015 13:49:15 +0000 (16:49 +0300)]
Minor

9 years agoTypo
Behdad Esfahbod [Sat, 21 Feb 2015 13:30:28 +0000 (16:30 +0300)]
Typo

9 years agoMinor
Behdad Esfahbod [Sat, 21 Feb 2015 13:29:08 +0000 (16:29 +0300)]
Minor

9 years ago[layout] Fix comparison of GlyphID and hb_codepoint_t
Behdad Esfahbod [Sat, 21 Feb 2015 09:50:01 +0000 (12:50 +0300)]
[layout] Fix comparison of GlyphID and hb_codepoint_t

Before, the IntType::cmp functions providing this and was truncating
the hb_codepoint_t to 16bits before comparison.  I have no idea how
this was never discovered, and I'm too lazy to try to reproduce this
with Pango (which uses non-16bit codepoint numbers for missing glyphs).

9 years agoRemove unused (and wrong as of a few commits ago) cmp() function
Behdad Esfahbod [Sat, 21 Feb 2015 09:41:08 +0000 (12:41 +0300)]
Remove unused (and wrong as of a few commits ago) cmp() function

9 years agoMinor
Behdad Esfahbod [Sat, 21 Feb 2015 09:31:59 +0000 (12:31 +0300)]
Minor

9 years agoMinor
Behdad Esfahbod [Sat, 21 Feb 2015 08:45:22 +0000 (11:45 +0300)]
Minor

9 years ago[layout] If lookup has only one subtable, move the forward loop down to subtable
Behdad Esfahbod [Thu, 19 Feb 2015 14:30:05 +0000 (17:30 +0300)]
[layout] If lookup has only one subtable, move the forward loop down to subtable

I was hoping to see a nice speedup, but it resulted in a very minor one.

9 years ago[layout] Add apply_forward / apply_backward
Behdad Esfahbod [Thu, 19 Feb 2015 14:15:05 +0000 (17:15 +0300)]
[layout] Add apply_forward / apply_backward

9 years ago[layout] Remove unneeded return value from apply()
Behdad Esfahbod [Thu, 19 Feb 2015 08:33:30 +0000 (11:33 +0300)]
[layout] Remove unneeded return value from apply()

9 years agoMinor simpilfy BEInt
Behdad Esfahbod [Thu, 19 Feb 2015 14:03:02 +0000 (17:03 +0300)]
Minor simpilfy BEInt

9 years agoOptimize IntType comparison to avoid branches for 16bit numbers
Behdad Esfahbod [Thu, 19 Feb 2015 13:57:12 +0000 (16:57 +0300)]
Optimize IntType comparison to avoid branches for 16bit numbers

9 years agoMinor simplify IntType
Behdad Esfahbod [Thu, 19 Feb 2015 13:55:51 +0000 (16:55 +0300)]
Minor simplify IntType

9 years ago[layout] Minor
Behdad Esfahbod [Thu, 19 Feb 2015 07:47:18 +0000 (10:47 +0300)]
[layout] Minor

9 years ago[layout] Minor
Behdad Esfahbod [Thu, 19 Feb 2015 07:42:41 +0000 (10:42 +0300)]
[layout] Minor

9 years ago[layout] Don't check glyph props against lookup flags when recursing
Behdad Esfahbod [Thu, 19 Feb 2015 07:40:23 +0000 (10:40 +0300)]
[layout] Don't check glyph props against lookup flags when recursing

Shouldn't be needed.  I have a hard time imagining this breaking any
legitimate use case.

9 years ago[layout] Port sanitize() to use dispatch()
Behdad Esfahbod [Thu, 19 Feb 2015 07:29:41 +0000 (10:29 +0300)]
[layout] Port sanitize() to use dispatch()

Needed some rework of Extension table.  Hopefully I got it right, and
the new template usage doesn't break any compilers...

9 years agoRemove unused macro
Behdad Esfahbod [Wed, 18 Feb 2015 10:45:03 +0000 (13:45 +0300)]
Remove unused macro

9 years ago[layout] Refactor Lookup::dispatch()
Behdad Esfahbod [Wed, 18 Feb 2015 10:18:46 +0000 (13:18 +0300)]
[layout] Refactor Lookup::dispatch()

9 years ago[layout] Refactor get_subtable()
Behdad Esfahbod [Wed, 18 Feb 2015 10:09:54 +0000 (13:09 +0300)]
[layout] Refactor get_subtable()

9 years agoMinor
Behdad Esfahbod [Tue, 17 Feb 2015 16:18:07 +0000 (19:18 +0300)]
Minor

9 years ago[layout] Use dispatch() for add_coverage()
Behdad Esfahbod [Tue, 17 Feb 2015 16:15:34 +0000 (19:15 +0300)]
[layout] Use dispatch() for add_coverage()

9 years ago[layout] Add may_dispatch()
Behdad Esfahbod [Tue, 17 Feb 2015 15:14:17 +0000 (18:14 +0300)]
[layout] Add may_dispatch()

No functional change right now.

9 years agoMake sanitize() a const method
Behdad Esfahbod [Tue, 17 Feb 2015 14:27:44 +0000 (17:27 +0300)]
Make sanitize() a const method

This makes a lot of code safer.  We only try modifying the object in one
place, after making sure it's safe to do so.  So, do a const_cast<> in
that one place...

9 years agoMinor
Behdad Esfahbod [Tue, 17 Feb 2015 13:05:30 +0000 (16:05 +0300)]
Minor

9 years agoRemove unnecessary check in sanitize
Behdad Esfahbod [Tue, 17 Feb 2015 13:04:07 +0000 (16:04 +0300)]
Remove unnecessary check in sanitize

9 years ago[layout] Allocate iters in the context
Behdad Esfahbod [Thu, 29 Jan 2015 12:59:42 +0000 (13:59 +0100)]
[layout] Allocate iters in the context

Can be further optimized, but I think I didn't break anything.

Saves another 3% off Roboto shaping.

9 years ago[layout] Move skippy_iter setup from constructor into init()
Behdad Esfahbod [Thu, 29 Jan 2015 12:48:48 +0000 (13:48 +0100)]
[layout] Move skippy_iter setup from constructor into init()

9 years ago[lookup] Add skippy_iter.reset()
Behdad Esfahbod [Thu, 29 Jan 2015 12:40:39 +0000 (13:40 +0100)]
[lookup] Add skippy_iter.reset()

Towards reducing the cost of initializing skippy_iter()

9 years ago[layout] Shuffle code around
Behdad Esfahbod [Thu, 29 Jan 2015 12:32:05 +0000 (13:32 +0100)]
[layout] Shuffle code around

9 years ago[layout] Merge forward and backward iterators
Behdad Esfahbod [Thu, 29 Jan 2015 12:08:41 +0000 (13:08 +0100)]
[layout] Merge forward and backward iterators

9 years ago[layout] Fix backward reject()
Behdad Esfahbod [Thu, 29 Jan 2015 12:05:25 +0000 (13:05 +0100)]
[layout] Fix backward reject()

Has no functional effect since reject was never used with
match_glyph_data.

9 years ago[layout] Remove some unnecessary checks in skippy
Behdad Esfahbod [Thu, 29 Jan 2015 10:38:01 +0000 (11:38 +0100)]
[layout] Remove some unnecessary checks in skippy

9 years ago[lookup] Don't initialize skippy if coverage match fails
Behdad Esfahbod [Thu, 29 Jan 2015 10:08:43 +0000 (11:08 +0100)]
[lookup] Don't initialize skippy if coverage match fails

Currently:

  - Initializing skippy is very expensive,

  - Our lookup accelerator (using set-digests) can be very ineffecite,

As such, we end up many times initializing skippy but then failing
coverage check.  Reordering fixes that.

When, later, we fix our accelerator to have truly small false-positive
rate (for example by using the frozen-sets), then we might want to
reorder these checks such that we wouldn't calculate coverage number
if skippy is going to fail.

This shows a 5% speedup with Roboto already.

9 years ago[layout] Use setter method to set c->lookup_props
Behdad Esfahbod [Thu, 29 Jan 2015 07:01:12 +0000 (23:01 -0800)]
[layout] Use setter method to set c->lookup_props

9 years ago[layout] Remove unused wrapper method
Behdad Esfahbod [Thu, 29 Jan 2015 06:53:54 +0000 (22:53 -0800)]
[layout] Remove unused wrapper method

9 years agoAdd hb_frozen_set_t
Behdad Esfahbod [Thu, 29 Jan 2015 05:46:07 +0000 (21:46 -0800)]
Add hb_frozen_set_t

I experimented with replacing use of hb_set_digest_t with this new
hb_frozen_set_t, hoping to get a huge speedup for busy lookups
(like kern lookup in Roboto), but I only got 6% speendup in Roboto
and 4% in NotoNastaliqUrduDraft :(.

9 years agoHide internals of lookup accelerators
Behdad Esfahbod [Thu, 29 Jan 2015 04:55:42 +0000 (20:55 -0800)]
Hide internals of lookup accelerators

9 years ago[util] Add convenience "make lib" target
Behdad Esfahbod [Thu, 29 Jan 2015 04:29:48 +0000 (20:29 -0800)]
[util] Add convenience "make lib" target

9 years agoMerge pull request #85 from KonstantinRitt/define_inline
Behdad Esfahbod [Wed, 25 Feb 2015 23:34:34 +0000 (15:34 -0800)]
Merge pull request #85 from KonstantinRitt/define_inline

Fix build with MSVC on CE

9 years agoFix build with MSVC on CE
Konstantin Ritt [Fri, 13 Feb 2015 20:58:51 +0000 (00:58 +0400)]
Fix build with MSVC on CE

This code is C++ only. There isn't a single C++ compiler that fails to
understand the "inline" keyword, since it's required by C++98. Any
compiler older than C++98 is likely to choke on the template usage
further down, so this isn't necessary.

Moreover, the C++ standard says you cannot define macros.
[lib.macro.names] says "Nor shall such a translation unit define macros
for names lexically identical to keywords." -- technically, it's a
promise that the Standard Library headers won't do it, the wording means
that the entire translation unit won't do it, which implies no source
can do it.

MSVC complains about it:
fatal error C1189: #error : The C++ Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.

Author: Thiago Macieira <thiago.macieira@intel.com>

9 years ago[ft] Handle negative scales with vertical writing
Behdad Esfahbod [Wed, 28 Jan 2015 20:40:40 +0000 (12:40 -0800)]
[ft] Handle negative scales with vertical writing

9 years ago[coretext] Don't generate notdef glyph for default-ignorables
Behdad Esfahbod [Wed, 28 Jan 2015 18:51:33 +0000 (10:51 -0800)]
[coretext] Don't generate notdef glyph for default-ignorables

As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326

9 years ago[coretext] Unbreak glyph positioning in presence of notdef runs
Behdad Esfahbod [Wed, 28 Jan 2015 18:43:32 +0000 (10:43 -0800)]
[coretext] Unbreak glyph positioning in presence of notdef runs

As discovered on Chrome Mac:
https://code.google.com/p/chromium/issues/detail?id=452326

This was originally broken in:

commit 5a0eed3b50629be4826e4e9428f2c3255195395d
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Mon Aug 11 23:47:16 2014 -0400

    [coretext] Implement vertical shaping

9 years agoMinor optimization
Behdad Esfahbod [Tue, 27 Jan 2015 20:26:04 +0000 (12:26 -0800)]
Minor optimization

9 years agoDo not leak hb_language_t on hb_language_item_t destruction
Konstantin Ritt [Tue, 27 Jan 2015 07:23:07 +0000 (11:23 +0400)]
Do not leak hb_language_t on hb_language_item_t destruction

9 years agoMinor improvement to HB_SHAPER_DATA_DESTROY
Konstantin Ritt [Tue, 27 Jan 2015 16:08:41 +0000 (20:08 +0400)]
Minor improvement to HB_SHAPER_DATA_DESTROY

9 years ago[API] Add hb_buffer_add_latin1()
Behdad Esfahbod [Mon, 26 Jan 2015 22:25:52 +0000 (14:25 -0800)]
[API] Add hb_buffer_add_latin1()

This is by no ways to promote non-Unicode encodings.  This is an entry
point that takes Unicode codepoints that happen to all be the first
256 characters and hence fit in 8bit strings.  This is useful eg in Chrome
where strings that can fit in 8bit are implemented that way, and this
avoids copying into UTF-8 or UTF-16.

Perhaps we should rename this to hb_buffer_add_codepoints8().  I'm also
curious if anyone would be really interested in hb_buffer_add_codepoints16().

Please discuss!

9 years agoFix hb_buffer_add_codepoints to actually NOT validate
Behdad Esfahbod [Mon, 26 Jan 2015 22:08:36 +0000 (14:08 -0800)]
Fix hb_buffer_add_codepoints to actually NOT validate

9 years agoMerge pull request #81 from KonstantinRitt/fixes/build/win8phone
Behdad Esfahbod [Sun, 25 Jan 2015 21:06:03 +0000 (13:06 -0800)]
Merge pull request #81 from KonstantinRitt/fixes/build/win8phone

winrt_buildfixes

9 years agoMove some code around
Konstantin Ritt [Sun, 25 Jan 2015 05:50:51 +0000 (09:50 +0400)]
Move some code around

Just to keep Windows specific workarounds in a single place.

9 years agoDo not define MemoryBarrier on WinCE
Konstantin Ritt [Sun, 25 Jan 2015 04:16:26 +0000 (08:16 +0400)]
Do not define MemoryBarrier on WinCE

There is a _HBMemoryBarrier() wrapper function that emulates
MemoryBarrier() behavior when it is not defined.

9 years agoFix build on WinRT
Konstantin Ritt [Sun, 25 Jan 2015 04:13:24 +0000 (08:13 +0400)]
Fix build on WinRT

There is no environment (like WinCE) and the basic version
of InitializeCriticalSection is unsupported.

https://codereview.qt-project.org/#/c/92496/

9 years ago0.9.38
Behdad Esfahbod [Fri, 23 Jan 2015 20:45:35 +0000 (12:45 -0800)]
0.9.38

9 years ago[ft] Handle negative x_scale / y_scale
Behdad Esfahbod [Fri, 23 Jan 2015 20:44:24 +0000 (12:44 -0800)]
[ft] Handle negative x_scale / y_scale

9 years ago[coretext] Fix positioning of notdef
Behdad Esfahbod [Thu, 22 Jan 2015 03:19:33 +0000 (19:19 -0800)]
[coretext] Fix positioning of notdef

9 years ago[coretext] Fix scaling
Behdad Esfahbod [Thu, 22 Jan 2015 02:50:57 +0000 (18:50 -0800)]
[coretext] Fix scaling

Before we were not accounting for possible differences in x_scale and
y_scale, as well as the signs of those.  All should be in good shape
now.

9 years ago[coretext] Use vertical advance for notdef in vertical direction
Behdad Esfahbod [Thu, 22 Jan 2015 00:42:09 +0000 (16:42 -0800)]
[coretext] Use vertical advance for notdef in vertical direction

9 years agoAdd convenience make target "make lib" in src/
Behdad Esfahbod [Thu, 22 Jan 2015 02:33:50 +0000 (18:33 -0800)]
Add convenience make target "make lib" in src/

9 years agoAdd README.python
Behdad Esfahbod [Wed, 21 Jan 2015 09:57:44 +0000 (01:57 -0800)]
Add README.python

9 years ago[bindings] Add README.python
Behdad Esfahbod [Wed, 21 Jan 2015 09:51:48 +0000 (01:51 -0800)]
[bindings] Add README.python

9 years ago[util] Add --font-size to hb-shape
Behdad Esfahbod [Tue, 20 Jan 2015 20:30:45 +0000 (12:30 -0800)]
[util] Add --font-size to hb-shape

Also makes hb-view to use 8 bits of subpixel precision and shape at
requested size, instead of always shaping at upem and scaling results.

9 years ago[util] Minor
Behdad Esfahbod [Fri, 9 Jan 2015 22:22:01 +0000 (14:22 -0800)]
[util] Minor

9 years agoWhen matching second glyph of kerning pairs, use bsearch
Behdad Esfahbod [Tue, 20 Jan 2015 01:00:31 +0000 (17:00 -0800)]
When matching second glyph of kerning pairs, use bsearch

Roboto has glyphs (like 'F') that have 200 kerning pairs.
Add a handcoded bsearch instead of previous linear search.

This doesn't show much speedup though, apparently we spend the
bulk of the time somewhere before here.

9 years ago[bindings] Minor
Behdad Esfahbod [Mon, 19 Jan 2015 22:42:11 +0000 (14:42 -0800)]
[bindings] Minor

9 years agoMerge pull request #77 from roozbehp/master
Behdad Esfahbod [Tue, 20 Jan 2015 00:15:00 +0000 (16:15 -0800)]
Merge pull request #77 from roozbehp/master

Change New Tai Lue shaping engine from SEA to default

9 years agoChange New Tai Lue shaping engine from SEA to default
Roozbeh Pournader [Sun, 18 Jan 2015 22:30:08 +0000 (14:30 -0800)]
Change New Tai Lue shaping engine from SEA to default

This is to reflect the UTC decision to change the encoding model of
New Tai Lue from logical to visual to be similar to Thai, Lao, and
Tai Viet: http://www.unicode.org/L2/L2014/14250.htm#141-C26

The visual encoding is already the current practice of encoding New
Tai Lue on the web anyway:
http://www.unicode.org/L2/L2014/14195-newtailue.txt

Fixes behdad/harfbuzz#66.

9 years ago[indic] Fix out-of-bounds access
Behdad Esfahbod [Sun, 18 Jan 2015 04:16:56 +0000 (20:16 -0800)]
[indic] Fix out-of-bounds access

9 years ago[bindings] Update sample.py
Behdad Esfahbod [Wed, 7 Jan 2015 18:51:44 +0000 (10:51 -0800)]
[bindings] Update sample.py

9 years ago[bindings] Use hb_glib_blob_create() in sample
Behdad Esfahbod [Wed, 7 Jan 2015 03:16:38 +0000 (19:16 -0800)]
[bindings] Use hb_glib_blob_create() in sample

hb_blob_create() is considered C-only API.

9 years ago[glib] Add hb_glib_blob_create() that takes GBytes
Behdad Esfahbod [Wed, 7 Jan 2015 00:58:33 +0000 (16:58 -0800)]
[glib] Add hb_glib_blob_create() that takes GBytes

9 years ago[bindings] Replace deprecated allow-none with optional and nullable
Behdad Esfahbod [Tue, 6 Jan 2015 23:43:14 +0000 (15:43 -0800)]
[bindings] Replace deprecated allow-none with optional and nullable

9 years ago[bindings] Make sample Python 2/3 compatible
Behdad Esfahbod [Tue, 6 Jan 2015 23:37:31 +0000 (15:37 -0800)]
[bindings] Make sample Python 2/3 compatible

9 years agoFix up gobject-introspection a bit
Behdad Esfahbod [Tue, 6 Jan 2015 22:05:26 +0000 (14:05 -0800)]
Fix up gobject-introspection a bit

Minimal shaping works now!

9 years agoRemove hardcoded ICU include paths.
Behdad Esfahbod [Mon, 5 Jan 2015 22:43:13 +0000 (14:43 -0800)]
Remove hardcoded ICU include paths.

ICU exports them using LOCAL_EXPORT_C_INCLUDE_DIRS.

https://android-review.googlesource.com/#/c/121311/

9 years agoMerge pull request #76 from cpeterso/cpeterso/Wunused-function
Behdad Esfahbod [Mon, 5 Jan 2015 04:32:18 +0000 (20:32 -0800)]
Merge pull request #76 from cpeterso/cpeterso/Wunused-function

Add #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings

9 years agoAdd #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings
Chris Peterson [Mon, 5 Jan 2015 03:31:10 +0000 (19:31 -0800)]
Add #ifdef HB_USE_ATEXIT to fix -Wunused-function warnings

9 years agoMerge pull request #75 from cpeterso/cpeterso/Wunused-value
Behdad Esfahbod [Sun, 4 Jan 2015 05:55:30 +0000 (21:55 -0800)]
Merge pull request #75 from cpeterso/cpeterso/Wunused-value

Fix hb_atomic_ptr_cmpexch -Wunused-value warnings

9 years agoFix hb_atomic_ptr_cmpexch -Wunused-value warnings
Chris Peterson [Sun, 4 Jan 2015 03:46:19 +0000 (19:46 -0800)]
Fix hb_atomic_ptr_cmpexch -Wunused-value warnings

9 years agoAdd missing va_end()
Behdad Esfahbod [Fri, 2 Jan 2015 22:09:23 +0000 (14:09 -0800)]
Add missing va_end()

Fixes https://github.com/behdad/harfbuzz/pull/74

9 years ago[ft] Don't set font ppem
Behdad Esfahbod [Mon, 29 Dec 2014 02:56:15 +0000 (18:56 -0800)]
[ft] Don't set font ppem

For discussion see:

  http://lists.freedesktop.org/archives/harfbuzz/2012-April/001905.html

Over time we have had added NO_HINTING all over the place in hb-ft.  Finish it off.
Not setting ppem on hb-font disables get_contour_point() calls which is good anyway.

See comments in the commit.

9 years ago[ft] Add hb_ft_face_create_referenced() and hb_ft_font_create_referenced()
Behdad Esfahbod [Mon, 29 Dec 2014 01:44:26 +0000 (17:44 -0800)]
[ft] Add hb_ft_face_create_referenced() and hb_ft_font_create_referenced()

When I originally wrote hb-ft, FreeType objects did not support reference
counting.  As such, hb_ft_face_create() and hb_ft_font_create() had a
"destroy" callback and client was responsible for making sure FT_Face is
kept around as long as the hb-font/face are alive.

However, since this was not clearly documented, some clienets didn't
correctly did that.  In particular, some clients assumed that it's safe
to destroy FT_Face and then hb_face_t.  This, indeed, used to work, until
45fd9424c723f115ca98995b8f8a25185a6fc71d, which make face destroy access
font tables.

Now, I fixed that issue in 395b35903e052aecc97d0807e4f813c64c0d2b0b since
the access was not needed, but the problem remains that not all clients
handle this correctly.  See:

  https://bugs.freedesktop.org/show_bug.cgi?id=86300

Fortunately, FT_Reference_Face() was added to FreeType in 2010, and so we
can use it now.  Originally I wanted to change hb_ft_face_create() and
hb_ft_font_create() to reference the face if destroy==NULL was passed in.
That would improve pretty much all clients, with little undesired effects.
Except that FreeType itself, when compiled with HarfBuzz support, calls
hb_ft_font_create() with destroy==NULL and saves the resulting hb-font on
the ft-face (why does it not free it immediately?).  Making hb-face
reference ft-face causes a cycling reference there.  At least, that's my
current understanding.

At any rate, a cleaner approach, even if it means all clients will need a
change, is to introduce brand new API.  Which this commit does.

Some comments added to hb-ft.h, hoping to make future clients make better
choices.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=75299

9 years agoRemove redundant check for FT_Face_GetCharVariantIndex
Behdad Esfahbod [Mon, 29 Dec 2014 01:27:39 +0000 (17:27 -0800)]
Remove redundant check for FT_Face_GetCharVariantIndex

We require FreeType >= 2.8.3.  This symbol was introduced earlier
than that.

9 years agoFix FreeType version check
Behdad Esfahbod [Mon, 29 Dec 2014 01:04:23 +0000 (17:04 -0800)]
Fix FreeType version check

9 years ago[ft] Open blob in READONLY mode
Behdad Esfahbod [Mon, 29 Dec 2014 00:20:31 +0000 (16:20 -0800)]
[ft] Open blob in READONLY mode

HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE is deprecated and fairly
useless now.

9 years agoAvoid accessing layout tables at face destruction
Behdad Esfahbod [Mon, 29 Dec 2014 00:03:26 +0000 (16:03 -0800)]
Avoid accessing layout tables at face destruction

"Fixes" https://bugs.freedesktop.org/show_bug.cgi?id=86300

Based on discussion someone else who had a similar issue, most probably
the user is releasing FT_Face before destructing hb_face_t / hb_font_t.
While that's a client bug, and while we can (and should) use FreeType
refcounting to help avoid that, it happens that we were accessing
the table when we didn't really have to.  Avoid that.

9 years agoFail blob creation if length overflows or is too large
Behdad Esfahbod [Fri, 19 Dec 2014 02:22:21 +0000 (18:22 -0800)]
Fail blob creation if length overflows or is too large

Fail if blob start plus length overflows; or if blob length
is greater than 2GB.  It takes a while for fonts to get to that
size.  In the mean time, it protects against bugs like this:

  http://www.icu-project.org/trac/ticket/11450

Also avoids some weird issues with 32bit vs 64bit systems
as we accept length as unsigned int.  As such, a length of
-1 will cause overflow on 32bit machines, but happily
accepted on a 64bit machine.  Avoid that.

9 years agoAssert that blob length doesn't overflow address.
Behdad Esfahbod [Fri, 19 Dec 2014 02:09:41 +0000 (18:09 -0800)]
Assert that blob length doesn't overflow address.

This will crash now, if blob was created with wrong length.
Check for that coming next commit.

9 years ago0.9.37
Behdad Esfahbod [Wed, 17 Dec 2014 20:09:17 +0000 (12:09 -0800)]
0.9.37

9 years ago[otlayout] Mark variables that are C arrays as opposed to OT::ArrayOf
Behdad Esfahbod [Sat, 13 Dec 2014 05:07:53 +0000 (21:07 -0800)]
[otlayout] Mark variables that are C arrays as opposed to OT::ArrayOf

9 years ago[otlayout] Avoid invalid access with Context format 3
Behdad Esfahbod [Sat, 13 Dec 2014 04:54:28 +0000 (20:54 -0800)]
[otlayout] Avoid invalid access with Context format 3

9 years ago[ot] Debug get_coverage
Behdad Esfahbod [Sat, 13 Dec 2014 04:43:18 +0000 (20:43 -0800)]
[ot] Debug get_coverage

9 years ago[ot] Print format in dispatch trace
Behdad Esfahbod [Sat, 13 Dec 2014 04:36:49 +0000 (20:36 -0800)]
[ot] Print format in dispatch trace