commit 9e401f6890f2bea1d11914bca436c2230f8d0f1b
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Fri Mar 20 16:08:38 2015 -0400

    Fix reverse_range() for empty range

    Fixes coretext notdef loop consisting of all default_ignorable glyphs

    https://code.google.com/p/chromium/issues/detail?id=464755

 src/hb-buffer.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 7481bd49d56d4e814ab1f85fc2df8bf934d520f4
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Mar 4 15:47:25 2015 -0800

    Fix previous commit

    I misunderstood how which works.

 autogen.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 6763e21afb77b250ad4416ff921d46c63ea12443
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Mar 4 15:43:05 2015 -0800

    Accept glibtoolize as libtoolize

    Of course, we don't really run it, autoreconf does.  We just
    err if neither is available.  glibtoolize is the name it is
    shipped under on OS X.  Reported by Adam.

 autogen.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 02a04e6afb1a76894f3723a467716607970d95d3
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Mar 4 12:32:03 2015 -0800

    0.9.39

 NEWS         | 10 ++++++++++
 configure.ac |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

commit 98e3ea8e34c798ce003e946c9a150bb41be9d09b
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Mar 4 12:03:39 2015 -0800

    Fix hb-uniscribe build

 src/hb-ot-name-table.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 8ac345e5c0ed0aad6547592ea0839aabfb4ba980
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Mon Mar 2 16:06:55 2015 -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!

 src/hb-buffer.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 1e03d7ac83f3e17aafed1e37390d9ff8394e36da
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 26 13:58:32 2015 -0800

    Better error message if libtool is not installed

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

 autogen.sh | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

commit 6c918e2997fb82e89485f2b50bee2bf4fcd70592
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 26 13:55:34 2015 -0800

    Clean up gtk-doc.make

 Makefile.am | 1 +
 1 file changed, 1 insertion(+)

commit 5ec5875acb12cf07447c9ebfb03212601368dfc4
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 26 13:53:05 2015 -0800

    Install git.mk in docs/

 docs/Makefile.am | 2 ++
 1 file changed, 2 insertions(+)

commit d146678d103425b3da7ef393bc6d66f6ba4c5593
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 26 13:52:50 2015 -0800

    Update git.mk from upstream

 git.mk | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)

commit 5f541f8f7be82f29b77b481827deb212e12d53e4
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 16:51:17 2015 +0300

    Minor refactoring

 src/hb-private.hh | 44 ++++++++++++++++++++++++++++----------------
 1 file changed, 28 insertions(+), 16 deletions(-)

commit ef79bdf73bbfde1bfaa222834809d105ab7755b3
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 16:49:15 2015 +0300

    Minor

 src/hb-ot-layout-common-private.hh | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 68e04afbb1e1073c47474f7a4d6d2cacf7057f6f
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 16:30:28 2015 +0300

    Typo

 src/hb-private.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 55553699b38d6481fbfacd0a32fc266e55553b34
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 16:29:08 2015 +0300

    Minor

 src/hb-private.hh | 2 --
 1 file changed, 2 deletions(-)

commit 5175300fbaf4ff19b7d38c14c86331bb614b0390
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 12:50:01 2015 +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).

 src/hb-open-type-private.hh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit 7cce809cb11e0ce65dbdab899779ece3dc337763
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 12:41:08 2015 +0300

    Remove unused (and wrong as of a few commits ago) cmp() function

 src/hb-open-type-private.hh | 1 -
 1 file changed, 1 deletion(-)

commit 8e3d4bae033bdec649676da26cfc3eb7610832a8
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 12:31:59 2015 +0300

    Minor

 src/hb-ot-layout-common-private.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit f47cf1f12dd1fa3cd3aa84502139caca9d469af8
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Feb 21 11:45:22 2015 +0300

    Minor

 src/hb-ot-layout.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 640b66c6348653bfd7cf88ea9caa2133c0eb949f
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 17:30:05 2015 +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.

 src/hb-ot-layout.cc | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

commit e2f50f2a7ebf9882ea89dc3f0c740e7fce964e37
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 17:15:05 2015 +0300

    [layout] Add apply_forward / apply_backward

 src/hb-ot-layout.cc | 69
 +++++++++++++++++++++++++++++++++++------------------
 1 file changed, 46 insertions(+), 23 deletions(-)

