History log of /external/harfbuzz_ng/src/hb-ot-layout-private.hh
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
55d42fd667b9c34a1109bb850bf2ea7322c01040 20-Jan-2017 Behdad Esfahbod <behdad@behdad.org> Start adding hb-ot-var.h and implementation

Supports enumerating variation axes, normalizing values, etc.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
1f810daf1640f279c2f7aad8c312664cf2293987 10-Jan-2017 Behdad Esfahbod <behdad@behdad.org> Port math table to hb_lazy_table_loader_t
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
86106c7528d9bff8de6bc3e1487be780c31ea4fd 26-Sep-2016 Behdad Esfahbod <behdad@behdad.org> [MATH] Rename all API to hb_ot_math_*
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
51da7a1cd672aada84bdbb3a2a8dd77ab1134249 25-Aug-2016 Frédéric Wang <fred.wang@free.fr> MATH table: Add API to access math variants.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
5fbcb992bd7887f95b1cf2ca045c9226de8148fc 25-Aug-2016 Frédéric Wang <fred.wang@free.fr> MATH Table: Add API to check availability of math data.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
b20305022a8235b19e6b640bc62651854e1336f1 27-Apr-2016 Behdad Esfahbod <behdad@behdad.org> Do NOT ignore Mongolian Free Variation Selectors during matching

Fixes https://github.com/behdad/harfbuzz/issues/234
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
21ab5501f5f5267d20cf23256866dd9d82a667ef 27-Apr-2016 Behdad Esfahbod <behdad@behdad.org> Move ZWJ/ZWNJ bits to top byte of unicode_props()

To make room to remember Mongolian Free Variation Selectors.
Part of fixing https://github.com/behdad/harfbuzz/issues/234
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
815bdd7700155efcffa9a4c3ca5bfc31833d0586 22-Feb-2016 Behdad Esfahbod <behdad@behdad.org> In cluster-level=0, group ZWJ/ZWNJ with previous cluster

This better emulates Unicode grapheme clusters.

Note that Uniscribe does NOT do this, but should be harmless with most clients,
and improve fallback with clients that use HarfBuzz cluster as unit of fallback.

Fixes https://github.com/behdad/harfbuzz/issues/217
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
aae2847099cbf05bf0668fbe526fc58736837c1b 18-Feb-2016 Behdad Esfahbod <behdad@behdad.org> Emoji skin tone modifiers need to be treated as combining marks

Fixes https://github.com/behdad/harfbuzz/issues/169
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
7d8d58ac81fe267e29ea68cdc6f4a4fa8c22d40f 11-Feb-2016 Behdad Esfahbod <behdad@behdad.org> [GPOS] Divide position_finish() into two phases, for advances and offsets

Right now the position_finish_advances() is empty. To be used for
spacing attachments proposal later.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
2ab0de9fbd03231b647345b01e31b136e2e00978 17-Dec-2015 Behdad Esfahbod <behdad@behdad.org> [use] Fix halant detection

Before, we were just checking the use_category(). This detects as
halant a ligature that had the halant as first glyph (as seen in
NotoSansBalinese.) Change that to use the is_ligated() glyph prop
bit. The font is forming this ligature in ccmp, which is before
the rphf / pref tests. So we need to make sure the "ligated" bit
survives those tests. Since those only check the "substituted" bit,
we now only clear that bit for them and "ligated" survives.

Fixes https://github.com/behdad/harfbuzz/issues/180
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
167c3271778cd1a8c4433b9d2230901ce17c099e 09-Nov-2015 Chun-wei Fan <fanchunwei@src.gnome.org> Fix build on MSVC >= 2012

Use the DEFINE_ENUM_FLAG_OPERATORS macro in winnt.h on Visual Studio,
which defines the bitwise operators for the enumerations that we want to
mark as hb_mark_as_flags_t, which will take care of the situation on newer
Visual Studio (>= 2012), where the build breaks with C2057 errors as the
underlying types of the enumerations is not clear to the compiler when we
do a bitwise op within the declaration of the enumerations themselves.

