HarfBuzz text shaping engine
Go to file
Behdad Esfahbod 69f9fbc420 Synthesize GDEF glyph class for any glyph that does not have one in GDEF
Previously we only synthesized GDEF glyph classes if the glyphClassDef
array in GDEF was null.  This worked well enough, and is indeed what
OpenType requires: "If the font does not include a GlyphClassDef table,
the client must define and maintain this information when using the
GSUB and GPOS tables."  That sentence does not quite make sense since
one needs Unicode properties as well, but is close enough.

However, looks like Arial Unicode as shipped on WinXP, does have GDEF
glyph class array, but defines no classes for Hebrew.  This results
in Hebrew marks not getting their widths zeroed.  So, with this change,
we synthesize glyph class for any glyph that is not specified in the
GDEF glyph class table.  Since, from our point of view, a glyph not
being listed in that table is a font bug, any unwanted consequence of
this change is a font bug :).

Note that we still don't get the same rendering as Uniscribe, since
Uniscribe seems to do fallback positioning as well, even though the
font does have a GPOS table (which does NOT cover Hebrew!).  We are
not going to try to match that though.

Test string for Arial Unicode:

	U+05E9,U+05B8,U+05C1,U+05DC

Before:		[gid1166=3+991|gid1142=0+737|gid5798=0+1434]
After:		[gid1166=3+991|gid1142=0+0|gid5798=0+1434]
Uniscribe:	[gid1166=3+991|gid1142=0@348,0+0|gid5798=0+1434]

Note that our new output matches what we were generating until July
2014, because the Hebrew shaper used to zero mark advances based on
Unicode, NOT GDEF.  That's 9e834e29e0.

Reported by Greg Douglas.
2016-03-17 11:59:43 -07:00
.ci [docs] Minor 2015-12-30 16:25:48 +01:00
docs Update Makefile.am 2016-01-28 12:21:32 -06:00
m4 Add ax_pthread.m4 2012-10-02 14:46:34 -04:00
src Synthesize GDEF glyph class for any glyph that does not have one in GDEF 2016-03-17 11:59:43 -07:00
test [test] Pass closure to hb_font_set_glyph_func() 2016-02-25 11:20:05 +09:00
util build: Move source listings into separate Makefile snippets 2016-02-03 18:14:29 +08:00
win32 [win32] Install git.mk 2016-02-22 15:38:44 +09:00
.travis.yml [travis] Try building on Trusty 2016-01-02 01:16:13 +04:00
AUTHORS Add Roozbeh to AUTHORS 2014-07-01 15:51:54 -04:00
Android.mk [Android.mk] Update with warning flags 2016-02-24 12:30:57 +09:00
BUILD.md build: Support Visual Studio builds using NMake 2016-02-03 18:14:30 +08:00
COPYING Improve license information 2012-10-28 21:26:19 -07:00
Makefile.am [build] git.mk fix for m4/gtk-doc.m4 2016-02-22 15:38:44 +09:00
NEWS 1.2.3 2016-02-25 12:26:26 +09:00
README [README] Add ABI Tracker link 2016-02-10 11:10:08 +07:00
README.md Add README.md symlink to make github happy 2014-10-01 17:45:17 -04:00
README.python [README.python] Add package name for gobject-introspection on Ubuntu 2015-05-04 23:10:32 -07:00
THANKS Bump version to 0.9.2 2012-08-10 14:50:05 -04:00
TODO [TODO] Update 2016-02-24 19:10:06 +09:00
autogen.sh Fix previous commit 2015-03-04 15:47:25 -08:00
configure.ac Merge pull request #232 from c0nk/wip-icu 2016-03-12 19:15:15 -08:00
git.mk Update git.mk from upstream 2015-08-31 19:41:01 +01:00
harfbuzz.doap Minor 2011-05-27 04:14:42 -04:00

README.md

Build Status Coverage Status ABI Tracker

This is HarfBuzz, a text shaping library.

For bug reports, mailing list, and other information please visit:

http://harfbuzz.org/

For license information, see the file COPYING.