[HarfBuzz] harfbuzz-ng: Changes to 'refs/tags/0.9.1'

Behdad Esfahbod behdad at kemper.freedesktop.org
Fri Aug 10 10:51:31 PDT 2012


Tag '0.9.1' created by Behdad Esfahbod <behdad at behdad.org> at 2012-08-10 18:51 -0700

0.9.1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEABECAAYFAlAlShcACgkQn+4E5dNTERUFzQCfcPwXeu7yWVHp8Jg546rC2ZHT
sQoAoK3Y1Q8hJJ3Wy6+/YfjH8mnQzkfs
=3Z6P
-----END PGP SIGNATURE-----

Changes since the dawn of time:
Behdad Esfahbod (2332):
      Fix bug to copy glyph from in_string, not out_string.
      Remove the unused parameter from the IN_CURITEM() and IN_CURGLYPH macros.
      Replace perror with perror_. Remove FT_BEGIN_STMNT and FT_END_STMNT.
      Generate valid XML output. Dump LookupFlag too.
      Patches from #170414. Reviewed by Matthias Clasen.
      Turn various gcc warnings off. Adding const, adding static, fully
      Remove debug line that got in accidentally.
      Part of #101079:
      Reworked basic shaper with OpenType support. (#101079, based on patch from
      Protect against possible division by zeros (#316468, Steve Grubb)
      Added "Since:" tags to all interfaces added after Pango 1.0. (#319116,
      Fix typo in docs.
      Tiny doc improvement.
      Use g_slice for PangoOTBuffer allocation. (bug #325026, Matthias Clasen)
      pango/Makefile.am, pango/fonts.c, pango/glyphstring.c,
      Make sure #include <config.h> is the first include in the file. (bug
      If major.minor of required and available glib versions are the same, add
      Removed.
      Handle GSUB Lookup type 8, and ReverseChainContextualSubst table. (bug
      === Released 1.12.0 ===
      Don't err on Table_Missing.
      Convert pango/opentype to the new project called HarfBuzz.
      Define NULL.
      .
      .
      Make sure TTAG_GDEF and frineds are defined, needed for FreeType <= 2.1.7
      Update from HarfBuzz. Lars Knoll fixed all the warnings.
      Fix minor bugs reported by the Coverity scan report.
      Bug 337924 – cleanups for issues reported by various compilers Patch
      Fix loop variables. (coverity found bug.)
      Bug 336153 – Mark to mark positioning (Lookup Type 6) isn't correct when
      Bug 341138 – Using TTC font, Gtk2 programs begin to eating big memory
      Bug 345600 – cvs build error in pango/opentype/Makefile
      Bug 347073 – Allow empty GPOS table
      First version.
      Second version.  Complete redesign, based on C++ classes to ensure endian
      Remove the annoying HB_ prefix.
      After DEFINE_SCRIPT_ARRAY
      Add Makefile
      Add OpenTypeFontFile.
      Make types not instantiable
      Use CamelCaseTags.
      LangSys
      Implement Feature
      LookupFlags
      Rename to harfbuzz-ng.cc
      Coverage.
      s/DEFINE_NOT_INSTANTIABLE/DEFINE_NON_INSTANTIABLE/
      Define more structs using DEFINE_INT_TYPE.
      Rename CoverageFormat to Coverage
      ClassDef
      Device tables.
      Finished OpenType Common Table Formats
      GSUBGPOSHeader
      s/OpenTypeFont/OpenTypeFontFace/g
      Add GPOS stub
      Use union for Coverage
      Use union for ClassDef
      Oops. s/OpenTypeFontFaceFile/OpenTypeFontFile/g
      Break and rename, in the layout of old HarfBuzz codebase
      Remove stale comment
      Don't shift down the mark attachment type
      Add stub GDEF files
      Remove .cvsignore files (moved to svn:ignore prop)
      Copy fixes from harfbuzz stable branch. Includes a leak fix, a kerning
      Link freetype to harfbuzz-dump, for those systems that don't track
      Improve stupid Makefile
      [open] small fixes, including not using unions for main structs
      [gdef] Initial implementation
      Don't ignore error return value of hb_buffer_copy_output_glyph(). Patch
      Bug 463430 – Gets stuck while "formatting message"
      Bug 302952 – The placement of a diacritic marks for an arabic ligature
      Bug 485559 – Boston Summit HarfBuzz optimizations
      Bug 485621 – Get rid of freetype memory allocator in harfbuzz
      Allocate buffer->positions lazily.
      Rename buffer->inplace to buffer->separate_out with the inverted meaning,
      Minor.
      Move some code around.
      Some more cleanup.
      Don't include harfbuzz-dump.[ch] in libharfbuzz.a. Those are just used by
      Same here.
      Build harfbuzz.c instead of individual source files, to let compiler go
      Remove FTGLUE_API/APIDEF cruft.
      Mark internal symbols as HB_INTERNAL and define that to static in
      Bug 488840 – harfbuzz: protect against ligid overflow
      Add commented-out dummy struct for Extension lookups.
      New header file harfbuzz-global.h. Rename FT_* int types to HB_* types.
      Rename ftglue.c to harfbuzz-impl.c and more type renames and moving code
      More cleanup, remove redundant error types.
      Even more cleanup and more type renames.
      Fix typo.
      Some more cleanup and merging.
      And some more.
      Remove dead code.
      Minor
      Remove unused macro.
      Bug 485536 – underline_position can be zero
      Undo accidental change.
      Bug 501575 – Compile errors Patch from Jens Granseuer
      HarfBuzz was relicensed to a more generous and simpler license. Adapt. See
      Remove COPYING.GPL and COPYING.FTL that are no longer there.
      Misc cleanup
      Finish and test GDEF
      Define get_for_data() factories
      Make all code NULL-free and assert-free
      Clean up file names, add namespace
      Minor cleanup, add LIKELY and UNLIKELY annotations
      Add copyright notices.
      Initial gsub stub
      Minor renaming
      Minor
      Remove unused macro
      Starting public interface
      More public api
      Implement glyph properties
      [GDEF] Finish public API
      [GDEF] Finish internal API
      GDEF completely working now
      Rename hb_ot_layout_create() to hb_ot_layout_create_for_data()
      Rename HB_OT_Layout to hb_ot_layout_t
      Make main.cc compile again, which means finished getter API
      Add script and language public getter API
      Finish script, language, and feature public API
      Fix typo, add TODOs
      [hb-ot-layout] Add proper namespace to accessors
      Bug 540592 – Crash in HB_GSUB_Apply_String with Linux-Libertine font
      Fix left-to-right positioning. Reported by Peter Hunter.
      Bug 528272 – "Error loading GPOS table 5503" when using katakana
      Fix more warnings.
      Bug 469049 – Fix all compiler warnings
      Allocate all array rows in a single ALLOC call. Saves over 2000 alloc
      Remove old cruft.
      Use calloc(), instead of malloc()ing and memset()ing.
      Remove ClassDef->Defined field. This is the comment accompanying it:
      Allocate all array rows in a single ALLOC call. Saves over 100 alloc calls
      Fix Bug 572529 – Poor -I ordering can break build
      [opentype] Use size_t instead of uint for malloc wrappers
      [opentype] Protect against illegal access for arrays of length zero
      Bug 577952 – Error loading {GDEF,GSUB,GPOS} table 0x6EAD
      Give it a start at GSUB
      Use git.mk
      Merge harfbuzz-ng
      Implement the first substitute()
      [harfbuzz/GSUB] towards a partially working GSUB
      [GSUB] Fix reverse lookup loop like we did in the old code before
      [GSUB] Implement Extension subtables
      [GSUB] Implement Alternate subtables
      [GSUB] Start Ligature subtable support
      [GSUB] Hook new GSUB up in Pango
      [GSUB] Implement ligature substitutions
      [GSUB] Minor refactoring
      [GSUB] Towards Context subtitutes
      [GSUB] minor
      [HarfBuzz] Start a TODO file
      [GSUB] Shuffle
      [GSUB] ContextSubst format 1
      [HB] Remove get_size()
      [HB] Remove DEFINE_NON_INSTANTIABLE
      [HB] Add TODO item
      [HB] Fix typo
      [GSUB] Finish ContextSubstFormat1
      [GSUB] Add GSUB::substitute_lookup()
      [GSUB] Implement ContextSubstFormat2
      [GSUB] Implement ContextSubstFormat3
      [GSUB] Start ChainContextSubst
      [HB] Remove obsolete comment
      [HB] Use templates for Null objects
      [HB] Automate int-type size assertion
      [HB] Add OffsetTo template.
      [HB] Use OffsetTo<> in more places
      [HB] Use OffsetTo<> for Coverage
      [HB] Add ArrayOf<>
      [HB] Use ArrayOf<> in GSUB
      [HB] Simplify more arrays
      [HB] Update copyright years
      [HB] Add TODO item
      [HB] Simplify buffer
      [HB] Renames
      [GSUB] Unify ContextSubst matching
      [HB] Move Context matching logic out of GSUB
      [HB] Unify first glyph property checking
      [GSUB] Further optimize the main switch
      [HB] Propagate property of first glyph
      [HB] Couple size checks
      [HB] Use four bytes for Null Tag, not 5
      [HB] Cleanup format unions
      [HB] More shuffling
      [HB] Split Layout-common tables into new files
      [HB] Remove stale TODO
      [HB] Start ChainContext and ReverseChainSingleSubst lookups
      [HB] Cosmetic
      [HB] Add check to avoid infinite recursion
      [HB] Towards sharing Context and ChainContext code
      [HB] More churning towards ChainContext lookups
      [HB] More template goodness
      [HB] Add HeadlessArrayTo<>
      [HB] A step closer to working ChainContext
      [HB] Further modularize Context matching
      [HB] One more step to go, for fully working GSUB and ChainContext
      [HB] Implement backtrack matching
      [HB] ChainContext complete
      [HB] Fix context_length checking
      [HB] Correctly skip glyphs when applying (Chain)Context lookups
      [HB] Minor cleanup
      [GSUB] Fix context_length handling in Ligature too
      [HB] Cleanup TODOs
      [HB] Tweak some constants and fix Coverage
      [GSUB] Oops, fix Extension check
      [HB] Don't use G_LIKELY!
      [GSUB] Implement ReverseChainSingleSubst
      [GSUB] Protect against mismatching Extension subtable types
      [HB] Minor
      [GSUB] Minor
      [HB] Start GPOS!
      Switch Pango to new, defunt, GPOS
      [HB] Simplify casts
      [HB] Internally rename position() and substitute() to apply()
      [HB] Rename LOOKUP_ARGS to APPLY_ARGS
      [HB] More reference cast simplification
      [HB] Use enums
      [GPOS] Start filling apply() functions in
      [GPOS] PairPosFormat1
      [GSUB] PairPosFormat2
      [GPOS] CursivePosFormat1
      [HB] Indentation
      [HB] Remove unused methods
      [HB] Indentation
      [GDEF] Simplify Device access
      [HB] Move lookup types enum into subtable class
      [GPOS] Fix more brokenness
      [GPOS] Finally it's working, up to Cursive
      [HB] Remove all references to the old code!
      [HB] Rename harfbuzz-buffer to hb-buffer
      [HB] Remove last dependence on the old code base!
      [HB] Add TODO item
      [HB] Add TODO item
      [GPOS] Start MarkBasePosFormat1
      [GPOS] Remove apply_value() return value
      [GPOS] Implement Device support in AnchorFormat3
      [GPOS] Implement MarkArray interface
      [GPOS] MarkBasePosFormat1
      [GPOS] MarkMarkPosFormat1
      [HB] Ouch.  Add files.
      [GPOS] Remove printf.  MarkMarkPos1 is working
      [HB] Share Extension lookup code between GSUB and GPOS
      [HB] Remove apply_subtables() again
      [GPOS] MarkLigPosFormat1
      [GDEF] Add some get_carret_value() code
      [HB] Add TODO items
      [HB] Minor
      [HB] Check for GDEF/GSUB/GPOS versions
      [HB] Simplify version check in GSUB/GPOS
      [HB] Remove unused data types
      [HB] Simplify tag
      [HB] Add FixedVersion cast to int
      [HB] Remove stale TODO mark
      [HB] Remove old code!
      [HB] Remove stale makefile.msc too
      [HB] Update text files
      [HB] simplify macros
      [HB] Simplify some basic things
      [HB] Simplify more
      [HB] Simplify Tag
      [HB] More cleanup
      [HB] Would have helped if I actually knew C++ before using it...
      [HB] Update copyright years
      [HB] Remove one XXX, add another
      [HB] Clean more
      [HB] Cleanup buffer
      [HB] More buffer cleanup
      [HB] Remove more macros
      [HB] Add get_attach_points()
      [HB] Implement get_lig_carets()
      [HB] Start MarkFilteringSet support
      [HB] More de-C++'ization
      [HB] Support parsing MarkFilteringSets introduced in OpenType 1.6
      [HB] Simplify MarkAttachmentType handling
      [GDEF] Support MarkFilteringSets
      [HB] When looking back/forward, skip marks only
      [GPOS] Fix mark matching
      [GPOS] Fix PairPos signedness
      [HB] Fix glyph properties
      [GPOS] Remove unused variables
      [HB] Remove useless include
      [GPOS] Add vertical TODO
      [GPOS] Fix property checking
      [HB] Improve buffer.  Don't dup out buffer unless out is longer than in
      [GPOS] Advance buffer cursor in SinglePos lookups.  Ouch!
      XX
      Revert "XX"
      Apply patch from Jonathan Kew
      [HB] Fix buffer enlargement.  Ouch
      [HB] Rename internal vars
      [HB] Move direction to buffer
      [HB] Add a "blob" manager
      [HB] Remove hinting setting and use ppem==0 to mean "no hinting"
      [HB] Use calloc instead of malloc where feasible
      [HB] Fix for dfont's with multiple faces
      [HB] Simplify refcounting functions
      [HB] Add abstract font and face API
      [HB] Simplify object creation
      [HB] Assorted compiler macros
      [HB] Remove glib dependency
      [HB] Add get_reference_count()
      [HB] Move typedef's around
      [HB] Port buffert to new object API
      [OT] Match struct with HB's
      [HB] Cleanup public buffer structs
      [HB] Cleanup TODO
      [HB] Rename _duplicate to _copy
      [HB] Add XXX marks
      [HB] Add top-level header files
      [HB] Port ot-layout to new public API
      [HB] Move OT file handling out of ot-layout
      [OT] Rename C++ header files from *.h to *.hh
      [HB] Rename hb-font.c to hb-font.cc
      [HB] Add sub-blobs
      [HB] Simplify sub-blob support
      [HB] Use face_t directly instead of ot_layout_t
      [HB] Make it all work again
      [HB] Remove use of typeof()
      [HB] Start sanitize()
      [HB] More sanitize()
      [HB] Optimize sanitize()
      [HB] Add comment
      [HB] Finish GSUB sanitize()
      [HB] Simplify indirect sanitize()
      [HB] Merge more templates
      [Hb] Use reinterpret casts instead of direct casts to char *
      [HB] More cast cleanup
      [HB] Fix couple of bugs
      [HB] More casts
      [HB] Sanitize DeviceTable
      [HB] GPOS sanitize()
      [HB] Fix mix warnings
      [HB] Hookup NEUTER()
      [HB] Remove stale TODO
      [HB] Fix Extension sanitize()
      [HB] GDEF sanitize()
      [HB] Tag sanitize()
      [HB] open-file sanitize()
      [HB] More sanitize infrastructure
      [HB] Shuffle code around
      [HB] Minor cleanup
      [HB] Add XXX
      [HB] Add Sanitizer
      [HB] Fix leak
      [HB] Hook Sanitizer up.  Hell's breaking loose right now
      [HB] Avoid infinite recusion in Extension sanitize()
      [HB] Fix warnings
      [HB] Save edit even if not writeable
      [HB] Rename open-types to open-type; beauty
      [HB] Add sanitize debugging facilities
      [HB] Add missing sanitize
      [HB] Fix fatal Sanitizer bug
      [HB] More debugging output
      [HB] Fix a couple other sanitize() bugs
      [HB] Fix another sanitize() bug;  hopefully it's the last one
      [HB] turn debugging off
      [HB] Fix build of main.cc
      [HB] Minor
      [HB] Improve debug output and fix mprotect bug
      [HB] Fix blob unlock
      [HB] Improve debug output
      [HB] Add a few TODO items
      [HB] Minor
      [HB] Improve debug output
      [HB] Use glib again
      [HB] Fix blob to use a actual mutex
      [HB] Remove a few 'inline's, though the compiler mostly ignores them
      [HB] Fix unaligned access
      [HB] Remove stale XXX
      [HB] Rebrand XXX as TODO
      [HB] Remove another stale XXX
      [HB] Remove unused var
      [HB] Fix various XXX issues
      [HB] Remove clumsy macros and improve API
      [HB] Fix bug introduced recently
      [HB] Rename hb_ot_layout_feature_mask_t to hb_mask_t
      [HB] Remove hb_ot_layout_table_find_feature()
      [HB] Print mark sets in main.cc
      [HB] Remove done TODO item
      [HB] Add a NEXT() macro
      [HB] Remove unused code
      [HB] Indent
      [HB] Don't override CXX compiler
      [HB] Put C++ inline's back
      [HB] Start adding Unicode funcs
      [HB] Reuse the positions array as alt string array
      [HB] Add hb_buffer_reverse()
      [HB] Add buffer UTF-X API
      [HB] Implement buffer UTF-X input
      [HB] Flesh out Unicode funcs
      [HB] Initialize unicode funcs to nil getters
      [HB] Use nil unicode funcs in nil face
      [HB] Add hb_unicode_funcs_make_immutable()
      [HB] Add hb-glib
      [OT] Hookup glib unicode funcs
      [HB] Add missing initializer
      [HB] Add hb_font_funcs_make_immutable()
      [HB] Fix invalid access / overflow on x86-64
      [HB] Ouch.  Fix compilation.
      [HB] Fixed signedness warnings
      [HB] Fix _hb_buffer_next() when positioning
      [HB] Always clear positions if dirty, before returning to user
      [HB] Add comment
      Bug 591511 – hb-blob.c does not compile using mingw on windows
      Bug 591413 – needs to link with libstdc++
      [HB] Fix buffer sizing issue with mingw gcc
      Bug 591511 – hh-blob.c does not compile using mingw on windows
      [HB] Bitfield packing *is* very delicate
      [HB] Add empty hb_shape() API
      [HB] Add note about auditing sanitize code for overflows
      [HB] Use SANITIZE_THIS() when applicable
      [HB] Use inline function for SANITIZE_MEM()
      [HB] Debug output for SANITIZE_MEM()
      [HB] Fix possible int overflows during sanitize
      [HB] Simplify MarkMark
      [HB] Simplify MarkBase and MarkLig too
      [HB] Correctly sanitize LigatureAttach
      [HB] Move code around
      [HB] More minor shuffling
      [HB] Merge mark positionin code between three types of lookups
      [HB] Simplify loop
      [HB] Avoid int overflow in GPOS
      Bug 592194 -  Fix missing _SC_PAGE_SIZE macro
      [HB] Fix wrong method signature
      [HB] Fix more wrong method signatures
      [HB] Fix pedantic warnings
      Fix a few other pedantic warnings
      [HB] Add font funcs prototypes
      [HB] Fix typo
      [HB] Hide lig_id and component members of hb_glyph_info_t
      [HB] s/writeable/writable/g
      [HB] Remove HB_MEMORY_MODE_READONLY_NEVER_DUPLICATE
      [HB] Rename CAIRO_ in macro prefix to HB_
      [HB] Fix more casts
      [HB][glib] Make glib unicode funcs static
      Bug 592484 -  invalid write in HB
      [HB] Bug 593231 - < c99 compiler dislikes ValueRecord
      [HB] Indent
      [HB] Simplify counting
      Fix stupid array growing bug
      [HB] Allow enabling different debug facilities individually
      [HB] Add GSUB/GPOS tracing
      [HB] Rename DEBUG to TRACE where appropriate
      [HB] Add TODO item
      [HB] Fix bug in chain_context_lookup() invocations
      [HB] Fix apply_lookup() loop
      [HB] Add comment
      [HB] Fix lookup_flag ignoring
      [HB] Add point_index to get_contour_point()
      [HB] Add glyph_metrics typedef
      Add build system
      Generate ChangeLog
      Install library
      Remove use of GINT16_FROM_BE
      MSVC has no stdint.h
      Build without glib
      Update Makefile to build without glib
      We don't really use gthread directly
      Disable configure cache
      Fix build without glib, again
      Another try at build without glib
      Cosmetic
      Don't use zero-sized arrays
      More MSVC fixes from Jonathan Kew
      Add bunch of TODO items
      [TODO] Remove obsolete item
      [configure] Fix check for FreeType
      Use the C linker, not C++ linker
      Add check for not linking to libstdc++
      [TODO] Add item for fixing buffer error handling
      [Makefile] Install hb-unicode.h
      Move unicode_funcs to buffer
      Namespace MSVC defines in public header
      Fix hb_be_uint16()
      Add ICU glue
      Start ft glue
      Implement nil font functions
      Add TODO item
      Finish FT glue.  Rough and untested
      Fix array query API
      Fix previous commit, ouch!
      Minor
      Another one
      Define ARRAY_LENGTH
      Add hb_language_t as well as language/script conversion to OT tags
      Add script and language to buffer
      Start filling hb_shape() in
      Cosmetic
      Rename [xy]_pos to [xy]_offset since we don't accumulate positions
      Add hb_font_get_*
      Include stdio.h if debugging
      Fix MarkMark issue with ligid and components
      Add default positioning to hb-shape
      Add hb_ft_face_create_cached
      Fix ref counting
      Add TODO item
      Initialize font->klass
      Return 0 from get_glyph_nil
      Cosmetic
      Add debugging to object lifecycle
      include errno.h
      Fix warning
      Cosmetic
      Fix FT_Face generic finalizer
      Minor.
      Rename hb_buffer_get_len() to hb_buffer_get_length()
      Fix FT_Face finalizer call
      Add hb_ot_layout_position_finish()
      Add _hb_buffer_add_output_glyphs() that takes codepoint_t*
      [GSUB] More ligature/component fixing
      Remove debug info that crept in
      Change order of font and face for API consistency
      Oops, wrong change
      Handle shaping in non-native direction
      Reverse buffer at the end if RTL
      Remove done item
      Remove obsolete TODO item
      Fix sanitize
      Add Mongolian variation selectors
      Use autoconf FLEXIBLE_ARRAY_MEMBER when available
      Fix warning
      Another C++ strictness fix
      Distribute autogen.sh
      Make main.cc compile without glib
      Add HB_DIRECTION_IS_FORWARD/BACKWARD
      Explicitly track whether the buffer has positions
      We'll have to link to libstdc++ if linking to ICU, so disable test for now
      Add hb_unicode_get_*() functions
      Protect against NULL funcs
      Do mirroring
      Direct unicode->get_mirroring directly
      Add TrueType kern support
      Refactor hb_shape a bit
      Avoid overflow
      Pass features down
      Hook OpenType shaping up
      Oops, add file.
      Remove glibism!
      Fallback to 'kern' if no GPOS applied
      Revert "Fallback to 'kern' if no GPOS applied"
      Indent
      Fix compile with older FreeType
      [TODO] Add kern/GPOS interaction
      [GDEF] Fix bug in building synthetic GDEF
      Use __attribute__((unused)) only with gcc 4 and later
      Improve the alignment for NullPool
      Make blob unlocking 64bit-safe
      [ft] Check stream->read instead of stream->base
      Cosmetic
      Typo
      Fix the mystery bug!
      Fix leak when duplicating blob
      Fix debug build
      Fix warnings
      Round instead of trunc
      Remove ASSERT_SIZE_DATA
      Add couple consts to operators
      Fix Class operator return type
      Cosmetic
      Simplify Tag struct
      Use a function template instead of struct template for Null
      Remove stale TODO item
      Improve comments
      WIP
      GNOME Bug 613015 - [HB] Does not sanitize Device tables referenced from ValueRecords
      Remove unused macros
      Move macros around
      Minor
      Rename macros
      Remove unused macro
      Use templates for defining int typess
      Const correctness
      Use templates for const char * casts
      Convert NEXT() and ARRAY_AFTER() macros to templates
      Remove ArrayAfter, use StructAfter in place
      Rename const_array() to array() (overloaded)
      Further simplify IntType struct defs
      Improve comment
      Add comment
      Add comment
      Add more comments
      Cleanup de-const-casting during sanitize
      Rename ConstCharP to CharP (overloaded now)
      More cast simplification
      Change header comment
      Simplify Lookup sanitize
      Cosmetic
      Rename const_sub_array to sub_array since all consts are implicit now
      Watch for overflow in Array sanitize
      Sanitize shallow in Lookup since the generic SubLookup has no methods
      Simplify Extension offset now that our int types have no alignment
      Improve Subst/Pos SubTable access and sanitize
      Make sure semicolon is expected after DEFINE_NULL_DATA()
      Make casts more explicit
      Avoid overflow in TableDirectory sanitize
      Remove unnecessary casts
      Add coment
      Don't sanitize raw table data
      Remove integrity check in Tag sanitize
      Minor
      Add comment
      Cleanup ContextFormat3 sanitize
      Check for (impossible) overflow
      Minor cleanup of sanitize
      More sanitize cleanup
      Fail sanitize on major version mismatch
      Cleanup Extension sanitize()
      Remove unused macro
      Convert the last set of cast macros to templates
      Cosmetic
      Add comment re bsearch effect on sanitize
      Cleanup Extension lookups
      Properly define separate structs for TTCHeader and TTCHeaderVersion1
      Cleanup OpenTypeFontFile
      [blob] Fallback to copying if mprotect() fails
      When sanitizing, delay making writable
      No need to keep blob in sanitize context
      Fix compile warnings (HB_GNUC_UNUSED)
      Remove unused parameter
      More warning fixes
      Zero glyph metrics before calling user callback
      Add TODO
      Remove GET_FOR_DATA macros
      Add different casts from pointer and ref to avoid bugs
      Remove lock_instance()
      Typo
      Allow get_table() to return NULL
      Cleanup hb_face_create_for_data()
      Remove use of flexible arrays
      Rename Var to Obj
      Fix Device::get_size() calculation
      [object] Actually handle malloc() failure
      Fix debug build
      Fix build.  Ouch!
      [blob] Make debug code always available to the compiler
      Minor
      [object] Make debug code always available to the compiler
      Fix compiler warning about value unused
      [gsubgpos] Make debug code always available to the compiler
      [sanitize] Make debug code always available to the compiler
      Simplify trace code
      Further simplify tracing
      [apply] Use a context object to reduce number of parameters passed around
      Rename
      Rename apply_context -> context
      Add const
      Use const_cast
      Fix bug in hb_language_from_string()
      Minor
      Use BCP47 private-use tags for OpenType tag language string mapping
      Make sure mirroring is done in original direction
      [gdef] Implement getting contour point
      [gdef] Fix rounding
      [gdef] Fix delta scale
      More contour point use
      Convert to uppercase in hb_ot_tag_from_language()
      [sanitize] Make debug code always available to the compiler
      Define HB_FUNC for portability to non-gcc
      Rename HB_GNUC_UNUSED -> HB_UNUSED
      [ft] Disallow getting the entire font data with tag=0
      [GPOS] Speedup apply_value()
      Whitespace
      Remove unused method
      Merge remote branch 'jrmuizel/master'
      Mark a couple functions as inline
      Cosmetic: Rename HB_LIKELY/HB_UNLIKELY to likely/unlikely
      Comment new SFNT tags
      [main] Recognize Apple SFNTs
      Make internal method private
      Remove the NEUTER macro, move code to a method
      Remove SANITIZE2
      Remove SANITIZE_BASE2
      Remove SANITIZE_THIS3
      Cosmetic
      Remove SANITIZE_THIS2
      Remove SANITIZE_OBJ
      Rename SANITIZE_BASE to SANITIZE_WITH_BASE
      Remove SANITIZE_THIS
      Make _hb_sanitize_*() methods of the context object
      Use function template for pass-thru argument
      Make sanitize_depth variable automatic and not passed through function args
      Add hb_trace_t
      Remove trace from sanitize_shallow()
      Remove SANITIZE_ARG_DEF and SANITIZE_ARG
      I keep changing my mind about this
      Minor
      Move layout_context into apply_context
      Move buffer into apply_context
      Move context_length into apply_context
      Port apply to use hb_trace_t
      Remove APPLY_ARG_DEF and APPLY_ARG
      Simplify chaining
      Minor
      Minor
      Cosmetic
      Remove SANITIZE_ARRAY
      Rename check to check_range
      Remove SANITIZE_MEM
      Remove SANITIZE_WITH_BASE
      Cleanup Value casts
      Remove SANITIZE macro
      Remove the last of SANITIZE macros: SANITIZE_SELF
      Start cleaning up get_size()
      Simplify DEFINE_NULL_DATA
      Whitespace
      Cleanup ASSERT_SIZE_VAR
      Remove ASSERT_SIZE in favor of the safer DEFINE_SIZE_STATIC
      Cleanup
      Further cleanup of DEFINE_SIZE
      Make StructAtOffset take a pointer
      Remove unnecessary casts
      Remove CastP completely
      Further cleanup of sizeof
      Fix check_struct to check min_size instead of sizeof
      Simplify array access
      Minor
      Cleanup DEFINE_SIZE_VAR2
      Change DEFINE_SIZE_VAR to DEFINE_SIZE_ARRAY
      Remove unused macro
      Simplify unions
      Fix accessing tables from NULL pointer
      Fix comment
      Don't fail sanitize on NULL data
      Fix tracing order
      Fix awful confusion between lookup format and subtable format
      Clean up NO_INDEX
      Fix warning
      Shrink NullPool now that we have accurate size tracking
      Remove excess sub_format sanitize
      Remove a few likely()'s
      Sprinkle a few strategic likely()'s
      Fix warnings
      Simplify likely() implementation
      Add CONST_FUNC annotation
      Simplify PairSet
      Remove obsolete friend
      Fix comment
      Rename a few files to be C++ sources
      Use bit tricks for HB_DIRECTION_IS_*
      Add buffer->allocate_lig_id()
      Hide internal symbols
      Add check for internal symbols
      Add buffer->swap()
      Add a few other buffer methods
      Make HB_PRIVATE more useful
      Improve check for internal symbols
      Minor
      Add a few more buffer convenience methods
      Don't use variable-length-arrays
      s/\<context\>/c/g
      Remove POSITION() and CURPOSITION() macros
      Fix lookahead matching.  Oops!
      Remove OUT_GLYPH() and OUT_INFO() macros
      Remove IN_COMPONENT() macro
      Remove the IN_LIGID() macro
      Remove the IN_MASK() macro
      Remove the IN_CLUSTER() macro
      Remove the IN_GLYPH() macro
      Remove IN_INFO() and IN_NEXTGLYPH() macros
      Remove the IN_CURINFO() macro
      Remove the IN_CURGLYPH() macro
      Remove the unused BUFFER macro
      Merge buffer->out_pos and buffer->out_length
      Shortening buffer accessors: rename buffer->in_string to buffer->info
      Shortening buffer accessors: rename buffer->out_string to buffer->out_info
      Shortening buffer accessors: rename buffer->positions to buffer->pos
      Shortening buffer accessors: rename buffer->in_length to buffer->len
      Shortening buffer accessors: rename buffer->out_length to buffer->out_len
      Shortening buffer accessors: rename buffer->in_pos to buffer->i
      Update buffer docs
      Minor
      Handle malloc failture in the buffer
      Add an inline version of hb_buffer_ensure()
      Indent
      Minor
      Add LONGDATETIME
      Add 'head' table
      Fix scale issues
      Change hb_feature_t to keep tag/int instead of string
      Apply user features
      Invert the mask logic
      Update always-apply mask from 0xFFFF to 1
      Add lookup_map
      Add _hb_bit_storage()
      Apply user features to ranges!
      Write hb_face_create_for_data() in terms of hb_face_create_for_tables()
      get_table() is allowed to return NULL.  Use that to simplify code
      Do alternate glyph selection!
      Remove unused operator
      Fix delta scale, again...
      Fix alternate off-by-one
      Fix alternate, again
      Let hb_face_get_table() return NULL if table not found
      Add Python wrapper from Martin Hosken
      Add hb_ot_tag_to_script()
      Fix feature mask setting
      Add Unicode 5.2 scripts
      Speed up feature mask setting
      Don't allocate bits for features not available
      Add hb_tag_from_string()
      Update the Python module
      Import Graphite shaping backend by Martin Hosken
      Fix warnings
      Fix test failing
      Move main shaper code into hb_ot_shape()
      Graphite also forces us to link to libstdc++ currently
      Simple renames
      Fix Makefile to install hb-ot-shape.h
      Add hb-ot-shape.h, oops.
      Add note
      Cleanup bitmask allocation
      Add ltra, ltrm, and rtla features
      Add rtlm
      Add note
      Add a few more standard features
      Move mirroring around a bit
      Move all callback functions in a vtable structs
      Make sure we initialize all callbacks upon creation
      Minor
      Fix struct initializers
      Merge remote branch 'martin/master'
      Revert "Merge remote branch 'martin/master'"
      Cypriot is RTL
      Disable Graphite as it crashes all over the place...
      Fix loop
      Add note about UTF-8 decoder
      Allow disabling default features
      Towards a mask allocator
      Simplify mask allocation
      Fix global feature handling
      Further simplify mask allocator
      Minor
      Make feature sorting stable
      Fix skipping variation-selectors
      Followup fix for variation-selectors
      Fix header tags
      Add a test for header preprocessor guards
      Fix header
      Remove useless TODO
      Use bsearch where applicable
      Don't bother sorting, it's a safe font error if the array is not sorted
      Fix 64bit issues with debug prints
      Mozilla bug 580233 - check for zero-length record in hb sanitizer.
      Remove fixed TODO item
      Add arm build fix to TODO
      Add TODO option
      Don't use "operator ="
      dos2unix
      Header dep cleanup
      De-C++ where possible
      Prefer C linkage
      Add TODO items
      Towards separating bit allocation from shaping
      Minor
      Logically separate feature allocation from application
      Add TODO
      [GPOS] Fix div-by-zero
      Fix NULL dereference
      Speedup Device table delta computation for common cases
      Add TODO item
      Fix blob refcounting with insane SFNT table directories
      Fix hb_ot_layout leak
      Add test.c using public API
      Remove unimplemented method hb_font_get_funcs()
      Add TODO iteam
      Fix stupid bug in bsearch cmp function!
      Add comment re DejaVu Sans Mono having 'dflt' script
      Improve cmp function parameter namings and casts
      One fewer cmp() implementation...
      Don't zero glyph advances in MarkToBase and similar lookups
      Pedantic
      Avoid div-by-zero, validate upem
      Minor
      Add getters for all setter APIs
      Add is_mutable() functions
      Add API comments
      Add TODO item
      Add hb_face_get_upem()
      Update build system
      Add Arabic/Syriac/N'ko shaping logic
      Add internal hb_ot_shape_context_t
      Move table_tag to hb_ot_shape_context_t
      Rename setup_lookups()
      Call hb_ot_shape_setup_lookups_complex()
      Add XXX note
      Rename
      Simplify compiling lookups
      Minor
      Move some more code around
      Minor
      Logically separate feature collection
      Flip the OT bit-allocation vs gsub/gpos inside-out
      Add private hb_segment_properties_t
      Add hb-ot-map-private.hh
      Add hb-ot-shape-private.hh
      Minor cleanup
      Fix feature overriding
      Add hb-ot-map.cc
      Improve checks
      Rename hb_mask_allocator_t to hb_ot_map_t
      Enable 'rtlm' mirroring
      Minor
      More separation
      Fix missing negation in unreachable code!
      Fix infinite loop!
      Update Arabic shaping table to Unicode 6.0.0.
      More refactoring
      Refactor, in a different direction
      Add hb_ot_shape_plan_t
      Add hb_ot_complex_shaper_t stuff and start hooking Arabic shaper up
      Add hb_ot_shape_execute()
      Clear masks before setting them up, not after!
      Form clusters before setting masks
      Merge clearing masks and setting global masks
      Hookup Arabic shaper!
      Fix Arabic shaper
      Step the version up to 0.2 now that Arabic shaper is in
      Fix stupid bug, oops
      Cleanup TODO
      Add TODO item
      Set user masks after complex masks
      Fix applying default-value for features
      Make sure feature values don't leak out of their mask
      Return early if mask is 0
      Make sure boolean features always use value=1
      Oops, actually set global mask
      Massage mask setting a bit more
      Fix blob leak
      Divide get_metrics into get_advance and get_extents
      Oops, remove extra mask setting that broke complex shaping
      Remove obsolete TODO item
      Fix segfault with Arabic combining marks
      Fix Cursive positioning
      Rewrite Cursive joining to act more like other pair lookups
      Remove unused macro
      Remove LONGTERMTODO item that I'll never fix
      Implement vertical support in get_lig_carets()
      Rename hb_ot_layout_get_lig_carets() to hb_ot_layout_get_ligature_carets()
      Remove more pointless LONGTERMTODO items
      Clarify cursive_chain (and change its sign)
      Supposedly implement vertical support in GPOS
      Remove trailing comma
      Add hb_var_int_t
      Get rid of the OpenType-specific internal buffer representation
      Remove comment
      Set component=0 for ligature glyph
      Always allocate new ligature id
      Move setting lig_id/component out of buffer and to the gsub code
      Minor renaming
      More removal of lig-id code from buffer
      More lig-id cleanup
      More cleanup
      Remove unused function
      WIP removing external synthesized GDEF support and implementing it internally
      Rename lookup_flags to lookup_props since it's more than just flags
      Simplify mark skipping logic
      Move some more code around
      Move code around
      Move buffer var allocation local
      Move things around some more
      Fix unreachable-code warning
      Remove another couple lines of dead code
      Fix a few more "unreachable code" warnings
      Minor code shuffling
      Pedantic
      Add comment
      More "unreached code" warning fixes
      Save general category and combining class in the buffer for reuse
      Add TODO item
      Add XXX marks
      Add TODO item
      Change HB_SCRIPT_MEITEI_MAYEK to HB_SCRIPT_MEETEI_MAYEK
      Add Unicode 6.0 scripts
      Add OpenType script tags for Unicode 5.2 and Unicode 6.0 scripts
      Update Arabic joining table to include Mandaic
      Move generated table to its own file
      Clarify copyright notice
      Remove email address from Copyright headers
      Fix failing checks
      Adjust pyx files to reflect change from int to hb_var_int_t
      Bug 31965 - some GNU/Linux distributions lack icu.pc but have icu-config
      Fix arabic shaping of LTR text
      Rename original_direction to target_direction
      Mozilla Bug 618592 - freeze on typekit
      Disallow ligature substitutions replacing one glyph
      Update 'head' table to OpenType 1.6
      Rename TableDirectory to TableRecord as per OpenType 1.6
      Rename remaining metrics uses to extents
      Annotate the Arabic joining table with block information
      Reroute Mandaic shaping through the Arabic shaper
      Bug 32274 - classic mongolian shaper
      Docs
      Remove Graphite backend
      Fix ICU detection
      Remove unused realloc
      Fix ChanContext backtrack matching with GPOS
      Fix 'make distcheck'
      Don't use the m4/ dir
      Fix language extension matching
      Add initial hb-view tool
      Default background color shall either be white or transparent
      Fix possible overflow
      [hb-view] Link with -lm
      [hb-view] Handle write_to_png errors
      Let hb_shape() guess script and direction...
      Add script to/from ISO 15924 tag support
      Sort options for clarity
      [hb-view] Support --features
      [hb-view] Add --debug
      [hb-view] Use cached hb-ft face creation
      [hb-view] Rewrite --features parsing, with range support
      [hb-view] setlocale (LC_ALL, "")
      Disable 'cswh' by default except for Arabic shaper
      Update TODO items
      Add test directory
      Assert int types
      Remove warning message from public header file
      A few more ASSERTs
      Add few more paratheses to the HB_TAG macro
      Add an in-tree test suite
      Rename HB_TAG_STR() to HB_TAG_CHAR4()
      Move macros around
      Build fix
      Make hb_tag_from_string(NULL) return HB_TAG_NONE
      Make HB_TAG_CHAR4 private
      Rename hb_category_t to hb_unicode_general_category_t
      [teset] Test hb_script_t
      Make hb_language_from_string("") return NULL language
      [test] Test hb_language_t
      Fold hb-language.[ch] into hb-common.[ch]
      [test] Actually hook up hb_script_t tests
      Minor
      [TODO] Add API item
      [TODO] Add item re hb_buffer_resize()
      [TODO] Add item re hb_buffer_reset()
      [test] Test hb-buffer.h
      [TODO] Add item re script iso15924 functions
      [test] Add todo items
      Minor
      Add hb_buffer_reset() and hb_buffer_set_length()
      [test] Add more TODO items
      Make hb_language_t typesafe
      [TODO] Remove done items
      Cosmetic
      [TODO] Remove done items
      [API] Remove hb_buffer_clear()
      Remove hb_buffer_clear_positions(), add hb_ot_layout_position_start()
      Add hb_script_from_string()
      Mark internal buffer variables private
      [TODO] Add new item
      Move enum types to hb-common.h
      Change buffer default properties to invalid
      [API] Use ISO 15924 tags for hb_script_t
      [API] Add hb_buffer_allocation_successful()
      [API] Rename hb_buffer_add_glyph() to hb_buffer_add()
      Cosmetic
      unicode: Cleanup implementation
      Remove verbose comments
      [glib] Add two-way script conversion functions
      [icu] Add two-way script conversion functions
      [test] Rename test-types to test-common
      [API] blob: move user_data before destroy()
      [API] font: move user_data before destroy()
      [test] Add todo items
      [test] Add test for headers included from C and C++
      Minor
      [OT] Fix script to ot-script-tag conversion
      [API] Remove hb_*_get_reference_count()
      [TODO] Remove done items
      [API] Rename hb_face_get_table() to hb_face_reference_table()
      [API] Make hb_face_reference_table() return empty blob instead of NULL
      [TODO] Remove done items
      Rename hb-blob.c to hb-blob.cc in preparation of more changes
      Rename all private sources and headers to C++ files
      Move hb_reference_count_t from macros to inline methods
      [icu] Remove big script switch(), rely on reverse-lookup
      [API] Allow negative font x_scale/y_scale
      [TODO] Remove finished items
      Cleanup hb_refrence_count_t
      Add ASSERT_STATIC_EXPR macro
      Remove obsolete comment
      [hb-view] Accept numbers in feature tag name
      Update Copyright headers
      Move hb_reference_count_t to hb-private.h
      Add hb_object_header_t which is the common part of all objects
      Further simplify object handling
      Don't return in void function
      Add TODO item
      Replace simple macros with inline functions for better type safety
      [API] Add hb_unicode_funcs_get_default()
      Make buffer size growth start from 32 instead of 8
      [TODO] Add hb-view items
      Rename hb-view.c and test.c to .cc files
      [API] Add hb_direction_from/to_string()
      GNOME Bug 612402 - (hb-arm) HarfBuzz compilation fix for arm
      [object] Add tracing support back in
      [blob] Use HB_FUNC instead of __FUNCTION__
      [object] Remove unnecessary use of macros
      Add initial implementation of user_data to objects
      Move code around
      [API] Add _set/get_user_data() for all objects
      [test/buffer] Test reverse() and reverse_clusters()
      [test/buffer] Test reset(), set_length(), and set/get_unicode_data()
      [test/buffer] Add test pre_alloc(); hangs in the buffer code right now
      [buffer] More error handling
      Fix possible but improbable overflow in hb_array_t
      [test/buffer] Test pre_allocate() and allocation_successful()
      Desable possibly lethal test on 64-bit machines
      Add _hb_unsigned_int_mul_overflows
      [TODO] Remove finished items
      [API Remove hb_font_funcs_copy()
      Add test suite infrastructure
      [test/buffer] Add initial utf-8 tests
      [test/buffer] Add more extensive UTF-8 test data from glib
      [test/buffer] Add UTF-16 tests
      [test/unicode] Use text fixture instead of static variables
      [test/unicode] Test is/make_immutable()
      [test/unicode] Add testing of all unicode properties
      Minor
      [test/unicode] Add log messages
      ISO 15924 fixes
      [icu] Make sure we return script UNKNOWN instead of INVALID
      Minor
      [test/buffer] Clean up testing
      [test/unicode] Test Unicode 5.2+ but don't fail
      [test/unicode] Port the _custom test to test all property setters
      [test/unicode] Better test chainup
      [test/unicode] Add script roundtrip tests for glib and ICU
      [unicode] Make _get_parent() return _nil object instead of NULL
      Cosmetic
      [buffer] Fail in _create() if we cannot pre-allocate the requested size
      [face] Return nil face if blob is inert
      [API] Rename hb_blob_create_empty() to hb_blob_get_empty()
      Cosmetic
      [test/object] Add test for object lifecycle stuff
      [object] Fix bug in get_user_data() implementation
      Fix bug in map implementation
      Fix bug in array growth implementation
      Protect NULL in a couple places
      [API] Make hb_font_create() take a face and reference it
      Cosmetic
      Add hb_mutex_free() and use it
      Implement win32 thread-safety stuff
      [blob] Implement sub_blob() in terms of create()
      Refactor to keep hb-object-private.h and hb-open-type.h separate
      Move Win32 thread-safety stuff to hb-object-private.h
      [ft] Fix font->face handling
      Move code around
      Add hb_static_mutex_t
      Make hb_mutex_*() macros take a pointer
      Make array/map implementation more generic
      Replace hb_map_t with hb_set_t which is more intuitive and flexible
      Minor
      Replace fixed-size feature_infos array with hb_array_t
      Replace fixed-size feature_maps array with hb_array_t
      Replace fixed-size lookup_maps array with hb_array_t
      [TODO] Remove done items
      Move code around
      Use hb_array_t for hb_language_t mapping
      Add hb_threadsafe_set_t
      Use threadsafe set implementation for hb_language lookups
      Shrink code
      Make user_data access threadsafe
      [buffer] Remove wrong optimization
      Fix build with older glib
      Add AC_CANONICAL_HOST
      Remove win32-dll libtool flag
      Add disable-static libtool flag
      [API] Add version macros and functions
      [API] Add hb_language_get_default()
      Add note re deadlocks
      Remove unused hb_blob_try_writable_inplace()
      [TODO] Update
      Add -Bsymbolic-functions to linker flags
      [API] Simplify blob API, remove lock
      [test] Test blob API
      [test/blob] Add create_sub_blob()
      [test/blob] Fix bug in test
      Add DOAP file
      [test/object] Test user_data with destroy() callback that calls user_data
      [test] Always initialize gthread such that our mutex() stuff is tested
      Fix set implementation to be truly threadsafe even with destroy() callbacks
      Remove duplicate atomic_int implementation
      Fix build without mutex
      Add hb_font_make/is_immutable()
      [API] Remove broken-by-design hb_font_unset_funcs()
      [font] Fix internal sign of x/y_scale
      [API] Add hb_font_create_sub_font() and hb_font_get_parent()
      [API] Remove font_funcs func getter functions
      Whitespace
      [API] Pass down closure user_data to font funcs
      Make default font-funcs chain-up to the parent
      Remove hb_ot_layout_context_t, simplify code
      Minor
      [font] Do user-space conversion when chaining up to parent font
      [API] Change signature of get_contour_point and get_kerning ffuncs
      Minor
      Add maxp table
      Minor
      [unicode] Simplify method setting
      Plug leaks
      Plug more leaks
      Minor
      [API] Add HB_UNTAG()
      [API] Add hb_*_get_empty() for all objects
      [TODO] Update
      [test] Add tests for _get_empty() funcs
      Remove unused hb_mutex_trylock()
      Streamline mutex stuff
      Free static mutex'es
      Fix compile with no mutex available
      Minor
      Use constructor/destructor for hb_ot_shape_plan_t
      Remove hb_static_threadsafe_set_t
      Remove unused hb_set_t
      [API] Add hb_ot_layout_substitute_start/finish()
      [API] Rename hb_face_create_for_data() to hb_face_create()
      [test/font] Start adding tests for hb-font.h
      [test/font] Add test_font_properties()
      [test/font] Test get_face() / get_parent()
      [test/font] More get_empty() tests
      [test/font] More tests
      [test/font] More tests
      [API] Remove const from font user_data
      [API] Pass face to get_table()
      [test/font] Test more
      [test/font] Test empty funcs
      [test/font] Test font_funcs subclassing
      Fix font subclass chainup
      [TODO] Update
      [object] Make object inert during destruction
      [test/shape] Add simplest test for hb_shape()
      [test/blob] Use MAP_ANON instead of MAP_ANONYMOUS
      [test] Add test-shape.c.  Oops
      Rename get_kernings() arguments from first/second_glyph to left/right_glyph
      [test/shape] Check shape output
      [API] Make get_glyph() callback return a boolean
      Finish off previous change
      [API] Add hb_face_make/is_immutable()
      [TODO] Add items
      [test/test-ot-tag] Test hb-ot-tag.h, fix many bugs
      [API] Add HB_LANGUAGE_INVALID
      [test/ot-tag] More tests
      [test/buffer] Add more tests for nil buffer
      Minor
      [hb-view] No need to allocate an extra glyph item at the end
      [hb-view] Start work on vertical support
      Remove unnecessary TODO item
      Cosmetic
      Check for mmap()
      Minor
      [API] Add support for vertical text
      [API] Vertical support, take 2
      Minor
      Cosmetic
      Vertical: Adjust origin in glyph_extents() and glyph_contour_point()
      [hb-view] Add --annotate
      More vertical
      [Vertical] GPOS is always done with horizontal origin
      [Vertical] Do fallback origin calculation
      [Vertical] Fix GPOS y-advance direction
      [Vertical] GPOS x/y advance adjustments only apply in hori/vert respectively
      [TODO] Update
      [Vertical] fix vertical gpos
      [test] Update to API changes
      [API] One last font-funcs API change
      [TODO] Add item
      Update README, etc
      Add libtool versioning
      [test/version] Test hb-version.h
      [test] Add test-symbols that checks API symbol text coverage
      [test] Switch to automake-based test-runner
      [test/unicode] Fix double-free
      Hide internal symbols
      [test] Rename test-symbols to check-symbols
      [test-common] Test hb_direction_to_string()
      Release 0.6.0.  First official tarball release!
      Bump version to 0.7.0 to open up for development
      Minor
      [test] Rename valgrind-log to log-vaglring.txt
      [configure] Generate sha256sum and GPG-sign it
      Add check-includes.sh
      Minor
      [TODO] Add item
      Minor
      [OT] Separate map_builder from the actual map
      Shrink code size
      Fixed inifinite loop introduced in 7403e055cd1463f
      Fix TTC header handling
      [hb-view] Add --face-index to choose a face in a TrueType Collection
      [Vertical] Apply vertical features
      [TODO] New items
      Minor rename
      Update to ArabicShaping-6.1.0d2.txt
      Minor
      [Indic] Start an Indic shaper
      Minor
      More Indic data shuffling
      GNOME Bug 652227 - Unconditional use of stdint.h
      Cosmetic
      Remove extra semicolon
      Fix compiler warnings with -pedantic
      Change a couple strstr() to strchr()
      Minor compiler warning fixes
      Better categorize Indic character classes
      [indic] Add syllable recognition state machine
      [Indic] Some of the basic features are global;  Mark them so
      [Indic] Add a table of consonant positions
      [Indic] Define indic_position_t
      [test] Add Indic tests from harfbuzz.old
      [Indic] Generate a single data table instead of multiple ones
      [Indic] Optimize Indic table storage
      [test] Restructure shape test data a bit
      [test] Remove disabled code
      Minor
      Minor
      [test] Name tests after their input string
      [test-shape-complex] Print out expected and actual glyphstrings upon failure
      [test-shape-complex] Remove the greek tests
      [Indic] Well, at least finding syllables works now :)
      Minor
      Fix reverse_range() position loop
      Add todo
      Shuffle code around
      Enable applying GSUB/GPOS features in multiple segments
      Refactor some code common to GSUB and GPOS
      Update copyright headers
      Minor, use function typedefs
      Shuffle code around, remove shape_plan from complex shapers
      Minor
      More code shuffling
      Humm, undo some shuffling
      More code generation through preprocessor
      [API] Add compose() and decompose() unicode funcs, rename other ones
      Let shapers decide when to apply ccmp and locl
      Distribute hb-ot-shape-complex-indic-machine.rl
      [test] Work around glib <= 2.30 API
      Minor
      [glib] Add compose() and decompose() implementations with fallback
      [glib] Use g_unicode_script_to/from_iso15924() if available
      Minor
      Add tests for compose()/decompose()
      [icu] Implement compose()/decompose()
      Minor
      Rename HB_UNICODE_GENERAL_CATEGORY_COMBINING_MARK to HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK
      When forming clusters, participate all mark types
      Fix cluster calculation for non-LTR text
      Include variation-selectors in cluster calculation
      Towards normalization
      Add _hb_buffer_output_glyph() and _hb_buffer_skip_glyph()
      Form clusters before ensuring native direciton
      Remove stale comment
      s/COMBINING_MARK/SPACING_MARK/ here too.  Oops!
      Towards normalization
      Only form clusters if we are reversing
      No need to handle variation-selectors seperately, they are GC=Mn
      Remove intermittent_glyph()
      More kicking
      Add prefer_decomposed() complex-shaper callback
      Document normalization design
      Fix decompose() implementations to work with non-starter non-composables
      More normalization kick
      Move buffer methods into the object
      Decomposition works now!
      Implement Unicode Canonical Reordering Algorithm
      Handle singleton decompositions
      Implement the Unicode Canonical Composition algorithm
      Keep Unicode props updated as we go so we avoid a scan later
      Minor
      Shrink space used for ligature ids
      Move code around
      Start cleaning up buffer var allocation
      Add internal API for buffer var allocation
      Minor, fix leak from my previous refactorings
      Add sugar syntax for debug messages
      Use variadic macros for debugging
      Streamline debugging infrastructure even more
      Move more code around
      Formalize buffer var allocations
      Oops.  This should have gone into the previous commit
      Register buffer vars in Indic shaper
      Minor
      Minor
      [Indic] Apply Indic features
      Minor
      Bug 39686 - Add '-no-undefined' to libharfbuzz LDFLAGS
      [Indic] Reorder matras
      [Indic] Categorize Ra in scripts that have Reph
      Minor
      [Indic] Handle initial Ra+Halant in scripts that support Reph
      [test] Fix problem with N'ko test direction
      Minor
      [OT] Save chosen script tag
      [Indic] For old-style Indic tables, move Halant around
      Cosmetic
      Minor
      Un-Ra U+09F1.  According to the test suite this is correct.
      [Indic] Suppress reph formation upon joiners
      [Indic] Support ZWJ/ZWNJ
      [Indic] Fix reph inhibition logic
      [Indic] Ra is a consonant too
      [Indic] Handle Reph when determining base consonant
      [Indic] Add Final Reordering rules into comments
      [Indic] Fix ZWJ/ZWNJ application
      Cosmetic
      [Indic] Stop looking for base upon seeing joiners
      [Indic] Disable CJCT-disabling logic
      Use missing script for calling ragel
      Bug 39702 - configure check for ragel
      Add mingw32 support
      Bug 39763 - autogen.sh should check pkg-config availability
      Unbreak icu-config results a bit
      Don't use icu-config when cross-compiling
      Minor
      Fix build with glib but not freetype
      Minor
      Fix fallback shaping
      [API] Add hb_face_get_blob()
      Minor
      Add internal hb_buffer_t::get_scratch_buffer()
      Minor
      Add draft experimental Uniscribe backend
      Fix typo
      Minor
      Minor
      Fix out-of-tree build
      More out-of-tree build fixes
      More build fixes
      Zero map objects
      Remove C++ guards from source files
      Make test.cc do something more useful
      [API] Changes to main shape API
      Change hb_shape() API back to what it was, add hb_shape_full()
      Change hb_shape() API back to what it was, add hb_shape_full()
      Fix env parsing code
      Free all static memory upon exit
      Minor
      Add hb_shape_list_shapers()
      Fix check on OS X sh
      Skip tests by returning 77
      Start implementing the 'name' table
      [uniscribe] Make font selection work
      [uniscribe] Use font size directly
      Fix name-table lookup
      [buffer] Accept -1 for text_length and item_length
      [glib] Protect against invalid characters
      [uniscribe] Fix shaper
      Minor
      [uniscribe] Fix cluster calculation
      [test] test-object is not FreeType-specific, move it to the right place
      Fix shaper_list manipulation, aaaaaaaaaaaaargh
      [uniscribe] Fix blob lifecycles
      Minor
      Fix shaper ordering logic
      Rename get_table to reference_table in all API
      [API] Sort out get_blob API
      Fix build
      [uniscribe] Cleanup backend
      Minor
      [FT] Adapt to new face API
      [buffer] Make API take signed int length
      [API] Make set_user_data() functions take a replace parameter
      Fix build again
      [uniscribe] Unbreak
      Minor
      [API] Add hb_ft_font_set_funcs(), remove hb_ft_get_font_funcs()
      [FT] Don't make font immutable
      Add fallback shaper
      Minor
      Fix warnings with old glib
      [test/shape-complex] Print cluster and position info in --verbose
      [uniscribe] Remove zerowidth glyphs from output
      Move hb-view into util/
      [util] Port hb-view to GOption
      Reformat
      Fix const correctness in the API
      [util] Add hb-shape --shapers
      Fix charset conversion
      Implement hb_ft_font_get_face
      Add uniscribe font getters
      Refactor hb-view code
      Minor
      Fix missing return
      Start adding gobject-introspection support
      Apply 'locl' with 'ccmp' in Arabic shaper
      [ft] FT_Select_Charmap() when we create face
      Minor
      Pre-allocate buffers when adding string
      Fix falloffs of the GOption conversion
      [ft] FT_Get_Advance() for advance-width callbacks
      Rename table files from eg maxp-private.hh to maxp-table.hh
      Add hhea-table support
      Fix name-table sanitize
      Do (nothing for) hmtx sanitize
      Remove the pre_allocate argument from hb_buffer_create()
      [API] Add hb_font_set_funcs_data()
      Flesh out tt funcs a bit
      Add gobject enum support, but disabled for now
      Add a constructor for hb_prealloced_array_t
      Minor
      Add graphite2 integration from Martin Hosken
      [graphite] Remove hb_graphite2_feature_check()
      [graphite] Minor
      [uniscribe] Minor
      [configure] Fix graphite bits
      Minor
      [graphite] Rewrite properly
      Add hb-ot-hmtx-table.hh
      Fix make distcheck
      Reorder combining-class to better suit Arabic shadda mark-mark positioning
      [graphite2] Bail if grface is NULL
      [API] Make all _from_string() functions take a len parameter
      [graphite] Only pass the first part language tag to graphite
      Minor
      Add buffer->replace_glyphs()
      [graphite] Use buffer->replace_glyphs()
      Minor
      [graphite2] Chop a few more lines
      Minor
      [graphite] Don't preload glyphs
      Pass through unknown ISO 639-3 language tags to OpenType engine
      Refine Indic scripts, following Martin Hosken's recommendation
      [util] Further refactor option parsing
      [util] Move code around
      Minor
      [util] Move code around
      [util] Simplify more
      More reshuffling
      [util] Refactor hb-view completely
      Fix test
      Minor
      [hb-view] Make print to stdout work in Windows
      Minor
      Fix binary stdin/stdout io in Windows
      Minor
      Always shape at size=upem
      Move code around
      Fix reading text from stdin
      Minor
      Minor
      TODO items
      Minor
      [util] Fix hb-view crash with bogus font
      Cosmetic
      Fix "[util] Fix hb-view crash with bogus font."
      Fix Linux build when io.h is available
      [util] Move font-size into view-options
      [uniscribe] Various improvements
      [util] If no text is provided, simply call cairo_show_glyphs()
      Minor
      [util] Add hb-shape utility
      Fix dist
      Really fix build this time
      Minor
      [util] Rename --output to --output_file, and --format to --output-format
      [util] Account for line-space in surface size
      [graphite] Add note about graphite shaker brokenness
      Rewrite ICU detection code with in-house macros
      [util] Add hb-diff
      Whitespace
      [util] Fix option parsing
      hb-shape: In --no-glyph-names, output glyph number directly
      Fix possible leaks
      Minor
      [util] s/%d/%u/ when printing glyph ids and clusters
      Fix GSUB lookuptype 1 subtype 1 delta wrapping
      Add TODO item
      Add comments
      Make test-c.c actually use hb
      [util] Add --list-shapers to hb-view and hb-shape
      Fix infinite loop in normalization code with variation selectors
      Fix intrin.h b0rkage with older MSVC
      Minor
      Allow space in one more place when parsing features
      [icu] Remove glib-ism
      Disable gtk-doc macro
      Require glib >= 2.16 for the gobject option
      Avoid enum trailing commas
      [GSUB/GPOS] Fix mark skip indexing issues
      Minor
      Refactor mark skipping
      Fix mark skipping regression
      Further mark skippy fixes from Jonathan Kew
      Refactor the two remaining uses of _hb_ot_layout_skip_mark()
      Fix more possible buffer overruns
      Fix OOB in replace_glyph()
      Add test for bug in ICU decompose
      Replace u_strlen() with u_countChar32()
      [icu] Use U_FAILURE
      [util] Add --help-features
      [test] Add two Indic test cases from Bernard Massot
      Fix OOB in hb-shape
      [hb-shape] Add --show-text and --show-unicode options
      [hb-shape] Add --show-line-num
      [hb-diff] Clean up
      Remove src/test.cc
      Rename test/ to test/api/
      Minor
      Start adding new shaping test suite together
      [test/shaping] Add hb-update-manifests
      More Indic tests from Pravin
      [hb-shape] Change glyphstring brackets from </> to [/]
      Ignore AUTHORS also
      [test/shaping] Add hb-read-manifest
      [test/shaping] Add hb-unicode-prettyname
      [test] Make hb-unicode-prettyname take a --stdin option
      Recognize more characters
      Minor
      Add hb-unicode-decode
      Move hb-diff to test/shaping/
      Fix
      [test/shaping] Add some Indic test data for the new test suite
      Minor
      Minor
      Move
      Add hb-diff-filter-failures
      [hb-shape] Add parantheses around --show-text output
      Add hb-unicode-encode
      Remove test-shape-complex
      Move most testing logic into hb_test_tools.py
      Make test tools interactive
      Fix Unicode encoding issue
      Import test data from late test-shape-complex
      Add Tamil test data from Muguntharaj Subramanian
      Add Punjabi tests from test-shape-complex also
      Add final residues from test-shape-complex
      Port hb-manifest-read to Python
      Misc fixes
      Correctly print out Unicode strings
      [util] Make clusters work with char offset instead of UTF-8 offset
      Ignore Broken Pipe errors
      Port hb-manifest-update to Python
      Cleanup manifest code
      Speed up colorless diff
      Distribute testing tools
      Cleanup
      More shoveling around
      Fallback to Latin script if the font has no other usable scripts
      Allow --color=html in hb-diff
      Remove newline
      Also ignore "ChangeLog" in manifests
      Add Devanagari test from Tom Hacohen
      Add a couple Thai test cases from Thep
      Add a few more tests
      Minor
      Fix check-header-guards on OS X
      Make checks more OS X friendly
      Update git.mk to new upstream
      Minor error handling
      Add test case from https://bugzilla.mozilla.org/show_bug.cgi?id=714067
      Reorder Hebrew combining classes for better rendering
      Followup: Reorder Hebrew combining classes for better rendering
      Minor
      Allow disabling multi-threaded support
      Add hb-warning.cc.  Oops!
      Remove unused hb_atomic_int_set()
      Add support for atomic int and mutex on Apple systems
      Fix atomic-int op on Apple
      Fix cluster formation in Indic
      Add Hebrew diacritics test cases
      Minor doc fixes
      Typo
      Update Indic table to Unicode 6.1 data
      Use generic shaper for Buhid
      Whitespace
      Lydian and Kharoshthi are right-to-left
      Add Unicode 6.1.0 scripts
      Route three Unicode 6.1 scripts through Indic shaper
      Separate Unicode 3.1 and Unicode 3.2 additions
      Make src tests pass again
      More Unicode script age annotation, and a couple more RTL scripts
      Minor
      More sorting by Unicode version
      Move code around
      More moving code around
      Add normalize mode
      Add Hangul test case
      Flip logic around
      Bring normalization algorithm closer to the spec
      Implement normalization mode HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_FULL
      Add simple Hangul shaper that recomposes Jamo when feasible
      Move code around, in prep for Thai/Lao shaper
      Move around
      Add Thai test case for SARA AM decomposition
      Minor
      Add Thai shaper that does SARA AM decomposition / reordering
      Generate fallback Arabic shaping table
      Do Arabic fallback shaping
      Implement Arabic fallback shaping mandatory ligatures
      Minor
      In Arabic fallback shaping, check that the font has glyph for new char
      Fix build with some compilers
      Fix shape to presentation forms font check
      Don't create hb_apply_context_t per glyph!
      Fix diff tool
      Add Hangul test
      Update TODO
      [hangul] Apply *jmo features to all Hangul chars
      Adjust TODO
      Fix left-matra positioning in Indic
      Add Mongolian test case
      Minor
      Fix bug with not setting Unicode props of the first character
      Minor
      Make it an error to include non-top-level headers
      Add names to enums
      Hide backend-specific shape functions
      Fix hb-view surface size calc for vertical text
      Minor
      Make HB_DIRECTION_INVALID be zero
      Minor
      Remove public enum names again
      Add HB_DIRECTION_IS_VALID
      Add assert
      Minor
      Move code around
      Minor
      Add comment
      Add Japanese test data from Adobe's Kazuraki font ligatures
      Apply 'liga' for vertical writing mode too
      Make page progression be right to left for vertical text
      Always use cairo_show_text_glyphs()
      Add --utf8-clusters
      Rewrite ragel expression to better match the one on MS spec
      Fix ragel regexp in vowel-based syllable
      Add another Thai test
      Fix leak in graphite
      Minor note re Graphite
      Make font immutable in hb_shape()
      Minor
      Add GSUB "would_apply" API
      Minor matra renumbering
      Add Indic inspection tool
      Add Coverage iterators
      Add "closure" operation stubs to GSUB
      Minor refactoring
      Minor
      Fix Coverage iters
      Flesh out closure() for GSUB
      Implement closure() for Context and ChainContext lookups
      Add map->substitute_closure()
      Minor
      Improve clustering
      Rename hb_glyph_map_t to hb_set_t
      Update copyright headers
      Add hb_set_t
      Make closure() return void
      Add a few more set operations
      Add test caes for a minority language using Bengali
      Minor
      Minor
      Add hb_ot_shape_glyphs_closure()
      Minor
      Fix warning and build issues
      More tests
      Make hb-diff faster
      Cleanup diff
      Add hb-diff-colorize
      Make hb-diff-filter-failtures retain all test info for failed tests
      Add hb-diff-stat
      Use groupby()
      Add N-gram generator
      Add hb-diff-ngrams
      [indic] Apply rakaar forms
      [indic] Apply Indic features in order
      Minor
      [indic] Better Reph matching
      Minor
      Minor
      [indic] Keep the syllable modifier marks to the right
      Replace zerowidth invisible chars with a zero-advance space glyph
      [Indic] Keep Vedic signs at the right too
      [Indic] Make sure Reph jumps over all matras to the right
      [Indic] Add joiner test cases for Devanagari
      [Indic] Categorize Anudatta
      [Indic] Improve matra vs consonant ordering
      [Indic] Make room for more reordering positions
      Minor
      Combine lig_id and lig_comp into one byte, to free up one for Indic
      [Indic] Towards multi-cluster syllables and final reordering
      [Indic] Don't give up syllable parsing upon junk
      Fix Uniscribe clusters with multiple items
      [Indic] Don't return for long syllables.  Just not sort.
      [Indic] Adjust base after sorting
      [Indic] Increase max syllable length
      [Indic] Don't form Reph is Ra is the only consonant in the syllable
      [Indic] Simplify Reph logic
      [Indic] Handle Vowel syllables
      [Indic] Minor
      [Indic] Treat the standalone cluster case reusing the consonant logic
      [Indic] Reorder left matras to be closer to base
      Minor
      [Indic] Do Reph repositioning in final reordering like the spec says
      [Indic] Add tricky reordering test cases
      [Indic] Improve Left Matra repositioning
      [Indic] Don't clear the mask for Reph
      [Indic] Reorder Reph to before the Halant after Matras
      [Indic] Add test for matra group
      [Indic] Do clustering like Uniscribe does
      [Indic] Add note re Uniscribe clusters
      [Indic] Add Ra back for scripts without Reph
      [Indic] Towards better Reph positioning
      Better trace message support infrastructure
      Minor
      More massaging trace messaging
      Beautify debug output
      Code reshuffling
      Minor
      Annotate SANITIZE return values
      /Minor/
      Add return annotation for APPLY
      Minor
      Only printout class name in tracing, if one is available
      Only print class name in debug output if there's one available
      Finish off debug output beautification
      More beauty in debug output!
      Some more...
      Minor
      Make APPLY debug output print current index and codepoint
      [Indic] Fix bitops typo!
      [Indic] Disable conjuncts when a ZWJ happens
      [Indic] Move syllable tracking from Indic to generic layer
      [Indic] Fix state machine to backtrack
      [Indic] Apply Reph mask to all POS_REPH glyphs
      [GSUB/GPOS] Check all glyph masks when matching input
      [Indic] Add test for Left Matra with Halant
      Minor
      [Indic] Fix Left Matra + Halant reordering
      [Indic] Add #define UNISCRIBE_BUG_COMPATIBLE 1
      [Indic] Add runtime Uniscribe bug compatibility mode!
      [Indic] Add example of different Uniscribe behavior
      [Indic] Implement Uniscribe Reph+Matra+Halant bug feature
      [Indic] Don't use syllable serial value 0
      [GSUB/GPOS] Fix wrong buffer access in backward skippy mask matching
      [GSUB/GPOS/Indic] Apply GSUB/GPOS within syllables only
      [Indic] Treat U+0951..U+0954 all similar to U+0952
      [Indic] Fix U+0952 and similar classification to match Uniscribe
      [Indic] Allow two Nuktas per consonant
      [Indic] Allow multiple Consonants in Vowel/NBSP syllables
      Minor
      [Indic] Refactoring
      [Indic] Add tests for dottedcircle
      [Indic] Add Uniscribe bug feature for dotted circle
      [Indic] Refactor for the arrival of 'init' feature
      [Indic] Apply 'init' feature for Bengali
      [Indic] Start categorizing Reph per script
      [Indic] Position Bengali Reph before matras
      [Indic] Disambiguate sub vs post vs above matras
      [Indic] Unbreak Devanagari
      Fix compiler warnings
      [Indic] Add more Malayalam tests
      [test] Make tool usage easier by not requiring "--stdin"
      Fix compiler warnings
      [util] Change default font size of hb-view to 256
      [util] Make tools default to stdin if no text is provided
      Minor
      [util] Make hb-view print out Unicode art if stdout is a terminal
      Reduce default margin
      [util] Set ansi color only on color change
      Remove ioctl checks
      Minor
      [GSUB/GPOS] Remove context_length
      Minor
      Add accessort to buffer for current info, current pos, and prev info
      Minor
      Fix warnings
      Fix hb_face_set_index()
      Fix more unused-var warnings
      Fix more warnings
      Revert "[Indic] Refactoring"
      Refactor
      Minor
      [Indic] Apply vatu feature after cjct
      [util] Refactor to accommodate for upcoming new tool
      [util] Add hb-ot-shape-closure tool
      Update TODO
      Move atomic ops into their own header
      Prefer native atomic/mutex ops to glib's
      Don't use min/max as function names
      Fix type conflicts on Windows without glib
      Add hb_atomic_int_set() again
      Minor
      Implement hb_atomic_int_set() for OS X
      Add a lock-free cache type for int->int functions
      Add CJK Compatibility Ideographs tests
      Fix substitution glyph class propagation
      Add Arabic diacritics tests
      Update TODO
      Fix hb_atomic_int_set() implementation for HB_NO_MT
      Minor
      Add set symmetric difference
      Add set iterator
      [util] Add hidden --shaper that is equivalent of --shapers
      Fix Windows atomic get/set
      Minor
      Don't use atomic ops in hb_cache_t
      Cleanup atomic ops on OS X
      Warn if no Unicode functions implementation is found
      Add hb_font_get_glyph_name() and hb_font_get_glyph_from_name()
      Add Myanmar test case
      Minor Malayalam test case
      Remove hb_atomic_int_set/get()
      Remove unused variable
      Remove tab character like other "zero-width" characters
      [util] Make hb-shape continue shaping other lines if shapers failed
      [util] Minor
      Minor
      Remove const from ref_count.ref_count
      Remove comma at the end of enum
      Add --verbose to hb-shape
      s/script-punjabi/script-gurmukhi/
      Fix warnings
      Check for atexit()
      Remove constructor from hb_prealloced_array_t
      Better hide nil objects and make them const
      Remove static initializers from indic
      Add a mutex to object header
      Add gcc implementation for atomic ops
      Add gcc intrinsics implementations for atomic and mutex
      Add atomic-pointer functions
      Implement lock-free hb_language_t
      Undo default unicode-funcs to avoid static initializer again
      Make hb-ft static-initializer free
      Make hb-view err if all shapers failed
      Remove last static initializer
      Shuffle
      Add configure tests for Intel atomic intrinsics
      Fix inert buffer set_length() with zero
      Cleanup TRUE/FALSE vs true/false
      Disable Intel atomic ops on mingw32
      Remove unused hb_static_mutex_t
      Don't link to libstdc++
      Add macros to check that types are POD
      Add ASSERT_POD for most objects
      Enabled ICU again
      Fix ASSERT_POD on clang
      Minor
      Fix warnings
      Fix warnings produced by clang analyzer
      Fix clang warning with NO_MT path
      Fix alignment-requirement missmatch
      Add note re _NullPool
      Make Uniscribe backend respect selected script
      Override direction in Uniscribe backend
      Unbreak Uniscribe
      Really fix override-direction in Uniscribe
      Fix Uniscribe clusters with direction-overriden Arabic
      Whitespace
      Fix regressions introduced by sed.  Ouch!
      Remove zero-width chars in the fallback shaper too
      Remove unused code
      Fix Uniscribe charset matching
      Increase Uniscribe MAX_ITEMS
      Minor
      Minor, use next_glyph()
      Merge clusters when ligating
      When merging clusters, extend the end
      Clear output buffer before calling GSUB pause functions
      Extend clusters backwards, into the out-buffer too
      Extend clusters backward in out-buffer
      Extend end when merging clusters in out-buffer
      Extend into main buffer if extension hit end of out-buffer merging clusters
      Minor
      Use merge_clusters when forming Unicode clusters
      Use merge_clusters instead of open-coding
      Minor
      Merge clusters during normalization
      Remove done TODO items
      Minor
      Add test for static initializers and other C++ stuff
      Minor
      Don't use replace_glyphs_be for MultipleSubst
      Remove unused buffer->replace_glyphs_be16
      Set lig_comp for MultipleSubst components
      In MarkBase attachment, only attach to first of a MultipleSubst sequence
      Minor
      Minor.  Hide _hb_ot_layout_get_glyph_property()
      Minor
      Use linear search for small counts
      Minor
      Micro-optimize
      Fix cache implementation
      Minor
      Minor
      Add set add_coverage() to Coverage()
      Match input before backtrack
      Add fast-path to GSUB to check coverage
      Add fast-path for GPOS too
      Add sanitize() logic for fast-paths
      Minor
      Oops!
      More Oops!  Fix fast-path with sub-type==0
      Ugh
      Add hb_object_lock/unlock()
      Minor
      Add TODO item
      Flesh out gobject-introspection stuff a bit
      Make source more digestable for gobject-introspection
      g_thread_init() is deprecated
      GStaticMutex is deprecated
      Minor
      Disable introspection again
      Use octal-escaped UTF-8 characters instead of plain text
      Fix check for Intel atomic ops
      Add TODO item
      Minor
      Minor
      Towards templatizing common Lookup types
      Update git.mk to upstream
      Fix build with no Unicode funcs implementations provided
      Bump WINNT version requested from 500 to 600
      Revert "Towards templatizing common Lookup types"
      [ft] Use unfitted kerning if x_ppem is zero
      [ft] Disable ppem setting
      Fix _InterlockedCompareExchangePointer on x86
      Minor
      Make hb_in_range() static
      Check for exported weak symbols
      Don't export inline methods
      Allow overriding HB_BEGIN_DECLS / HB_END_DECLS
      Make sure HB_BEGIN_DECLS / HB_END_DECLS is only used in public headers
      Add -Wcast-align
      Minor
      Further simplify atomic ops on Visual Studio
      [Indic] Apply Above Forms
      [GSUB] Allow 1-to-1 ligature substitutions!
      [Indic] Adjust position for split matras
      Split matras without a Unicode decomposition
      [Indic] Categorize Khmer consonants
      [Indic] Reorder virama only for old Indic spec
      Minor
      Minor
      [Indic] Minor
      [Indic] Apply 'pref' to pre-base reodering Ra
      [Indic] Implement After-Main Reph positioning
      [Indic] Rename
      [Indic] Start implementing pre-base reordering
      [Indic] Rename
      [Indic] Reoder pre-base reordering Ra
      [Indic] Categorize Khmer Ro
      [GSUB/GDEF] Guess glyph classes after substitution only if no GDEF
      [Indic] Recognizer Register Shifter marks
      [Indic] Recognize pre-base reordering Ra anywhere in the syllable
      [Indic] Categorize other Khmer marks
      Allow complex shapers overriding common features
      [Indic] Disable 'kern' in Uniscribe bug compatibility mode
      Minor
      [test/arabic] Add Arabic tests for mark skipping
      Fix MarkAttachmentType matching
      [Indic] Apply presentation-forms features all at once
      [Indic] Move Halant with after-base consonants
      [Indic] Add a separate Coeng class
      [Indic] Recategorize Khmer coeng sign as a separate category OT_Coeng
      [Indic] Position final subjoined consonants (and vowels) after matras
      [Indic] Apply 'cfar' for Khmer
      [Indic] Minor
      [Indic] Treat Khmer Register Shifters more like Nuktas
      [Indic] For scripts without Half forms, always choose first consonant as base
      [Indic] Minor
      Add hb_buffer_normalize_glyphs() and hb-shape --normalize-glyphs
      [Indic] Better categorize Register Shifters and Khmer Various signs
      [Indic] Position Khmer Robat
      [Indic] Unbreak Tamil
      [Indic] Minor
      [Indic] Hopefully minor!
      [Indic] Minor
      [Indic] Streamline halant/joiner in grammar
      [Indic] Allow halant group in Vowel and placeholder syllables
      [Indic] Allow joiners before matras
      [Indic] Fix out-of-bounds array access
      Leave one extra item at the end of buffer allocation
      [Indic] Fix Matra reordering when base is at end of syllable
      [Indic] Minor
      [Indic] Treat Register Shifters like Nukta
      Apply Tibetan (global) features.
      [Indic/Unicode] Decompose Sinhala split matras the way Uniscribe likes
      [Indic] Implement Sinhala "Al Lakuna" Reph behavior
      [Indic] Minor
      [Indic] In final reordering, find base, even if it disappeared
      [Indic] Allow joiners on both sides of Halant at the same time
      [Indic] Accept a forced Rakar sequence at the end of syllable
      [Indic] Disallow decomposition of a couple characters
      [test] Ignore tests with DOTTED CIRCLE in the output
      [Indic] Start refactoring different matra positions per script
      [Indic] Minor
      [Indic] Minor refactoring
      [Indic] More refactoring
      [Indic] Implement per-script matra positioning
      Refactor / finish would_apply() operation
      Add src/test-would-substitute tool
      [TODO] Minor
      [GSUB] Fix would_apply() for LigatureSubst
      [Indic] Lookup consonant position in the font
      [Indic] Better position U+0CD5
      [Indic] Add failing test for Kannada
      [Indic] Apply 'akhn' globally
      [Indic] Unbreak Khmer
      Print line number during return when tracing
      [buffer] Make sure out_info = info during GPOS
      Minor
      [Indic] Recategorize GURMUKHI ADDAK
      [Indic] Recategorize some Kannada right matras
      Minor
      [Indic] Unbreak old scriptures
      [Indic] Apply 'cjct' globally
      [Indic] Don't let ZWNJ at the end of syllable affect base search
      [Indic] Implement reph positioning step 5
      [Indic] Minor
      [GPOS] Don't zero mark advances
      [Indic] Better check for applying 'init'
      [Indic] Break syllables at Halant,ZWNJ
      [Indic] Minor!
      [Indic] Simplify Uniscribe cluster emulation
      [Indic] Don't split U+0AC9
      [Indic] Form Telugu Reph out of Ra,Virama,ZWJ
      Fix compiler warnings
      [Indic] Don't attach SM/VD to other characters
      [Indic] Fix base search in final_reordering
      [Indic] Reposition Oriya Candrabindu
      [Indic] Improve Reph AfterMain positioning
      [Indic] Allow a ZWNJ after SM's
      [Uniscribe] Fix script fallback
      [Indic] Recompose Bengali Ya,Nukta
      [Indic] Stop searching for base if a post form is found before below form
      Add a test case
      [Indic] Add Sinhala tests
      [Indic] Add extensive Sinhala tests
      [Indic] Merge in Malayalam tests
      [Indic] Update clusters for left-matra even if matra didn't move
      [Indic] Merge clusters before sorting
      [Indic] Further streamline cluster formation
      [Indic] Fix cluster formation with left-matras and conjunct forms
      [Thai] Adjust SARA AM reordering to match Uniscribe
      [Thai] Reorder U+0E3A THAI VOWEL SIGN PHINTHU
      [Thai] Fix SARA AM handling
      [Indic] Limit syllables to at most five consonants
      [Indic] Remove syllable length check before sorting
      [Indic] Minor refactoring
      [GSUB/GPOS] Const correctness
      [Indic] exclude ligatures when matching on Indic category
      [Indic] Improve check on ligatures
      Minor refactoring
      When removing zero-width marks, don't remove ligatures
      [Indic] Change "unknown" position to end of syllable
      [Indic] Improve Sinhala base algorithm and reph positioning
      [Indic] End Vowel-based syllable at ZWJ
      [Indic] Further adjust base algorithm for Sinhala
      [Indic] In Sinhala, form forced Reph even if no other consonant found
      [Indic] Don't reposition Khmer Bindu
      [Indic] Position Khmer U+17CE
      [Indic] Fix minor bug in pre-base Ra positioning
      [Indic] Reposition Khmer prebase-reordering Ra around split matras
      [Indic] Recategorize Khmer various signs as top matras
      [Indic] Unmark U+17D1 KHMER SIGN VIRIAM to NOT be a Virama
      [Indic] Limit matras to 4 per syllable
      [Indic] Implement Reph+Ya-Phalaa interaction
      [Indic] Better position left-matra in Malayalam
      [Indic] Ignore Uniscribe output containing two zero-width space glyphs
      [Indic] Reposition Gurmukhi top matras to after post
      Minor const correctness shuffling
      Make data members of various OpenType structs protected instead of private
      [Mongolian] Remove Mongolian Vowel Separator at the end of shaping
      Minor
      [hb-old] Start adding HarfBuzz-old as a new backend
      [hb-old] Rename hb_buffer_* to HB_Buffer_*
      [hb-old] Remove unused header file
      [hb-old] Add visibility attributes
      [hb-old] Shovel out the line-breaking / word-segmentation stuff
      [hb-old] Define Unicode funcs in terms of new HarfBuzz
      [hb-old] Add HarfBuzz.old shaper
      Minor
      [GPOS] Fix MarkMarkPos applied to results of MultipleSubst
      [hb-old] Fix clusters
      [hb-old] Fixup not-enough-space handling
      [hb-old] Fix Arabic cursive positioning
      Minor
      Fix visibility warnings with MinGW32
      Start adding a unified shaper access infrastructure
      Minor
      Start implementing shape_plan
      Switch to shape_plan
      Switch old and uniscribe backends to shape_plan
      Partially switch ot shaper to shape_plan
      Move ot shaper completely to shape_plan
      Choose one shaper per plan
      Add hb_ot_layout_ensure() and hb_uniscribe_font_ensure()
      Don't fail choosing shaper on planning failure
      Add default_shaper_list to shape_plan
      Implement shape_plan caching
      [GSUB/GPOS] Reject Context/ChainContext lookups with zero input
      Reject lookups with no subTable
      [GSUB/GPOS] Add get_coverage() and use it to speed up main loop
      Minor
      [GSUB] Simplify would-apply
      [GSUB] Minor
      [GPOS] Fix mark-to-mark positioning when one of the marks is a ligature
      [Uniscribe] Remove hb_uniscribe_font_ensure()
      Minor
      [Minor]
      [hb-old] Fix cluster formation in RTL
      Add Arabic tests for mark ligature component attachments
      [GSUB] Don't set new lig_id on mark ligatures
      Fixup bb0e4ba3e9c5a407fc5d73c914e429d24d336380
      [GSUB/GPOS] Minor
      [GSUB] Fix mark component stuff when ligatures form ligatures!
      Minor
      Minor
      [GSUB] Don't ligate glyphs attached to different components of ligatures
      [GSUB] Minor
      [GSUB] Further adjustments to mark-attachment vs ligation interaction
      Minor
      [OT] Remove hb_ot_layout_ensure()
      [OT] Gain back some lost speed
      Fix leak
      Don't lock user_data set during destruction if empty
      [hb-old] Fix misc leaks
      Add Hebrew test
      [Indic] Recategorize Telugu length marks
      Unbreak Hangul jamo composition
      Fix build on Mac
      [CoreText] Port to shape_plan infrastructure
      [Uniscribe] Clean up a bit
      [GSUB] Minor
      Minor
      [GSUB] Don't erase glyph classes if GDEF does not have glyph classes
      [GSUB/GPOS] Move glyph props matching around
      Minor
      [OT] Don't crash if no GDEF available
      More refactoring glyph class access
      Minor
      [OT] Streamline complex shaper enumeration
      [buffer] Minor
      Remove unused function
      Implement Unicode compatibility decompositions
      [hb-old] Implement getGlyphMetrics()
      [GSUB] Minor
      [OT] Synthesize glyph classes
      [OT] Zero mark advances if the shaper desires so
      Remove some TODO items
      [GPOS] Adjust mark advance-width zeroing logic
      [old] Implement fontMetrics
      [hb-old] Adjust mark positioning parameters
      Add commentary on the compatibility decomposition in the normalizer
      Add hb_unicode_combining_class_t
      Move unicode accessors around
      Inline Unicode callbacks internally
      Use a lookup table for modified_combining_class
      Inline font getters
      [OT] Templatize Coverage::add_coverage()
      Add hb_set_digest_t
      [GSUB/GPOS] Add add_coverage()
      [GSUB/GPOS] Use Coverage digests as gatekeeper
      [GSUB/GPOS] Remove unused get_coverage() methods
      Use wider set digests on 64-bit archs
      Minor
      Use Coverage digests in would_apply
      [GSUB/GPOS] Check array size before accessing digests
      [Indic] Minor
      [Indic] Streamline feature would_apply()
      [Indic] Rename
      [Indic] Refactor
      [Indic] More refactoring of consonant position peeking in the font
      Minor
      [OT] Hide some API
      [GSUB] Wire the font, not just the face, down to substitute()
      [Indic] Move consonant-position-setting into initial_reordering()
      [OT] Minor refactoring
      [OT] Port complex_shaper to planner/plan
      More massaging
      [OT] Pipe shape_plan down to pause_callbacks
      [OT] Add per-complex-shaper shape_plan data
      [Indic] Move more repeated work into shape_plan
      [Indic] Move more stuff to the shape_plan
      [Indic] Add per-script configuration tables
      Dn't use gint
      [OT] Use general-category, not GDEF class, to decide to zero mark advances
      Fix leak
      Minor
      [Indic] Fix consonant position font lookup logic
      Rewrite ARRAY_LENGTH as a template function
      Enlarge glyph_name buffer
      Speed up hb_set_digest_common_bits_t calcs
      Speed up hb_set_digest_lowest_bits_t calcs
      [Indic] Minor, move 'blwf' after 'half'
      Fix compiler warnings
      Remove unnecessary lifecycle bits
      [Graphite] Port graphite2 backend to new shaper infrastructure
      [Graphite] Fix graphite2 backend with RTL text
      [util] Fix leaks
      Minor
      Remove enum trailing comma
      [Graphite] Minor
      Add Hebrew presentation forms shaping
      Minor refactoring
      More refactoring
      Fix warnings
      [OT] Apply 'rclt' feature in horizontal mode
      Minor
      Add hb_font_glyph_from/to_string
      [GSUB] Generalize would_apply()
      Minor
      [OT] Start adding fallback positioning
      [hb-old] Fix warnings
      [OT] Implement fallback positioning
      Fix cast
      Minor renaming
      Adjust a couple source checks
      Minor
      Minor
      Make default_language threadsafe
      Minor
      Minor
      [hb-old] speed-up build
      Use a export-file for Windows builds
      Misc minor fixes
      Add check-exported-symbols.sh
      Revert "[GSUB/GPOS] Reject Context/ChainContext lookups with zero input"
      Revert "Reject lookups with no subTable"
      Fill out combining class resetting for fallback shaping Thai/Lao/Tibetan
      Minor
      Shuffle buffer variable allocations around
      [OT] More code shuffling around
      [OT] Remove redundant check
      [OT] Avoid calling get_glyph() twice
      Minor
      [OT] Slightly adjust normalizer
      [test] Add Urdu ligature sequences from CRULP
      [test] Move around
      Bump version to 0.9.1

Bradley Grainger (1):
      Fix #pragma message for MSVC.

Darin Adler (1):
      Remove stray semicolon.

Eric Mader (3):
      Add modules modules/indic/indic-xft.c, indic-ot.c, indic-ot.h,
      Don't fail when reading an empty script.
      Correctly handle back, new_advance.

Hans Breuer (3):
      moved pango_fc_* to the latter where they live on *nix too.
      if PANGO_MODULE_PREFIX is defined include the basic backend shaper (should
      updated

Havoc Pennington (1):
      header to abstract the difference between FreeType 2.0.3 and 2.0.4 error

James Henstridge (1):
      make similar changes to the ones on glib head (call gtk-docize, etc).

Javier Jardón (1):
      Bug 31174 - Update autotools configuration

Jeff Muizelaar (2):
      Include the tags from the Apple specification for TrueType fonts
      HB_UNUSED is unneeded on static inline functions

Jonathan Kew (2):
      [CoreText] Add basic Core Text backend for comparison with our native shaping
      [CoreText] Ensure cluster indices in output buffer are non-decreasing.

Manish Singh (1):
      Get rid of unnecessary casts for g_object_{ref,unref}

Martin Hosken (8):
      Rename classes from Grxxx to HbGrxxx
      Rename Grxxx to HbGrxxx
      Add graphical output to hbtestfont
      Merge branch 'master' of git://git.freedesktop.org/~behdad/harfbuzz-ng
      Add fontconfig to hbtestfont
      Tidy up hbtestfont and add README
      hb-graphite now no longer has -ve advances within clusters. Fix infinite loop in tag_to_script(). python fixed to use tag_to_script and allow hbtestfont to be passed font files, where fontconfig knows about them.
      Fixes to Python and Graphite from Martin

Matthias Clasen (2):
      Remove declarations of unimplemented functions
      Add docs.

Owen Taylor (68):
      Since Xft may only be available statically without shlib deps, check for
      Release 0.14
      Remove excess call to DONE_Stream left over from conversion from FT1.
      Use ISO C99 varargs when available.
      Up to 0.19.
      Uncomment GPOS parts.
      In Load_ChainContextSubst2, handle the case where an empty class
      Add compatibility defines for changes in FreeType 2.1.0.
      Fix acess outside of a loaded frame and some memory leaks on failure.
      on Jun  3 18:56:09 2002  Owen Taylor  <otaylor at redhat.com>
      Offset to MarkAttachClassDef is offset to table, not offset to offset to
      Start of merges from freetype1 of OpenType fixes.
      ligatures can be also used in MarkBasePos lookups. (2001-03-17 Werner
      Export TT_New_GDEF_Table to create an empty GDEF table.
      Up the FreeType version requirement to 2.0.9. (2.2.1 had a compilation
      Add an --enable-debug configure argument defaulting to 'yes' for unstable
      Fix infinite loop in the case where the charmap contains a character >
      Fix confusion between boolean and FT_Error return. (#108358, Noah Levitt)
      Fix mispelled constant from last commit.
      When loading in Load_Chain{Sub,Pos}ClassRule, the limit we have only
      More careful handling of face->charmap; if is NULL, try to set a unicode
      Fix uses of g_assert() around statements with side effects. (#115498,
      Improvements to OpenType-dumping code, based on changes in Qt by Lars
      Fix a couple of places where TTO_Err_Not_Covered wasn't considered a
      Add GPOS_LOOKUP_EXTENSION, GSUB_LOOKUP_EXTENSION, which allow lookup
      Update of GPOS and GSUB support to OpenType 1.3 (From FreeType, Werner
      OpenType-1.4 update: backtrack information is stored with the item closest
      Fix some FreeType1 variable declarations that snuck in from the last
      If applying a ligature lookup makes adjacent two glyphs that were not
      Fix additional places where TTO_Err_Not_Covered wasn't considered a
      Fix various memory leaks from error returns that should have been jumps to
      Move allocation afer initial checks, fixing memory leak.
      Fix confusion between boolean and FT_Error return. (GSUB equivalent of fix
      Fix return value to only contain TTO_Err_Not_Covered if *no* lookups
      Check for lookahead glyphs in the right place. (Patch from #116860)
      Revert back out the FreeType patch preventing ligatures of not-originally
      Rewrite handling of IGNORE_SPECIAL_MARKS to be properly "ignore marks of
      Add some macro definitions for gcc-3.3 that suppress the bogus
      pango/opentype/ftxgsub.c (Lookup_ChainContextSubst3) Fix problems where
      Fix gcc-3.3 versions of macros to have the right return value.
      Switch over to recommended Freetype system of include ft2build.h then
      Suport CFF fonts as well. (#131202, Manjunath Sripadarao)
      Memory leak fixes from Masatake YAMATO, #130652
      Sign convention for y offsets is opposite between PangoGlyphString and FT
      Rework opentype interfaces and other changes to make GPOS work for Arabic.
      === Released 1.4.0 ===
      Free buffer->positions, clean up error returns that were returning
      Revert error return changes from last commit.
      Use the gcc-3.3 strict-aliasing compatible macros from fterrcompat.h
      #143693, Sayamindu Dasgupta
      Fix pervasive buffer overruns when skipping glyphs when matching contexts.
      Add support for ChainContextSubstFormat3.
      Make Check_Property() take a OTL_GlyphItem, add a gproperties field to
      Match backtrack context against the output glyphs not the input glyphs
      Add missing macro to make the last change actually compile.
      Remove the unused parameter from the IN_CURITEM() and IN_CURGLYPH macros.
      Fix allocation and indexing in NewGlyphClasses array. (#130661, Masatake
      Save the order in which features were added and use that when applying
      Finish extending properties flags from FT_UShort => FT_UInt. (OTLBuffer
      === Released 1.6.0 ===
      Cleanups from 'sparse', #149922, Kjartan Maraas
      Set G_LOG_DOMAIN.
      For all binary searches, handle the case where the number of items is 0.
      Chain up from finalize. (#307547, Paolo Borelli)
      Fix up places where there is missing or incomplete Copyright and License
      Patch from David Turner. Review and testing by Behdad Esfahbod
      Remove an unecessary set of block2.
      Skip lookups with lookup index out of range. (Patch from Behdad Esfahbod,

Ryan Lortie (3):
      [API} hb_buffer_get_glyph_{infos,positions}: Add length out parameter
      [API] Rename hb_buffer_ensure() to hb_buffer_pre_allocate()
      [API] unicode: rework virtual functions for subclassing

Sebastian Wilhelmi (2):
      Resuming aborted commit
      Do not add GLIB_CFLAGS to CFLAGS.

Theppitak Karoonboonyanan (1):
      Negate y offset according to different conventions between

Tor Lillqvist (4):
      Only a script engine here.
      pango/makefile.mingw.in pango/mini-fribidi/makefile.mingw Remove. Not
      Remove. Not used. (A static library is built here. Exported entries are in
      Rename LDADDS to libpango_ot_la_LIBADD to actually make libpango-ot.la




More information about the HarfBuzz mailing list