Also disable the C4200 (nonstandard extension used : zero-sized array in
struct/union) and C4800 ('type' : forcing value to bool 'true' or 'false'
(performance warning)) warnings as the C4200 is the intended scenario and
C4800 is harmless but is so far an unavoidable side effect of using
DEFINE_ENUM_FLAG_OPERATORS.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
e3e4bb011ae1a2f1ba05e7ea450595b185304bec 05-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Don't do fractions if buffer is ASCII-only
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
6986208ba3b395534f4c7bcfa51df6bf9038f717 05-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Optimize runs without Default_Ignorable's

Now that we have a buffer-wide scratch flags facility, use it to
optimize away a few passes.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
aa7044de0ceacd71cab19212d266c3a66c03b41e 05-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Generalize flags types
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
7793aad946e09b53523b30d57de85abd1d15f8b6 04-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Normalize various spaces to space if font doesn't support

This resurrects the space fallback feature, after I disabled
the compatibility decomposition. Now I can release HarfBuzz
again without breaking Pango!

It also remembers which space character it was, such that later
on we can approximate the width of this particular space
character. That part is not implemented yet.

We normalize all GC=Zs chars except for U+1680 OGHA SPACE MARK,
which is better left alone.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
9ac4b9656dd78ffd129bc3d560a92e2692bc3058 04-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Add Unicode space category

Unused so far.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
8249ec3f86510fd24462ce71ed64a6978f0ade17 04-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Make top-byte of unicode_props available to be used differently per-GC
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
cc5d3a33882b52f906ee4346707700f5e846d2ac 04-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Towards using top-byte of unicode-props for more things
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
2f38dde5a1ea5459789fabaee661cae9235d204e 04-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Add _hb_glyph_info_is_unicode_mark()

Unused right now.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
90d75f93bb85aeb627c4e6bb9e4cbd75895c99f7 03-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Tighten ccc-setting a bit and document it
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
ed2024ef93ac3af214082016e5aa8c14db9d7515 03-Nov-2015 Behdad Esfahbod <behdad@behdad.org> [perf] Micro-optimize
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
76a5310a830c7ae12037b768c5043bef0ff733a0 03-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Remove irrelevant comment

I tried moving the is_default_ignorable() function to an INTERNAL
function. That made the binary size grow by 5k AND things got a
tad bit slower!
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
9382c471eabce8d36d3a73c97499ab60af422716 03-Nov-2015 Behdad Esfahbod <behdad@behdad.org> Combine unicode_props0/1 into a uint16

Slightly faster. In prep for more changes.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
71277185454482cff9b0c10b85c416eb4d6e0ed9 03-Nov-2015 Behdad Esfahbod <behdad@behdad.org> [perf] Only call combining_class() for marks

Saves some time. Also preparing for reusing the ccc byte for other stuff.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
df6cb84449a473d540821e41fb5007b59644780f 26-Jul-2015 Behdad Esfahbod <behdad@behdad.org> Merge branch 'use'
0f98fe88f42471eb8fb28d08d45eca9cd8303f7a 23-Jul-2015 Behdad Esfahbod <behdad@behdad.org> [ot] Search globally for 'vert' feature if not found in specified script/lang

Fixes https://github.com/behdad/harfbuzz/issues/63
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
4ba796b26ee62de0d2830a550f3aa3b4aecf6f59 22-Jul-2015 Behdad Esfahbod <behdad@behdad.org> Refactor _hb_glyph_info_is_default_ignorable()
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
ac596511a8c9eeaeb455ca16b5b9c5f1b9923b3a 22-Jul-2015 Behdad Esfahbod <behdad@behdad.org> Add foreach_syllable

Use it in USE.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
595936ec25e9c0924851bd1aa1af5eed3723b54f 21-Jul-2015 Behdad Esfahbod <behdad@behdad.org> [USE] Hook of rphf and pref custom processing

Still no reordering.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
241eac9559465fa79f396570af4e87f455b7e9d5 29-Jan-2015 Behdad Esfahbod <behdad@behdad.org> Hide internals of lookup accelerators
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
395b35903e052aecc97d0807e4f813c64c0d2b0b 29-Dec-2014 Behdad Esfahbod <behdad@behdad.org> Avoid accessing layout tables at face destruction

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

Based on discussion someone else who had a similar issue, most probably
the user is releasing FT_Face before destructing hb_face_t / hb_font_t.
While that's a client bug, and while we can (and should) use FreeType
refcounting to help avoid that, it happens that we were accessing
the table when we didn't really have to. Avoid that.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
8f3eebf7ee4005f9a8efaafcb7f4058cc0a3756e 02-Aug-2014 Behdad Esfahbod <behdad@behdad.org> Make sure gsubgpos buffer vars are available during fallback_position

