src/hb-ot-shape-complex-private.hh


Log

Author Commit Date CI Message
Behdad Esfahbod ab8d70ec 2017-10-04T14:47:10 [arabic] Implement Unicode Arabic Mark Ordering Algorithm UTR#53 Fixes https://github.com/behdad/harfbuzz/issues/509
Behdad Esfahbod 57c55ef8 2017-10-02T18:21:27 [ot] Improve shaper selection heuristic
Behdad Esfahbod 1535f8c6 2017-10-02T16:12:18 Add Unicode 10 scripts
Behdad Esfahbod e888f642 2017-01-26T14:50:14 Route Adlam through Arabic shaper Fixes joined Adlam rendering. Fixes https://github.com/googlei18n/noto-fonts/issues/828
Behdad Esfahbod e2b87805 2016-12-22T14:40:19 Disable OTL processing for Hebrew if GPOS doesn't have Hebrew subtable New approach to fix this: https://github.com/behdad/harfbuzz/commit/69f9fbc4200442a35484d3c790ae8f4979be5d60 Previous approach was reverted as it was too broad. See context: https://github.com/behdad/harfbuzz/issues/347#issuecomment-267838368 With U+05E9,U+05B8,U+05C1,U+05DC and Arial Unicode, we now (correctly) disable GDEF and GPOS, so we get results very close to Uniscribe, but slightly different since our fallback position logic is not exactly the same: Before: [gid1166=3+991|gid1142=0+737|gid5798=0+1434] After: [gid1166=3+991|gid1142=0@402,-26+0|gid5798=0+1434] Uniscribe: [gid1166=3+991|gid1142=0@348,0+0|gid5798=0+1434]
Behdad Esfahbod 30e6e29f 2016-05-06T15:52:27 [indic/use] Move Javanese from Indic shaper to USE Fixes https://github.com/behdad/harfbuzz/issues/243 With javatext.ttf, the reodering medial Ra gets its advance width zero'ed in Uniscribe implementation, and the font adds the advance back. Our Indic shaper does not do that, but USE does. So, route Javanese through USE. That's what Microsoft does anyway. Test: U+A9A5,U+A9BA This also seems to fix the following sequence, and variations thereof: U+A99F,U+A9C0,U+A9A2,U+A9BF
Behdad Esfahbod 691086f1 2016-05-06T12:08:18 Add Unicode 9 beta scripts These are frozen, so good time to add.
Behdad Esfahbod eaadcbbc 2016-02-10T18:29:54 Remove now-unused mark zeroing BY_UNICODE
Behdad Esfahbod fc06cff4 2015-12-17T17:47:35 Remove HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT The DEFAULT naming wasn't helpful, so just remove it.
Behdad Esfahbod 13686337 2015-11-05T13:24:15 Add new shaper method postprocess_glyphs() Unused currently. To be used for Syriac stretch implementation. https://github.com/behdad/harfbuzz/issues/141
Behdad Esfahbod db1e9cdd 2015-07-21T17:46:06 Retire SEA shaper in favor of USE
Behdad Esfahbod 87dde9c6 2015-07-21T17:31:43 [USE] Only use USE shaper if script system is not DFLT Same logic as Indic and SEA.
Behdad Esfahbod 29832d79 2015-07-21T17:24:18 Route misc untested scripts through USE shaper instead of Indic These were never tested with Indic shaper, and indeed wouldn't work there because they didn't have their viramas and other config defined. They are all also supported by MS through USE, so route them there.
Behdad Esfahbod 52a95779 2015-07-21T10:02:04 [USE] Hook up new scripts to USE shaper Don't reroute scripts that we were routing to other shapers before (just yet).
Jonathan Kew f724cc35 2015-04-23T12:45:02 Don't apply Arabic shaping to vertical text.
Roozbeh Pournader 5eb939dd 2015-01-18T14:30:08 Change New Tai Lue shaping engine from SEA to default This is to reflect the UTC decision to change the encoding model of New Tai Lue from logical to visual to be similar to Thai, Lao, and Tai Viet: http://www.unicode.org/L2/L2014/14250.htm#141-C26 The visual encoding is already the current practice of encoding New Tai Lue on the web anyway: http://www.unicode.org/L2/L2014/14195-newtailue.txt Fixes behdad/harfbuzz#66.
Behdad Esfahbod 6f2d9ba5 2014-07-26T19:17:44 Add old-Myanmar shaper Looks like Unsicribe responds to the 'mymr' tag by zeroing marks GDEF_LATE instead of generic-shaper UNICODE_LATE. Implement that. Fixes Bug 81775 - Incorrect Rendering with harfbuzz-ng myanmar unicode https://bugs.freedesktop.org/show_bug.cgi?id=81775 Micro-test added based on Padauk.
Behdad Esfahbod 7cfee382 2014-04-28T15:09:30 [unicode7] Route Manichaean and Psalter Pahlavi through Arabic shaper Still needs update to joining table to fully work.
Behdad Esfahbod f14bb7de 2013-12-31T16:49:15 [ot] Separate out hebrew and tibetan shapers from default Now default shaper is truly no-op.
Behdad Esfahbod 6300cd72 2013-12-31T16:38:47 [ot] Define HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT
Behdad Esfahbod 3d6ca0d3 2013-12-31T16:04:35 [ot] Simplify normalization_preference again No shaper has more than one behavior re this, so no need for a callback.
Behdad Esfahbod c98b7183 2013-12-31T15:55:40 [ot] Add Hangul shaper Not exhaustively tested, but I think I got the intended logic right. The logic can perhaps be simplified. Maybe we should disabled normalization with this shaper. Then again, for now focusing on correctness.
Behdad Esfahbod 71b4c999 2013-10-28T00:20:59 Revert "Zero marks by GDEF for Tibetan" This reverts commit d5bd0590ae2fbc7b0dee86385a565aef00ffb835. The reasoning behind that logic was flawed and made under a misunderstanding of the original problem, and caused regressions as reported by Jonathan Kew in thread titled "tibetan marks" in Oct 2013. Apparently I have had fixed the original problem with this commit: 7e08f1258da229dfaf7e1c4b5c41e5bb83906cb0 So, revert the faulty commit and everything seems to be in good shape.
Behdad Esfahbod d5bd0590 2013-10-18T16:44:54 Zero marks by GDEF for Tibetan See: http://lists.freedesktop.org/archives/harfbuzz/2013-April/003101.html
Behdad Esfahbod 321df83f 2013-10-17T18:16:14 Route Buginese through the SEA shaper Both Indic and SEA seem to do it just fine, but SEA is much simpler.
Behdad Esfahbod 54e6f6c5 2013-08-09T14:34:54 Clean up list of Unicode scripts Rename HB_SCRIPT_CANADIAN_ABORIGINAL to HB_SCRIPT_CANADIAN_SYLLABICS and a macro for the old name.
Behdad Esfahbod 127daf15 2013-05-20T09:11:35 Arabic mark width-zeroing regression Mozilla Bug 873902 - Display Arabic text with diacritics is bad https://bugzilla.mozilla.org/show_bug.cgi?id=873902
Behdad Esfahbod 587e5753 2013-04-05T12:38:58 Add note re Hangul shaping
Behdad Esfahbod 3a83d33e 2013-02-12T12:14:10 Add South-East Asian shaper Handles Tai Tham, Cham, and New Tai Lue for now.
Behdad Esfahbod 5676d5d5 2013-02-12T10:31:14 [Indic] Make sure New Tai Lue works!
Behdad Esfahbod 56800027 2013-02-12T09:44:57 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.
Behdad Esfahbod 98628cac 2013-02-11T13:36:23 Add Win8-style Myanmar shaper Myanmar failures down from 51% to 0.00204648%! MYANMAR: 1123860 out of 1123883 tests passed. 23 failed (0.00204648%)
Behdad Esfahbod 16c914c2 2012-11-21T01:04:15 [Indic] One more try at unbreaking Khmer fonts See comments and discussion on the list.
Behdad Esfahbod eba312c8 2012-11-16T12:39:23 Plumbing to get shape plan and font into complex decompose function So we can handle Sinhala split matras smartly... Coming soon.
Behdad Esfahbod 851784f8 2012-11-14T16:24:05 Improve shaper selection
Behdad Esfahbod 0f80a89d 2012-11-14T15:05:19 Don't route Kharoshthi through the Indic shaper It's a simple, right-to-left, script.
Behdad Esfahbod 865745b5 2012-11-14T13:48:26 Don't do fallback positioning for Indic and Thai shapers
Behdad Esfahbod 981748cb 2012-11-14T13:38:16 [Indic] If Khmer fonts have a 'liga' feature, use generic shaper Seems to produce more coherent results than trying the Indic shaper on them. I'm looking at you, Kh-* fonts...
Behdad Esfahbod 0736915b 2012-11-13T12:35:35 [Indic] Decompose Sinhala split matras the way old HarfBuzz / Pango did Had to do some refactoring to make this happen... Under uniscribe bug compatibility mode, we still plit them Uniscrie-style, but Jonathan and I convinced ourselves that there is no harm doing this the Unicode way. This change makes that happen, and unbreaks free Sinhala fonts.
Behdad Esfahbod 9e92978c 2012-11-12T18:36:10 [Indic] Route "new" Myanmar tag through the Indic shaper Windows 8 adds a Myanmar shaper using the 'mym2' tag. Route that through the Indic shaper. It's still very broken, but at least this does NOT break old-style Myanmar shaping using the generic shaper.
Behdad Esfahbod 5ab3855f 2012-11-12T18:27:42 Choose shaper based on chosen OT script tag For Arabic and Indic shapers, if the font doesn't have a script system for the script, use default shaper. Make an exception for Arabic script since we have fallback logic for that one.
Behdad Esfahbod 9b37b4c5 2012-11-12T18:23:38 Make planner available to complex shaper choosing logic
Behdad Esfahbod 43149afb 2012-11-12T13:34:17 Route MEETEI_MAYEK through the Indic shaper Since it has a couple of left-"matras".
Behdad Esfahbod 3ba7bc14 2012-11-01T20:05:04 Implement 'Phags-pa shaping Through the Arabic shaper. It's similar to Mongolian.
Behdad Esfahbod 9f9f04c2 2012-08-11T18:34:13 [OT] Unbreak Thai shaping and fallback Arabic shaping The merger of normalizer and glyph-mapping broke shapers that modified text stream. Unbreak them by adding a new preprocess_text shaping stage that happens before normalizing/cmap and disallow setup_mask modification of actual text.
Behdad Esfahbod cd0c6e14 2012-08-09T21:48:55 Shuffle buffer variable allocations around To room for more allocations, coming.
Behdad Esfahbod a8c6da90 2012-08-02T10:46:34 [OT] Add per-complex-shaper shape_plan data Hookup some Indic data to it. More to come.
Behdad Esfahbod 16c6a27b 2012-08-02T09:38:28 [OT] Port complex_shaper to planner/plan
Behdad Esfahbod 1e7d8606 2012-07-31T23:41:06 [GPOS] Adjust mark advance-width zeroing logic If there is no GPOS, zero mark advances. If there *is* GPOS and the shaper requests so, zero mark advances for attached marks. Fixes regression with Tibetan, where the font has GPOS, and marks a glyph as mark where it shouldn't get zero advance.
Behdad Esfahbod 2bc3b9a6 2012-07-31T23:08:25 [OT] Zero mark advances if the shaper desires so Enabled for all shapers except for Indic.
Behdad Esfahbod 693918ef 2012-07-30T21:08:51 [OT] Streamline complex shaper enumeration Add a shaper class struct.
Behdad Esfahbod 7e34601d 2012-07-30T14:53:41 Unbreak Hangul jamo composition When we removed the separate Hangul shaper, the specific normalization preference of Hangul was lost. Fix that. Also, the Thai shaper was copied from Hangul, so had the fully-composed normalization behavior, which was unnecessary. So, fix that too.
Behdad Esfahbod f8603664 2012-07-30T02:38:39 [OT] Gain back some lost speed
Behdad Esfahbod d8942dcb 2012-07-18T16:34:10 Apply Tibetan (global) features. Fixes all Tibetan failures. All 180k of them! Merges back Hangul into the default shaper.
Behdad Esfahbod d96838ef 2012-07-16T20:26:57 Allow complex shapers overriding common features In a new callback... Currently unused by all complex shapers.
Behdad Esfahbod 0594a244 2012-06-05T20:35:40 Cleanup TRUE/FALSE vs true/false
Behdad Esfahbod 7f852b64 2012-05-11T23:10:31 Fix compiler warnings
Behdad Esfahbod cee71874 2012-05-11T11:41:39 [Indic] Move syllable tracking from Indic to generic layer This is to incorporate it into GSUB/GPOS processing.
Behdad Esfahbod ef24cc8c 2012-05-09T17:56:03 [Indic] Towards multi-cluster syllables and final reordering
Behdad Esfahbod d1deaa2f 2012-05-09T15:04:13 Replace zerowidth invisible chars with a zero-advance space glyph Like Uniscribe does.
Behdad Esfahbod 5b126090 2012-05-09T12:37:27 Minor
Behdad Esfahbod acd88e65 2012-04-10T18:02:20 In Arabic fallback shaping, check that the font has glyph for new char
Behdad Esfahbod 3b26f96e 2012-04-10T10:52:07 Add Thai shaper that does SARA AM decomposition / reordering That's not in the OpenType spec, but it's what MS and Adobe do.
Behdad Esfahbod c9a841f4 2012-04-07T15:06:55 Add simple Hangul shaper that recomposes Jamo when feasible Previously, we were NOT actually recomposing Hangul Jamo. We do now. The two lines in: test/shaping/texts/in-tree/shaper-default/script-hangul/misc/misc.txt Now render the same with the UnDotum.ttf font. Previously the second linle was rendering boxes. We can also start applying OpenType Jamo features later. At this time, I have no idea how the 'ljmo', 'vjmo', 'tjmo' features are supposed to work. Maybe someone can explain them to me?
Behdad Esfahbod 11138ccf 2012-04-05T17:25:19 Add normalize mode In preparation for Hangul shaper.
Behdad Esfahbod cad3821f 2012-03-07T17:13:25 More sorting by Unicode version This is the most convenient way to browse scripts.
Behdad Esfahbod 317b9504 2012-03-07T16:51:29 Minor
Behdad Esfahbod f91136cb 2012-03-07T12:56:22 Route three Unicode 6.1 scripts through Indic shaper
Behdad Esfahbod 18322468 2012-03-07T12:21:28 Use generic shaper for Buhid As requested by Jonathan Kew. We need to devise a better mechanism to choose which scripts to pass through the Indic shaper. Moreover, currently we are storing data for some scripts in the Indic shaper that are not even going through that shaper. Need to find a better way...
Behdad Esfahbod 7a4a848d 2012-01-19T15:15:21 Minor
Behdad Esfahbod e8eedf26 2012-01-16T16:39:40 Avoid enum trailing commas Based on patch from Jonathan Kew.
Behdad Esfahbod bc187e5a 2011-09-08T13:35:17 Refine Indic scripts, following Martin Hosken's recommendation
Behdad Esfahbod c605bbbb 2011-08-04T20:00:53 Remove C++ guards from source files Where causing issues for people with MSVC.
Behdad Esfahbod b65c0602 2011-07-28T16:48:43 Formalize buffer var allocations
Behdad Esfahbod 02cdf743 2011-07-21T12:23:12 Add prefer_decomposed() complex-shaper callback This allows the Indic shaper to request decomposed characters. This will handle split matra for free. Other shapers prefer precomposed characters.
Behdad Esfahbod d05dded1 2011-07-07T23:42:40 More code generation through preprocessor
Behdad Esfahbod 3361c9a3 2011-07-07T22:35:17 Minor
Behdad Esfahbod 76f76812 2011-07-07T22:25:25 Shuffle code around, remove shape_plan from complex shapers
Behdad Esfahbod e88bff9b 2011-07-07T22:03:02 Minor, use function typedefs
Behdad Esfahbod 359dcaa0 2011-07-07T21:55:05 Update copyright headers
Behdad Esfahbod b9ddbd55 2011-06-02T17:43:12 [Indic] Start an Indic shaper Nothing functional in there yet. So far, we're parsing IndicSyllabicCategory.txt and IndicMatraCategory.txt fils from Unicode Character Database and store them in an array to be used by the shaper. Also hooked up the shaper, but it does not do anything right now.
Behdad Esfahbod 90645fb2 2011-05-27T18:13:31 [OT] Separate map_builder from the actual map Respectively, separate planner from the actual plan.
Behdad Esfahbod 2409d5f8 2011-04-21T17:14:28 Update Copyright headers
Behdad Esfahbod c57d454a 2011-04-20T18:50:27 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.
Behdad Esfahbod 62879eeb 2011-04-18T23:40:21 [API] Use ISO 15924 tags for hb_script_t This simplifies the code, reduces static data, and makes the design more extensible to future additions of new scripts.
Behdad Esfahbod d86a5b3c 2010-12-21T18:36:25 Bug 32274 - classic mongolian shaper Add support for classic Mongolian script to the Arabic shaper. Still work to be done around U+180E MONGOLIAN VOWEL SEPARATOR as it should not be included in the final glyph stream the same way that ZWNJ, etc should not appear in the final glyph stream. But the joining part should be done. There remains the question of how should the U+18A9 MONGOLIAN LETTER ALI GALI DAGALGA be handled as it has General Category NSM but a letter nonetheless. For now, our generic logic makes this a joining T instead of joining D as other Mongolian letters are.
Behdad Esfahbod b0e7378f 2010-12-21T14:19:32 Reroute Mandaic shaping through the Arabic shaper We added Mandaic joining data to the Arabic shaper a while ago, but were not actually using the Arabic shaper for Mandaic. Fixed.
Behdad Esfahbod 13403bc6 2010-10-12T17:23:54 Hookup Arabic shaper! Not tested yet.
Behdad Esfahbod 49baa1f6 2010-10-12T16:50:36 Add hb_ot_complex_shaper_t stuff and start hooking Arabic shaper up