commit 1d4a328472f094c0d75a062f6e176c6b1875cfdc
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 11:33:30 2015 +0300

    [layout] Remove unneeded return value from apply()

 src/hb-ot-layout.cc | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

commit bbdd6fd21cc2e079defff7cb17c3eb8eff3f9e09
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 17:03:02 2015 +0300

    Minor simpilfy BEInt

 src/hb-open-type-private.hh | 25 ++-----------------------
 1 file changed, 2 insertions(+), 23 deletions(-)

commit 88a399acdc0fcb060803da0e7db56de2866981e3
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 16:57:12 2015 +0300

    Optimize IntType comparison to avoid branches for 16bit numbers

 src/hb-open-type-private.hh | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

commit 37de2d533126245774417234e3536fcfb24f3a6b
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 16:55:51 2015 +0300

    Minor simplify IntType

 src/hb-open-type-private.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit bd047d3b7f04d551c0a26bc0ce9b9d61481e34e1
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 10:47:18 2015 +0300

    [layout] Minor

 src/hb-ot-layout-gpos-table.hh | 6 ++++++
 src/hb-ot-layout-gsub-table.hh | 6 ++++++
 src/hb-ot-layout.cc            | 4 ++--
 3 files changed, 14 insertions(+), 2 deletions(-)

commit b9d3f60520c022dc952e65a66eb138d1f7cae2e1
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 10:42:41 2015 +0300

    [layout] Minor

 src/hb-ot-layout.cc | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

commit 1a2322134a5d7bba990da28baf893b35879a5a7a
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 10:40:23 2015 +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.

 src/hb-ot-layout-gpos-table.hh | 10 +---------
 src/hb-ot-layout-gsub-table.hh | 10 +---------
 2 files changed, 2 insertions(+), 18 deletions(-)

commit 095a1257cc3cc56b044b4cd842a92f0d0f933a50
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Feb 19 10:29:41 2015 +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...

 src/hb-open-type-private.hh          |  5 ++-
 src/hb-ot-layout-gpos-table.hh       | 82
 +----------------------------------
 src/hb-ot-layout-gsub-table.hh       | 72 ++-----------------------------
 src/hb-ot-layout-gsubgpos-private.hh | 84
 ++++++++++++------------------------
 4 files changed, 37 insertions(+), 206 deletions(-)

commit 758fb20630f84c3d373cda37974b88f16c02995e
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Feb 18 13:45:03 2015 +0300

    Remove unused macro

 src/hb-ot-shape-complex-arabic-win1256.hh | 1 -
 1 file changed, 1 deletion(-)

commit 40c58923cbf689c465f9b65334c455a9b7f71ab0
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Feb 18 13:18:46 2015 +0300

    [layout] Refactor Lookup::dispatch()

 src/hb-ot-layout-common-private.hh   | 20 ++++++++++++++++++++
 src/hb-ot-layout-gpos-table.hh       | 12 +-----------
 src/hb-ot-layout-gsub-table.hh       | 12 +-----------
 src/hb-ot-layout-gsubgpos-private.hh |  6 ------
 4 files changed, 22 insertions(+), 28 deletions(-)

commit 70366f5d19df2e654f0933474fecf1aa16e27812
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Feb 18 13:09:54 2015 +0300

    [layout] Refactor get_subtable()

 src/hb-ot-layout-common-private.hh | 12 ++++++++++++
 src/hb-ot-layout-gpos-table.hh     |  4 ++--
 src/hb-ot-layout-gsub-table.hh     |  6 +++---
 3 files changed, 17 insertions(+), 5 deletions(-)

commit f72f326aea6d1e93f63040730f7aecd401676c1c
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue Feb 17 19:18:07 2015 +0300

    Minor

 src/hb-ot-layout-gpos-table.hh | 1 -
 1 file changed, 1 deletion(-)

commit 8e36ccfd4f076888076ca176c055c18104af03b6
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue Feb 17 19:15:34 2015 +0300

    [layout] Use dispatch() for add_coverage()

 src/hb-ot-layout-gpos-table.hh       | 12 ++----------
 src/hb-ot-layout-gsub-table.hh       | 12 ++----------
 src/hb-ot-layout-gsubgpos-private.hh | 12 ++++++++++--
 3 files changed, 14 insertions(+), 22 deletions(-)