Add buffer var allocation asserts to a few key places.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
7e8c38954649c0bf2e6051d84ca08dce090ec169 25-Jul-2014 Behdad Esfahbod <behdad@behdad.org> Minor warnings fixes

Some systems insist on -Wmissing-field-initializers. We have too many,
by design. Fix a few easy ones.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
7627100f428ac0ec8509d961d368d2d25d8f0b6e 11-Jul-2014 Behdad Esfahbod <behdad@behdad.org> Mark unsigned integer literals with the u suffix

Simplifies hb_in_range() calls as the type can be inferred.
The rest is obsessiveness, I admit.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
04dc52fa15f5b7f9eb5f448ea43e7ef1b2269e88 06-Jun-2014 Behdad Esfahbod <behdad@behdad.org> [indic] Recover OT_H undergone ligation and multiplication

Sometimes font designers form half/pref/etc consonant forms
unconditionally and then undo that conditionally. Try to
recover the OT_H classification in those cases.

No test number changes expected.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
832a6f99b34f334b1e82b8e3a7ad137e823d203c 04-Jun-2014 Behdad Esfahbod <behdad@behdad.org> [indic] Don't reorder reph/pref if ligature was expanded

Normally if you want to, say, conditionally prevent a 'pref', you
would use blocking contextual matching. Some designers instead
form the 'pref' form, then undo it in context. To detect that
we now also remember glyphs that went through MultipleSubst.

In the only place that this is used, Uniscribe seems to only care
about the "last" transformation between Ligature and Multiple
substitions. Ie. if you ligate, expand, and ligate again, it
moves the pref, but if you ligate and expand it doesn't. That's
why we clear the MULTIPLIED bit when setting LIGATED.

Micro-test added. Test: U+0D2F,0D4D,0D30 with font from:

[1]
https://code.google.com/a/google.com/p/noto-alpha/issues/detail?id=186#c29
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
6faff8e4132197ba06f0e685b82efe35b546cf64 28-Apr-2014 Behdad Esfahbod <behdad@behdad.org> Add static storage classifier to inline functions

Before we were just relying on the compiler inlining them and not
leaving a trace in our public API. Try to fix. Hopefully not
breaking anyone's build.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
2a8c49ade07a0bd4f2c9543f4bd129da82083ea0 12-Dec-2013 Behdad Esfahbod <behdad@behdad.org> Remove unnecessary includes
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0f3fe37fccfb540437adf13dd580f2c5164a0b1f 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> Comment
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
857027341423f15fd6084c7563cc355b06e7cbdd 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Add _hb_glyph_info_substituted()

Currently unused.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
a1f7b2856184959e965c9c2b80363f9f46d486a7 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Switch over from old is_a_ligature() to IS_LIGATED

Impact should be minimal and positive.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
09675a8115b9d77261c33940401aa919cede8662 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Add HB_OT_LAYOUT_GLYPH_PROPS_LIGATED

Currently unused.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
05ad6b50ac0a1b9a8da10d2ee2238068b7811e7d 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Add HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED

Currently unused.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
101303dbf7cf15d044bf2518f14b3aec65970fea 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] More shuffling around
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
91689de2603e4151e2a2d3a3852c61667f0c6264 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Add _hb_glyph_info_set_glyph_props()

No functional change.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
3ddf892b5328b74afb6e7d9da727d8771ca5d288 18-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Renaming
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
2e96d2c6ee34142375373be07217c9953e7822cc 17-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] More shuffling
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
469524692bd0a258b28e63294c984e677a9c2477 17-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Code shuffling
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
11fb16cb849285a178d9e80991b1d60a960326ee 17-Oct-2013 Behdad Esfahbod <behdad@behdad.org> Use unsigned enums for mask types
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
03058c3d1e8c18858c1e0b0c738ce9d299f2787a 17-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Remove two unused HB_OT_LAYOUT_GLYPH_PROPS_* values
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
941b6992042e7b73b3a2aab1448383adf33bef28 17-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Remove unused HB_OT_LAYOUT_GLYPH_PROPS_UNCLASSIFIED
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c52ddab72e025d1bee8274c8f3416208b12f68f1 16-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [arabic] Make ZWJ prevent ligatures instead of facilitating it

Unicode 6.2.0 Section 16.2 / Figure 16.3 says:

"For backward compatibility, between Arabic characters a ZWJ acts just
like the sequence <ZWJ, ZWNJ, ZWJ>, preventing a ligature from forming
instead of requesting the use of a ligature that would not normally be
used. As a result, there is no plain text mechanism for requesting the
use of a ligature in Arabic text."

As such, we flip internal zwj to zwnj flags for GSUB matching, which
means it will block ligation in all features, unless the font
explicitly matches U+200D glyph. This doesn't affect joining behavior.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
1a31f9f820c4538015ddaf4ca2b790649c5997ed 16-Oct-2013 Behdad Esfahbod <behdad@behdad.org> [otlayout] Minor
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
7e08f1258da229dfaf7e1c4b5c41e5bb83906cb0 27-May-2013 Behdad Esfahbod <behdad@behdad.org> Don't zero advance of mark-non-mark ligatures

If there's a mark ligating forward with non-mark, they were
inheriting the GC of the mark and later get advance-zeroed.
Don't do that if there's any non-mark glyph in the ligature.

Sample test: U+1780,U+17D2,U+179F with Kh-Metal-Chrieng.ttf

Also:
Bug 58922 - Issue with mark advance zeroing in generic shaper
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
bac1dd6a0ff4d4fae4254506d38ae662b7e9dda7 03-May-2013 Behdad Esfahbod <behdad@behdad.org> [OTLayout] Refactor a bit more
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
45fd9424c723f115ca98995b8f8a25185a6fc71d 03-May-2013 Behdad Esfahbod <behdad@behdad.org> [OTLayout] Add hb_ot_layout_lookup_accelerator_t
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
a8cf7b43fa795150ae3d42d64424bb6e0373d0b2 19-Mar-2013 Behdad Esfahbod <behdad@behdad.org> [Indic] Futher adjust ZWJ handling in Indic-like shapers

After the Ngapi hackfest work, we were assuming that fonts
won't use presentation features to choose specific forms
(eg. conjuncts). As such, we were using auto-joiner behavior
for such features. It proved to be troublesome as many fonts
used presentation forms ('pres') for example to form conjuncts,
which need to be disabled when a ZWJ is inserted.

Two examples:

U+0D2F,U+200D,U+0D4D,U+0D2F with kartika.ttf
U+0995,U+09CD,U+200D,U+09B7 with vrinda.ttf

What we do now is to never do magic to ZWJ during GSUB's main input
match for Indic-style shapers. Note that backtrack/lookahead are still
matched liberally, as is GPOS. This seems to be an acceptable
compromise.

As to the bug that initially started this work, that one needs to
be fixed differently:

Bug 58714 - Kannada u+0cb0 u+200d u+0ccd u+0c95 u+0cbe does not
provide same results as Windows8
https://bugs.freedesktop.org/show_bug.cgi?id=58714

New numbers:

BENGALI: 353689 out of 354188 tests passed. 499 failed (0.140886%)
DEVANAGARI: 707305 out of 707394 tests passed. 89 failed (0.0125814%)
GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%)
GURMUKHI: 60706 out of 60747 tests passed. 41 failed (0.067493%)
KANNADA: 951030 out of 951913 tests passed. 883 failed (0.0927606%)
KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%)
LAO: 53611 out of 53644 tests passed. 33 failed (0.0615167%)
MALAYALAM: 1048102 out of 1048334 tests passed. 232 failed (0.0221304%)
ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
SINHALA: 271666 out of 271847 tests passed. 181 failed (0.0665816%)
TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
TIBETAN: 208469 out of 208469 tests passed. 0 failed (0%)
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
57542d7f411c71d9b8110ce6f64090b2c0f6a925 21-Feb-2013 Behdad Esfahbod <behdad@behdad.org> Minor
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
cfc507c5432e6327e8484b07b9e091212653bc92 14-Feb-2013 Behdad Esfahbod <behdad@behdad.org> [Indic-like] Disable automatic joiner handling for basic shaping features

Not for Arabic, but for Indic-like scripts. ZWJ/ZWNJ have special
meanings in those scripts, so let font lookups take full control.