commit 50b8dc79daffc7ef671dd5eedfea47f8d5e946f4
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue Feb 17 18:14:17 2015 +0300

    [layout] Add may_dispatch()

    No functional change right now.

 src/hb-ot-layout-gpos-table.hh       |  7 +++++++
 src/hb-ot-layout-gsub-table.hh       |  6 ++++++
 src/hb-ot-layout-gsubgpos-private.hh | 12 ++++++++++++
 3 files changed, 25 insertions(+)

commit de2118ed7a998a1df9b28fd1be96b4af89ed82c3
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue Feb 17 17:27:44 2015 +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...

 src/hb-open-file-private.hh          |  15 +++--
 src/hb-open-type-private.hh          |  51 +++++++++++------
 src/hb-ot-cmap-table.hh              |  35 ++++++++----
 src/hb-ot-head-table.hh              |   6 +-
 src/hb-ot-hhea-table.hh              |   3 +-
 src/hb-ot-hmtx-table.hh              |   3 +-
 src/hb-ot-layout-common-private.hh   |  58 ++++++++++++-------
 src/hb-ot-layout-gdef-table.hh       |  30 ++++++----
 src/hb-ot-layout-gpos-table.hh       | 108
 +++++++++++++++++++++++------------
 src/hb-ot-layout-gsub-table.hh       |  58 ++++++++++++-------
 src/hb-ot-layout-gsubgpos-private.hh |  65 +++++++++++++--------
 src/hb-ot-layout-jstf-table.hh       |  12 ++--
 src/hb-ot-maxp-table.hh              |   6 +-
 src/hb-ot-name-table.hh              |   6 +-
 14 files changed, 296 insertions(+), 160 deletions(-)

commit 6759ed95a3bec2874826376b68ebff19ba277ef2
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue Feb 17 16:05:30 2015 +0300

    Minor

 src/hb-ot-layout-gpos-table.hh | 6 ++----
 src/hb-ot-layout-gsub-table.hh | 6 ++----
 2 files changed, 4 insertions(+), 8 deletions(-)

commit 6b599dac1f814a3c900300241d4c492a8f8b66d2
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue Feb 17 16:04:07 2015 +0300

    Remove unnecessary check in sanitize

 src/hb-ot-layout-gpos-table.hh | 2 --
 src/hb-ot-layout-gsub-table.hh | 2 --
 2 files changed, 4 deletions(-)

commit 365576d246949f9d587e90cf0539dc0381e4d0a3
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 13:59:42 2015 +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.

 src/hb-ot-layout-gpos-table.hh       | 18 ++++++------------
 src/hb-ot-layout-gsubgpos-private.hh | 21 +++++++++++++--------
 src/hb-ot-shape-fallback.cc          |  2 +-
 3 files changed, 20 insertions(+), 21 deletions(-)

commit 514564f5444b8ad2f210b1e3d7d66378f7275317
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 13:48:48 2015 +0100

    [layout] Move skippy_iter setup from constructor into init()

 src/hb-ot-layout-gpos-table.hh       | 18 ++++++++++++------
 src/hb-ot-layout-gsubgpos-private.hh | 28 +++++++++++++++-------------
 src/hb-ot-shape-fallback.cc          |  3 ++-
 3 files changed, 29 insertions(+), 20 deletions(-)

commit b051be542a8945ec14b0192bbc285f3e1a78c8f1
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 13:40:39 2015 +0100

    [lookup] Add skippy_iter.reset()

    Towards reducing the cost of initializing skippy_iter()

 src/hb-ot-layout-gpos-table.hh       | 18 ++++++++++++------
 src/hb-ot-layout-gsubgpos-private.hh | 27 ++++++++++++++++++---------
 src/hb-ot-shape-fallback.cc          |  3 ++-
 3 files changed, 32 insertions(+), 16 deletions(-)

commit 2cecc38c7cf49b2cf697efa7e974ceee7055f2c5
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 13:32:05 2015 +0100

    [layout] Shuffle code around

 src/hb-ot-layout-gsubgpos-private.hh | 111
 ++++++++++++++++++-----------------
 1 file changed, 56 insertions(+), 55 deletions(-)