This undoes the regression caused by automatic-joiners handling
introduced two commits ago.

We only disable automatic joiner handling for the "basic shaping
features" of Indic, Myanmar, and SEAsian shapers. The "presentation
forms" and other features are still applied with automatic-joiner
handling.

This change also changes the test suite failure statistics, such that
a few scripts show more "failures". The most affected is Kannada.
However, upon inspection, we believe that in most, if not all, of the
new failures, we are producing results superior to Uniscribe. Hard to
count those!

Here's an example of what is fixed by the recent joiner-handling
changes:

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

New numbers, for future reference:

BENGALI: 353892 out of 354188 tests passed. 296 failed (0.0835714%)
DEVANAGARI: 707336 out of 707394 tests passed. 58 failed (0.00819911%)
GUJARATI: 366262 out of 366457 tests passed. 195 failed (0.0532122%)
GURMUKHI: 60706 out of 60747 tests passed. 41 failed (0.067493%)
KANNADA: 950680 out of 951913 tests passed. 1233 failed (0.129529%)
KHMER: 299074 out of 299124 tests passed. 50 failed (0.0167155%)
LAO: 53611 out of 53644 tests passed. 33 failed (0.0615167%)
MALAYALAM: 1047983 out of 1048334 tests passed. 351 failed (0.0334817%)
ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
SINHALA: 271539 out of 271847 tests passed. 308 failed (0.113299%)
TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%)
TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
TIBETAN: 208469 out of 208469 tests passed. 0 failed (0%)
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0b45479198d61d5135dad771e9c68408eb13f930 14-Feb-2013 Behdad Esfahbod <behdad@behdad.org> [OTLayout] Add fine-grained control over ZWJ matching

Not used yet. Next commit...
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
607feb7cff0e50f8738d2e49ca463fc9d7d494de 14-Feb-2013 Behdad Esfahbod <behdad@behdad.org> [OTLayout] Ignore default-ignorables when matching GSUB/GPOS

When matching lookups, be smart about default-ignorable characters.
In particular:

Do nothing specific about ZWNJ, but for the other default-ignorables:

If the lookup in question uses the ignorable character in a sequence,
then match it as we used to do. However, if the sequence match will
fail because the default-ignorable blocked it, try skipping the
ignorable character and continue.

The most immediate thing it means is that if Lam-Alef forms a ligature,
then Lam-ZWJ-Alef will do to. Finally!

One exception: when matching for GPOS, or for backtrack/lookahead of
GSUB, we ignore ZWNJ too. That's the right thing to do.

It certainly is possible to build fonts that this feature will result
in undesirable glyphs, but it's hard to think of a real-world case
that that would happen.

This *does* break Indic shaping right now, since Indic Unicode has
specific rules for what ZWJ/ZWNJ mean, and skipping ZWJ is breaking
those rules. That will be fixed in upcoming commits.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
568000274c8edb5f41bc4f876ce21fcc8bdaeed8 12-Feb-2013 Behdad Esfahbod <behdad@behdad.org> Adjust mark advance-width zeroing logic for Myanmar

Before, we were zeroing advance width of attached marks for
non-Indic scripts, and not doing it for Indic.

We have now three different behaviors, which seem to better
reflect what Uniscribe is doing:

- For Indic, no explicit zeroing happens whatsoever, which
is the same as before,

- For Myanmar, zero advance width of glyphs marked as marks
*in GDEF*, and do that *before* applying GPOS. This seems
to be what the new Win8 Myanmar shaper does,

- For everything else, zero advance width of glyphs that are
from General_Category=Mn Unicode characters, and do so
before applying GPOS. This seems to be what Uniscribe does
for Latin at least.

With these changes, positioning of all tests matches for Myanmar,
except for the glitch in Uniscribe not applying 'mark'. See preivous
commit.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
5a08ecf9200a6ac9b4ebb7ec5c13dcb42d8820ce 16-Nov-2012 Behdad Esfahbod <behdad@behdad.org> Implement hb_ot_layout_get_glyph_class()
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
f30641038ba96e83950729b1bd9d86d2e98e46c5 16-Nov-2012 Behdad Esfahbod <behdad@behdad.org> Bunch of independent changes (ouch)

API additions:

hb_segment_properties_t
HB_SEGMENT_PROPERTIES_DEFAULT
hb_segment_properties_equal()
hb_segment_properties_hash()