commit 696266981df5ef6c62ad0115133dad1d6c1d9acc
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 13:08:41 2015 +0100

    [layout] Merge forward and backward iterators

 src/hb-ot-layout-gpos-table.hh       | 12 +++---
 src/hb-ot-layout-gsubgpos-private.hh | 71
 ++++++++----------------------------
 src/hb-ot-shape-fallback.cc          |  2 +-
 3 files changed, 23 insertions(+), 62 deletions(-)

commit 1f038eec3c0dd6331036f795614fe1ddcbf613b0
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 13:05:25 2015 +0100

    [layout] Fix backward reject()

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

 src/hb-ot-layout-gsubgpos-private.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 37d13acd8d414a4b53fac0152addfadecf755cd4
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 11:38:01 2015 +0100

    [layout] Remove some unnecessary checks in skippy

 src/hb-ot-layout-gpos-table.hh       | 3 ---
 src/hb-ot-layout-gsubgpos-private.hh | 9 ++-------
 2 files changed, 2 insertions(+), 10 deletions(-)

commit baa14e18148d3f5493f78b4fe9e0c835a01f50f7
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Thu Jan 29 11:08:43 2015 +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.

 src/hb-ot-layout-gpos-table.hh | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

commit 7788993bc19bf122f1e143ab64cc1da2ed1865a3
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 23:01:12 2015 -0800

    [layout] Use setter method to set c->lookup_props

 src/hb-ot-layout-gpos-table.hh | 2 +-
 src/hb-ot-layout-gsub-table.hh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit f4ee48fd7b312550faf9b0be4cd1b2f2849dd08d
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 22:53:54 2015 -0800

    [layout] Remove unused wrapper method

 src/hb-ot-layout-gsubgpos-private.hh | 2 --
 1 file changed, 2 deletions(-)

commit 7b7129c7a997def599fb4d2ba05fda40d27aed20
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 21:46:07 2015 -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 :(.

 src/hb-set-private.hh | 57
 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)

commit 241eac9559465fa79f396570af4e87f455b7e9d5
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 20:55:42 2015 -0800

    Hide internals of lookup accelerators

 src/hb-ot-layout-gsub-table.hh | 5 +++--
 src/hb-ot-layout-private.hh    | 5 +++++
 src/hb-ot-layout.cc            | 6 +++---
 3 files changed, 11 insertions(+), 5 deletions(-)

commit e2d4e8480d85436a3acad8145acac345ed593f5a
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 20:29:48 2015 -0800

    [util] Add convenience "make lib" target

 util/Makefile.am | 4 ++++
 1 file changed, 4 insertions(+)

commit faaae64bf28abdcdd15185374bc09a3809794118
Merge: 7888a6b 9768e65
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Feb 25 15:34:34 2015 -0800

    Merge pull request #85 from KonstantinRitt/define_inline

    Fix build with MSVC on CE

commit 9768e651be0561f07d6f38c3ed8bc5ee04882990
Author: Konstantin Ritt <ritt.ks@gmail.com>
Date:   Sat Feb 14 00:58:51 2015 +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>

 src/hb-private.hh | 10 ----------
 1 file changed, 10 deletions(-)

commit 7888a6b07a9922cedd3e0d235959058e0011357b
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 12:40:40 2015 -0800

    [ft] Handle negative scales with vertical writing

 src/hb-ft.cc | 8 ++++++++
 1 file changed, 8 insertions(+)

commit 982d94eaa2a377616f22f39427e5ed9f1ce43263
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 10:51:33 2015 -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

 src/hb-coretext.cc | 2 ++
 src/hb-ot-shape.cc | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

commit 6917a045fd8d16952cad75fda8b291b11e1d3564
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Wed Jan 28 10:43:32 2015 -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

 src/hb-coretext.cc | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

commit 1eff4350239b0768e1042b52db9fb1c0d266f96a
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 27 12:26:04 2015 -0800

    Minor optimization

 src/hb-ot-shape-normalize.cc | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

commit 675956aca01fc4e005a338af43d1c1f4f938abd1
Author: Konstantin Ritt <ritt.ks@gmail.com>
Date:	Tue Jan 27 11:23:07 2015 +0400

    Do not leak hb_language_t on hb_language_item_t destruction

 src/hb-common.cc | 1 +
 1 file changed, 1 insertion(+)

commit b306f9674a599da50754d24fa5aefcb6bba04420
Author: Konstantin Ritt <ritt.ks@gmail.com>
Date:	Tue Jan 27 20:08:41 2015 +0400

    Minor improvement to HB_SHAPER_DATA_DESTROY

 src/hb-shaper-private.hh | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

commit 61820bc4ca1f02433db4be7c81f27cf97e2bd519
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Mon Jan 26 14:25:52 2015 -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!

 src/hb-buffer.cc      | 36 +++++++++++++++++++++++++-------
 src/hb-buffer.h       |  8 ++++++++
 src/hb-utf-private.hh | 57
 ++++++++++++++++++++++++++++++++++++++-------------
 3 files changed, 80 insertions(+), 21 deletions(-)

commit 78c6e86c04f12154c88b9f9264d0bd50b721699b
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Mon Jan 26 14:08:36 2015 -0800

    Fix hb_buffer_add_codepoints to actually NOT validate

 src/hb-buffer.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 70c25ee215635db23eb0757641bd372940c0d85d
Merge: 28f5e0b f3537b6
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Sun Jan 25 13:06:03 2015 -0800

    Merge pull request #81 from KonstantinRitt/fixes/build/win8phone

    winrt_buildfixes

commit f3537b620b0a7392ea27f01f465c5ba79459c858
Author: Konstantin Ritt <ritt.ks@gmail.com>
Date:	Sun Jan 25 09:50:51 2015 +0400

    Move some code around

    Just to keep Windows specific workarounds in a single place.

 src/hb-private.hh | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

commit afb62d88d78cacb6b881aaf329a654fd32f5ae29
Author: Konstantin Ritt <ritt.ks@gmail.com>
Date:	Sun Jan 25 08:16:26 2015 +0400

    Do not define MemoryBarrier on WinCE

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

 src/hb-private.hh | 1 -
 1 file changed, 1 deletion(-)

commit 7db326a15b173c0d101adc608bf551a628c65dcd
Author: Konstantin Ritt <ritt.ks@gmail.com>
Date:	Sun Jan 25 08:13:24 2015 +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/

 src/hb-mutex-private.hh | 4 ++++
 src/hb-private.hh	 | 2 ++
 2 files changed, 6 insertions(+)

commit 28f5e0b2f41670617bd778660364bbd58b1b68f2
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Fri Jan 23 12:45:35 2015 -0800

    0.9.38

 NEWS	      | 23 +++++++++++++++++++++++
 configure.ac |  2 +-
 2 files changed, 24 insertions(+), 1 deletion(-)

commit a319d0777b746a2bbe5cd5a206172f1580da3379
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Fri Jan 23 12:44:24 2015 -0800

    [ft] Handle negative x_scale / y_scale

 src/hb-ft.cc | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

commit b0b38bb892473d9a65e06dd3b4713da39f92bef9
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 21 19:19:33 2015 -0800

    [coretext] Fix positioning of notdef

 src/hb-coretext.cc | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

commit 70622e5089c01ea16fd9deed11cb39d43145c121
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 21 18:50:57 2015 -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.

 src/hb-coretext.cc | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

commit 221ba02b0816584a02471037edae7cec9c1b8acc
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 21 16:42:09 2015 -0800

    [coretext] Use vertical advance for notdef in vertical direction

 src/hb-coretext.cc | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

commit 7988da24c507ee310772f72cc5bcfd3c0a1187a0
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 21 18:33:50 2015 -0800

    Add convenience make target "make lib" in src/

 src/Makefile.am | 3 +++
 1 file changed, 3 insertions(+)

commit 31d48dd919e3b4a0bec5ede384f76db9b44f4d71
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 21 01:57:44 2015 -0800

    Add README.python

 README.python | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

commit ca1c2813dd0b082a8c418bd3edd3f6cba97bd5f0
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 21 01:51:48 2015 -0800

    [bindings] Add README.python

 Makefile.am | 1 +
 1 file changed, 1 insertion(+)