hb_buffer_set_segment_properties()
hb_buffer_get_segment_properties()

hb_ot_layout_glyph_class_t

hb_shape_plan_t
hb_shape_plan_create()
hb_shape_plan_create_cached()
hb_shape_plan_get_empty()
hb_shape_plan_reference()
hb_shape_plan_destroy()
hb_shape_plan_set_user_data()
hb_shape_plan_get_user_data()
hb_shape_plan_execute()

hb_ot_shape_plan_collect_lookups()

API changes:

Rename hb_ot_layout_feature_get_lookup_indexes() to
hb_ot_layout_feature_get_lookups().

New header file:

hb-shape-plan.h

And a bunch of prototyped but not implemented stuff. Coming soon.
(Tests fail because of the prototypes right now.)
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
362a990b2246f5448ecb9d600761f710aea7d42d 15-Nov-2012 Behdad Esfahbod <behdad@behdad.org> Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup()

To match upcoming API.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
7c8e844d92aa604fc4b396343721ea90eb83adb8 28-Aug-2012 Behdad Esfahbod <behdad@behdad.org> Use namespace for OpenType tables

Avoids USHORT, SHORT, ULONG, LONG clashes with Windows API.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
d9b204d3d24cde165167714728bf380267903d6a 23-Aug-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB] Allow non-zero-context matching in would_apply()

To be used in the next patch.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
cd0c6e148f6d078b364370cb2f808b793b921be2 10-Aug-2012 Behdad Esfahbod <behdad@behdad.org> Shuffle buffer variable allocations around

To room for more allocations, coming.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
afbcc24be01a64bdb5c05c63880269145fa1d3c8 02-Aug-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB] Wire the font, not just the face, down to substitute()

We need the font for glyph lookup during GSUB pauses in Indic shaper.
Could perhaps be avoided, but at this point, we don't mean to support
separate substitute()/position() entry points (anymore), so there is
no point in not providing the font to GSUB.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
b0e6a26a10ccca70ebc88a9e158a89ccfab0add5 02-Aug-2012 Behdad Esfahbod <behdad@behdad.org> [OT] Hide some API

It was impossible to meaningfully use them from the outside these days.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
6f7611375521c6d285a9aa763f2ea5cb44cd0d39 02-Aug-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB/GPOS] Check array size before accessing digests
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
1336ecdf8e4e9879b96b26ecfbf5c9ba6c49e2b9 02-Aug-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB/GPOS] Use Coverage digests as gatekeeper

Gives me a good 10% speedup for the Devanagari test case. Less so
for less lookup-intensive tests.

For the Devanagari test case, the false positive rate of the GSUB digest
is 4%.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c2e42c3db691515f3a458eb4c71fe1e6439d5620 31-Jul-2012 Behdad Esfahbod <behdad@behdad.org> Minor
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
05bd1b63426e07d1df7a1b40bf845dc94ab995a8 31-Jul-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB/GPOS] Move glyph props matching around
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
f860366456d9e59b139a940da6d89c3c4fb9e96e 30-Jul-2012 Behdad Esfahbod <behdad@behdad.org> [OT] Gain back some lost speed
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
578e42182b9b9cf15b4c5426fae36e224160cbd7 30-Jul-2012 Behdad Esfahbod <behdad@behdad.org> Minor
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
4751dec8be05883483fd5f6b474ebd22583ae566 30-Jul-2012 Behdad Esfahbod <behdad@behdad.org> Minor
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
fe20c0f84f5ff518dc471bf22ac5a83ef079eb69 30-Jul-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB] Fix mark component stuff when ligatures form ligatures!

See comments.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=437633
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
2ec3ba46a3c24469096e901750e38f6ee555479a 30-Jul-2012 Behdad Esfahbod <behdad@behdad.org> [GSUB/GPOS] Minor

Start squeezing more out of lig_id/lig_comp.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
5d874d566fe5d2cc4cfaf02c79b663d8a626ca1e 29-Jul-2012 Behdad Esfahbod <behdad@behdad.org> [GPOS] Fix mark-to-mark positioning when one of the marks is a ligature

This commit: a3313e54008167e415b72c780ca7b9cda958d07e broke MarkMarkPos
when one of the marks itself is a ligature. That regressed 26 Tibetan
tests (up from zero!). Fix that. Tibetan back to zero.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
ea278d3895fe0c92801d692cd71d8d9f1de7c048 27-Jul-2012 Behdad Esfahbod <behdad@behdad.org> Partially switch ot shaper to shape_plan
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
a3313e54008167e415b72c780ca7b9cda958d07e 26-Jul-2012 Behdad Esfahbod <behdad@behdad.org> [GPOS] Fix MarkMarkPos applied to results of MultipleSubst

This was broken as a result of 7b84c536c10ab90ed96a033d88e9ad232d46c5b8.
As Khaled reported, MarkMark positioning was broken with glyphs
resulting from a MultipleSubst. Fixed. Test with the ALLAH character
in Amiri.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
49c5ec51444f27f33e1eb6aa1959c61b08fa89c0 24-Jul-2012 Behdad Esfahbod <behdad@behdad.org> Minor refactoring
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0f8fea71a66b1e01ee4398967db464393f478d42 09-Jun-2012 Behdad Esfahbod <behdad@behdad.org> Minor. Hide _hb_ot_layout_get_glyph_property()
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
cee7187447b76b22e1bb6136d137b35ac49c3a5d 11-May-2012 Behdad Esfahbod <behdad@behdad.org> [Indic] Move syllable tracking from Indic to generic layer

This is to incorporate it into GSUB/GPOS processing.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0b08adb3539f2ec29682456b89c69e89ff5e9c03 24-Apr-2012 Behdad Esfahbod <behdad@behdad.org> Add hb_set_t
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
6a9be5bd3524dc3eb1e88d1063bde2e4d8b57011 24-Apr-2012 Behdad Esfahbod <behdad@behdad.org> Rename hb_glyph_map_t to hb_set_t
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
31081f7390e5130df72f89acc609ccab5dc77a48 23-Apr-2012 Behdad Esfahbod <behdad@behdad.org> Implement closure() for Context and ChainContext lookups
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c64ddab3c34897cd520d4d73a054866e649e8793 23-Apr-2012 Behdad Esfahbod <behdad@behdad.org> Flesh out closure() for GSUB

The GSUBGPOS part still missing.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
5e88aa66822ba64324b4428c9ffbe06a43b4f310 15-Apr-2012 Behdad Esfahbod <behdad@behdad.org> Remove public enum names again

As was reported to me, glib-mkenum does not understand named enums,
so remove for now.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c6035cf802c60f0526f421f39a55886061df94ee 12-Apr-2012 Behdad Esfahbod <behdad@behdad.org> Add names to enums

gdb was showing <anonymous enum> instead of useful stuff, so name
all our enums.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
3897335c7620c37e9a0224b0c42ade0dfdce4053 08-Aug-2011 Behdad Esfahbod <behdad@behdad.org> [API] Sort out get_blob API

hb_face_get_blob() renamed to hb_face_reference_blob(), returns a
reference now.

hb_face_[sg]et_index() added.

hb_face_set_upem() added.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c605bbbb6d4b2a98b1f40ca818760088d991f7d1 05-Aug-2011 Behdad Esfahbod <behdad@behdad.org> Remove C++ guards from source files

Where causing issues for people with MSVC.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
abcfe9b59b4475eb02dd679aac4bc59616713b28 11-May-2011 Behdad Esfahbod <behdad@behdad.org> Remove hb_ot_layout_context_t, simplify code
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
266b34418c9bbe23ccaf29cb354b58c465fa3b22 03-May-2011 Behdad Esfahbod <behdad@behdad.org> Refactor to keep hb-object-private.h and hb-open-type.h separate

Needed to be able to include <Windows.h> from hb-object-private.h.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
2409d5f8d7dd8b535ce5ea29e933f7db27d33793 21-Apr-2011 Behdad Esfahbod <behdad@behdad.org> Update Copyright headers
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
da975419884a535281745f30f4b32fee0bc8a7a1 21-Apr-2011 Behdad Esfahbod <behdad@behdad.org> [API] Allow negative font x_scale/y_scale

I was reconsidering whether y should grow down, since all three/four
times I've used this API I was tricked and got that wrong in my use.
So I was very inclined to make y grow down instead of up. However,
considering that the font space has y up and it would be very confusing
for callbacks to work against that, I decided that what I really want
is for the user to be able to set y_scale to a negative number to imply
that user-space y grows down.