commit cd4eb96abb90a84b42e9b288e39bad759e4411a0
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 20 12:30:45 2015 -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.

 util/hb-ot-shape-closure.cc |	2 +-
 util/hb-shape.cc	     |	2 +-
 util/hb-view.cc	     |	5 ++++-
 util/helper-cairo.cc	     | 16 ++++++++--------
 util/helper-cairo.hh	     |	5 ++---
 util/main-font-text.hh      |	4 ++--
 util/options.cc	     | 44
 +++++++++++++++++++++++++++++++++++++++++---
 util/options.hh	     | 16 ++++++++++++----
 util/view-cairo.cc	     |	2 +-
 util/view-cairo.hh	     |	8 ++++----
 10 files changed, 76 insertions(+), 28 deletions(-)

commit 5789ca69d7464bab5fa0c5bdf404f3afaa490faf
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Fri Jan 9 14:22:01 2015 -0800

    [util] Minor

 util/options.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 67dfa8c7c2f2e9040a9c60c680f739ada4a35fb5
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Mon Jan 19 17:00:31 2015 -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.

 src/hb-ot-layout-gpos-table.hh | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

commit e9f5c65be027eb7759ab819e267e24dff3b017b6
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Mon Jan 19 14:42:11 2015 -0800

    [bindings] Minor

 src/sample.py | 2 ++
 1 file changed, 2 insertions(+)

commit 3704628d1f124234324b5f2bdd5fdd61c14c7801
Merge: 1aaa7d6 5eb939d
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Mon Jan 19 16:15:00 2015 -0800

    Merge pull request #77 from roozbehp/master

    Change New Tai Lue shaping engine from SEA to default

commit 5eb939ddfe9ef217da2e48d7d0f1f4b7501714ad
Author: Roozbeh Pournader <roozbeh@google.com>
Date:	Sun Jan 18 14:30:08 2015 -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.

 src/hb-ot-shape-complex-private.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 1aaa7d6799b42b392dd191d3c12011721ef99e74
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Sat Jan 17 20:16:56 2015 -0800

    [indic] Fix out-of-bounds access

 src/gen-indic-table.py			|  2 +-
 src/hb-ot-shape-complex-indic-table.cc | 36
 +++++++++++++++++-----------------
 2 files changed, 19 insertions(+), 19 deletions(-)

commit 238d6a38f2ceb7d8dceec9365a823f032b3b9f7d
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Wed Jan 7 10:51:44 2015 -0800

    [bindings] Update sample.py

 src/sample.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

commit 2cd5323531dcd800549b2cb1cb51d708e72ab2d8
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 6 19:16:38 2015 -0800

    [bindings] Use hb_glib_blob_create() in sample

    hb_blob_create() is considered C-only API.

 src/hb-blob.cc |  8 ++++----
 src/sample.py	| 19 +++++++++----------
 2 files changed, 13 insertions(+), 14 deletions(-)

commit 0ef179e2dc040c13497af847b8c1cec846dbdbf9
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 6 16:58:33 2015 -0800

    [glib] Add hb_glib_blob_create() that takes GBytes

 src/hb-glib.cc | 11 +++++++++++
 src/hb-glib.h	|  3 +++
 2 files changed, 14 insertions(+)

commit b91904a40da6287f84bc79de60674fa57232ec09
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 6 15:43:14 2015 -0800

    [bindings] Replace deprecated allow-none with optional and nullable

 src/hb-blob.cc    | 4 ++--
 src/hb-shape.cc   | 2 +-
 src/hb-unicode.cc | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

commit 81a31f3eff44a85bb2160d51156a01a18f0a97df
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 6 15:37:31 2015 -0800

    [bindings] Make sample Python 2/3 compatible

 src/sample.py | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

commit b632e7997d9cb6e4782cab6d8c62e8e5edaa4cb0
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Tue Jan 6 14:05:26 2015 -0800

    Fix up gobject-introspection a bit

    Minimal shaping works now!

 src/hb-blob.cc   |  6 +++---
 src/hb-buffer.cc |  2 +-
 src/sample.py	  | 34 ++++++++++++++++++++++++++++------
 3 files changed, 32 insertions(+), 10 deletions(-)

commit 3d1a666a8629a8502a2bcf23ab943e2b39a0da92
Author: Behdad Esfahbod <behdad@behdad.org>
Date:	Mon Jan 5 14:43:13 2015 -0800

    Remove hardcoded ICU include paths.