Changing x_scale/y_scale from unsigned int to int allows that, and I've
made pango to use that instead of negating glyph y_offset later. hb-ft
however still has y group up. I *guess* that's how FreeType works?
I'm not sure, FreeType docs don't make this clear...

I'm happy with the resolution :-).
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c57d454accff66e5f2c58006e8fb40bc020b6182 21-Apr-2011 Behdad Esfahbod <behdad@behdad.org> Rename all private sources and headers to C++ files

So we can liberally use the simple features of C++ that parts of the
codebase is already using.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
3a852ae7fe6edfaadd75625d27515a3689503395 03-Nov-2010 Behdad Esfahbod <behdad@behdad.org> Save general category and combining class in the buffer for reuse
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
4a2d844c2f12dc1b858ab4ddd737ded7c0852221 03-Nov-2010 Behdad Esfahbod <behdad@behdad.org> Minor code shuffling
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
c2709119c8c610a0d4d71884a7d4fdba7cb65b72 28-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Move things around some more
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
194d4566ec054db03fa31d369a9f1c6cf4941e74 28-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Move buffer var allocation local
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
bf94b3ad22b2fe4730d4e64d673c63154fc5b5fe 28-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Move some more code around
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
8c69e65abed961002d90024c92e18538c6516262 28-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Rename lookup_flags to lookup_props since it's more than just flags
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
98370e89d1bff248737b482d129c2a4deb8bfd95 27-Oct-2010 Behdad Esfahbod <behdad@behdad.org> WIP removing external synthesized GDEF support and implementing it internally
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
1115890b90709fa5329a55d22f543020f3df9f6f 27-Oct-2010 Behdad Esfahbod <behdad@behdad.org> More cleanup
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
88474c6fdaf35c56368694a5b164f4988a004d49 27-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Get rid of the OpenType-specific internal buffer representation

Add variant integers to buffer item types. More cleanup coming.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
af5d02a269d55331300df1e382241893928d64e0 27-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Rewrite Cursive joining to act more like other pair lookups

Look forward for next character instead of joining to the last character.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
f0feb084b0fd1510474b25404d1dcc5686ee0538 04-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Minor
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
ac0c1663fa6e93a5a94c88fc7497bc11ca17f0a1 02-Oct-2010 Behdad Esfahbod <behdad@behdad.org> Avoid div-by-zero, validate upem
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
acdba3f90b232fc12fcb200dca2584481b339118 23-Jul-2010 Behdad Esfahbod <behdad@behdad.org> Prefer C linkage
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
cc6d52279d10a2edcf0d86c3a18a79ff4f6d3858 23-Jul-2010 Behdad Esfahbod <behdad@behdad.org> De-C++ where possible

Helps with avoiding many "extern C" declarations in source files.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0dd200d28f51bf4062d8a377432c8977c80cb210 23-Jul-2010 Behdad Esfahbod <behdad@behdad.org> Header dep cleanup
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0f0cd9d361f1bb614aa3fd4616160d027062370e 09-Jun-2010 Behdad Esfahbod <behdad@behdad.org> Fix header tags
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
b634beb39e0a4fef7167a8af646f6b2d8cafe69b 20-May-2010 Behdad Esfahbod <behdad@behdad.org> Fix delta scale, again...
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
0a4399ca228d244e646abdb3487da0f13b228889 19-May-2010 Behdad Esfahbod <behdad@behdad.org> Fix scale issues

hb_font_set_scale() now sets the value to be used to represent a unit
pixel. For example, if rendering a 10px font with a 26.6 representation,
you would set scale to (10 << 6). For 10px in 16.16 you would set it to
(10 << 16). This space should be the same space that the get_glyph_metrics
and get_kerning callbacks work in.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
eee8598d75d3af692d9ececf7e8ac458e892ba9e 13-May-2010 Behdad Esfahbod <behdad@behdad.org> Hide internal symbols
/external/harfbuzz_ng/src/hb-ot-layout-private.hh
22da7fd94d6318c52df69d70470a85464ffc533d 13-May-2010 Behdad Esfahbod <behdad@behdad.org> Rename a few files to be C++ sources

In anticipation for buffer revamp coming.
/external/harfbuzz_ng/src/hb-ot-layout-private.hh