kc3-lang/harfbuzz/src

Branch :


Log

Author Commit Date CI Message
d3e14aaf 2013-02-27 11:06:36 [buffer] Move buffer serialization code to a new file
8da51112 2013-02-27 17:48:31 Minor
94789fd6 2013-02-26 21:22:37 [Indic] Sort pre-base reordering consonants with post-forms Before, we were marking them as below-form for initial reordering. However, there is a rule that says "post consonants should follow below consonsnts" for base determination purposes. Malayalam has port-form YA/VA, and RA is pre-base. As such, for a sequence like YA,Virama,YA,Virama,RA, the correct base is at index 0. But because the code was seeing RA as a below-base, it was stopping at the second YA as base, instead of jumping it as a post-base. By treating prebase-reordering consonants like post-forms, this is fixed. MALAYALAM went down from 351 to 265. Other numbers didn't change: BENGALI: 353686 out of 354188 tests passed. 502 failed (0.141733%) DEVANAGARI: 707305 out of 707394 tests passed. 89 failed (0.0125814%) 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: 1048069 out of 1048334 tests passed. 265 failed (0.0252782%) 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%)
05d5d3cd 2013-02-25 23:57:51 Fix "comparison between signed and unsigned" warnings Patch from Jonathan Kew.
07a52b62 2013-02-25 19:09:57 Give up sanitizing after 100 edit requests Such fonts are *definitely* really broken. Give up. Limits time spent in sanitize for extremely / deliberately broken fonts. For example, two fonts with these md5sum / names: 9343f0a1b8c84b8123e7d201cae62ffd.ttf eb8c978547f09d368fc204194fb34688.ttf were spending over a second in sanitize! Not anymore.
29ff2548 2013-02-25 19:04:56 Add HB_DEBUG_VERBOSE Only affects the verbosity of function name printing right now.
c3ba49b6 2013-02-25 17:06:35 Always create sub-blobs in MEMORY_MODE_READONLY This fixes a design bug with sanitize and sub-blobs that can cause crashes. Jonathan and I found and debugged this issue when we tested a corrupt font with the md5sum / filename: ea395483d37af0cb933f40689ff7b60a. Two hours of intense debugging we found out that the font has overlapping GSUB/GPOS tables, and as such, sanitizing the second table can modify the first one, which can cause all kinds of undefined behavior. The correct way to fix this is to make sure sub-blobs are always created readonly, since we consider the parent blob to be a shared resource and can't modify it, even if it *is* writable. This essentially makes the READONLY_MAY_MAKE_WRITABLE mode unused... Maybe we should simply remove / deprecate it.
57542d7f 2013-02-21 15:54:05 Minor
d46606e1 2013-02-21 15:39:57 Port TrueType-kerning to use skippy iterator It skips joiners and default ignorables now. Skips marks too, but only if there is proper GDEF classes for marks.
722e8b85 2013-02-21 15:37:51 Fixup previous commit Was not decreasing num_items. Ouch!
ba87b8fc 2013-02-21 15:23:39 Move code around
2b2a6e89 2013-02-21 15:07:03 [OTLayout] Correctly skip Default_Ignorable when match_func not set When a match_func was not set on the matcher_t object (ie. from GPOS), then the Default_Ignorables (including joiners) were never skipped. This meant that they were not skipped as they should during GPOS matching. Fix that. A few Indic numbers have "regressed": BENGALI and DEVANAGARI went up from 290 and 58 respectively, but in both cases new results are superior to Uniscribe, as they apply GPOS when we weren't (and Uniscribe isn't) before. BENGALI: 353686 out of 354188 tests passed. 502 failed (0.141733%) DEVANAGARI: 707305 out of 707394 tests passed. 89 failed (0.0125814%) 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%)
ff93ac8c 2013-02-21 14:51:40 Minor
b1f44075 2013-02-17 12:12:37 [SEA] Fix order of pre-base reordering Ra and left matras The code was confused because it was expecting left matra to have POS_PRE_M, like we do in the Myanmar shaper, but that is not what we were doing in this shaper. Rewrite to rely on category only. Test case: U+AA06,U+AA34,U+AA2F
99fa9ea0 2013-02-15 11:47:24 Minor
27589620 2013-02-15 11:47:09 [OTLayout] Remove unused code
c2a1cdc4 2013-02-15 09:27:02 [Arabic] Fix shaping of left-joining 'Phags-Pa U+A872 This is the first character in Unicode to have Arabic left-joining behavior. Update the machine to recognize that. Test case: U+A840,U+A872,U+A840.
c462b32d 2013-02-15 07:51:47 Disable automatic segment properties guessing Before, if one called hb_shape() without setting script, language, and direction on the buffer, hb_shape() was calling hb_buffer_guess_segment_properties() on the user's behalf to guess these. This is very dangerous, since any serious user of HarfBuzz must set these properly (specially important is direction). So now, we don't guess properties by default. People not setting direction will get an abort() now. If the old behavior is desired (fragile, good for simple testing only), users can call hb_buffer_guess_segment_properties() on the buffer just before calling hb_shape().
7abddbb4 2013-02-15 07:46:57 Add assertions for a couple programmer errors
038c98f6 2013-02-15 07:41:07 Allow disabling of TrueType kerning Responds to the same feature tag that GPOS kerning does: 'kern' for horizontal and 'vkrn' for vertical.
398238a2 2013-02-15 07:40:10 Fix partial disabling of default-on features Surprisingly, if user ever tried to turn a default feature off partially (say, disable liga for a range), the feature was being turned off globally! Fixed now.
cb90b1bb 2013-02-15 07:02:08 [OTLayout] Respect syllable boundaries for backtrack/lookahead matching Originally we meant to match backtrack/lookahead across syllable boundaries. But a bug in the code meant that this was NOT done for backtrack. We "fixed" that in 2c7d0b6b80d412de3fddd443ed1a485ea1cbb03c, but that broke Myanmar shaping. We now believe that for Indic-like shapers (which is where syllables are used), all basic shaping forms should be fully contained within their syllables, so now we limit backtrack/lookahead matching to the syllable too. Unbreaks Myanmar.
ee9c3a17 2013-02-15 06:22:26 Minor refactoring
cfc507c5 2013-02-14 10:40:12 [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%)
0b454791 2013-02-14 10:46:52 [OTLayout] Add fine-grained control over ZWJ matching Not used yet. Next commit...
607feb7c 2013-02-14 07:43:13 [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.
ec544866 2013-02-14 11:25:10 Add hb_ot_map_feature_flags_t Code cleanup. No (intended) functional change.
e7ffcfaf 2013-02-14 11:05:56 Clean-up add_bool_feature
e7562f53 2013-02-14 11:05:36 Fix compile warnings for ragel-generated machines
4e51df73 2013-02-14 07:42:42 [OTLayout] Remove unused function
8820bb23 2013-02-14 07:41:03 [OTLayout] Port apply_lookup to skippy_iter
dfca269f 2013-02-14 07:20:52 [OTLayout] Port ligate_input to skippy_iter
7e53415c 2013-02-14 06:24:30 [OTLayout] Minor fix for apply_lookup() Should NOT change behavior, since first glyph is a match.
6880f7e1 2013-02-13 12:17:25 [OTLayout] Make table type known to apply context
2c7d0b6b 2013-02-13 12:10:08 [OTLayou] Unbreak backtrack matching Was introduced by 28b9d502bb69a8045818d5f6113ded9c59a56bd7.
c074ebc4 2013-02-13 11:22:42 [OTLayout] Minor refactoring
407fc124 2013-02-13 11:13:06 [OTLayout] Remove bogus caching of glyph property
6b1e3502 2013-02-13 11:02:54 Remember ZWNJ To be used in upcoming changes.
1f91c396 2013-02-13 09:38:40 Indent
a0cb9f33 2013-02-13 09:26:55 [Indic] Improve base finding in final_reordering Fixes 5 Malayalam failures! MALAYALAM: 1048016 out of 1048334 tests passed. 318 failed (0.0303338%)
f22b7e77 2013-02-13 07:32:46 [Indic] Track base position when reordering things Ouch, how did things ever work without this?! The added test that has a dot-reph as well as a pre-base reordering Ra perfectly demonstrates the bug (tested with Nirmala font from Win8 for example). Testing suggests that Win8 shaper has the *exact* same bug / behavior that we used to have. Odd.
bc11de14 2013-02-13 05:59:06 [SEA] Don't zero any mark advances Keep the logic simple, easier to explain to font developers.
0291a652 2013-02-13 05:57:24 Further adjust mark advance zeroing This is a followup to 568000274c8edb5f41bc4f876ce21fcc8bdaeed8. Looks like in the Latin shaper, Uniscribe zeroes all Unicode NSM advances *after* GPOS, not before. Match that. Can be tested using DejaVu Sans Mono, since that font has GPOS rules to zero the mark advances on its own.
85c51ec2 2013-02-12 18:17:39 [Indic] Fix Eyelash Ra with old Devanagari spec
63e48bc3 2013-02-12 17:57:49 [Indic] Apply 'blwf' before 'half' This reverts 167b625d988b74572d6b2f646c285b666b650d49. It didn't matter before, but that's going to change with next commit.
70d65657 2013-02-12 18:01:21 [Indic] Apply 'vatu' before 'cjct' This essentially reverts 1d6846db9ebf84561bb30a4e48c6c43184914099, but that commit is from way back when. We should be better following the spec order now again.
f9b66053 2013-02-12 16:13:56 [Myanmar] Use master Indic table for syllable data
a6c1e040 2013-02-12 15:31:58 Improve check for Windows platforms Instead of checking for compiler, check for platform.
9e1f80ab 2013-02-12 15:28:21 [SEA] Treat Consonant_Final like Consonant_Medial
bab02d33 2013-02-12 15:26:45 Rename HB_OT_INDIC_OPTIONS env var to HB_OPTIONS The Myanmar shaper now respects the uniscribe-bug-compatibility option too.
3a83d33e 2013-02-12 12:14:10 Add South-East Asian shaper Handles Tai Tham, Cham, and New Tai Lue for now.
5676d5d5 2013-02-12 10:31:14 [Indic] Make sure New Tai Lue works!
56800027 2013-02-12 09: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.
99749ca8 2013-02-12 09:44:35 [Myanmar] Add note re Uniscribe NOT applying 'mark'
b8427801 2013-02-11 17:02:17 Minor
419c933e 2013-02-11 16:16:16 [Myanmar] Fix handling of Punctuation and Symbol types Testing with "clusters" now on par with testing without them. 15 failures both.
0572c141 2013-02-11 16:06:02 [Myanmar] Fixup handling of joiners and GB characters
1c8654ea 2013-02-11 14:27:02 [Myanmar] Prevent reordering between Asat and Dot below Implemented as a hack for now. Myanmar failures down from 23 to 15. MYANMAR: 1123868 out of 1123883 tests passed. 15 failed (0.00133466%) The remaining 15 cases are all where the syllable is wrong according to the OpenType spec. We insert dottedcircle. Uniscribe fails to do that, but it also fails to reorder the prebase-reordering medial-Ra. So it gets it wrong.
98628cac 2013-02-11 13: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%)
1df56449 2013-02-11 14:17:54 Minor
54f7b4d9 2013-02-11 13:27:17 [OTLayout] Respect lookup-flags skipping over non-mark glyphs Before, when matching ligatures, we never skipping over base / liga glyphs even if that was what the LookupFlags asked for. Fixed now. We carefully reviewed all instances of this, and tested with Amiri as well as some Indic scripts, and are confident that this should NOT break anyone's fonts. It's also how Uniscribe does it, from what we can tell.
9082efc4 2013-02-11 13:14:15 [OTLayout] s/mark_skipping/skipping/ In aticipation of upcoming changes.
9621e0ba 2013-02-11 06:58:27 [Indic] Fix bug introduced in 8b217f5ac54aa0dcbba2dd6d59aa89dde33e56c2 Was breaking reph formation logic when the Ra is the only consonant. Devanagari regression fixed. Down to 57 failures again. Ouch.
6e74c642 2013-02-11 06:50:17 Improve normalization heuristic Before, for most scripts, we were not trying to recompose two characters if the second one had ccc=0. That fails for Myanmar where U+1026 decomposes to U+1025,U+102E, both of which have ccc=0. However, we do want to try to recompose those. We now check whether the second is a mark, using general category instead. At the same time, remove optimization that was conflicting with this. [Let the Ngapi hackfest begin!]
adff3778 2013-02-06 23:43:27 Revert "[Indic] Import ragel-generated Indic machine in git" This reverts commit fab7a71f110ed646745d54b23284537c50058c21. Conflicts: src/hb-ot-shape-complex-indic-machine.hh Keeping that generated file in-tree causes problems with processes like tinderbox that automatically fetch and build harfbuzz. It's harder to bootstrap harfbuzz now (as was previously), but I'm willing to give this another chance and see how it goes.
9de5f98f 2013-02-04 23:28:22 Bug 60035 - intermittent make install failure on hb-version.h
6c1e8b61 2013-02-04 23:24:16 Bug 59637 - check-exported-symbols.sh & check-internal-symbols.sh fail on mips/mipsel
bafdf3d9 2013-02-04 23:06:50 Merge check-internal-symbols.sh and check-exported-symbols.sh
e9171af5 2013-01-29 22:45:00 Bug 60053 - hb-common.cc:181:6: warning: ‘void free_langs()’ defined but not used
eb45c0a2 2013-01-16 22:07:50 Minor
52c8d122 2013-01-14 13:51:46 Minor
f88d3bd7 2013-01-14 00:33:58 Fix build with Sun compiler
08b29c08 2013-01-14 00:32:12 Revert "Minor" This reverts commit 0a492357016bc9a614d2a726f2006c10af68ca58. Enables code on more compilers.
e7846321 2013-01-14 00:27:21 Fix linking with non-gcc compilers
de649f07 2013-01-14 00:26:43 Fix residuals from fontconfig changes
2dcb333f 2013-01-10 01:17:59 Add atomic ops for Solaris Based on fontconfig patch from Raimund Steger.
69fd6e15 2013-01-10 00:03:36 Fix crasher during multi-thread shaper data creation Sample crash: 0 _hb_graphite2_shaper_face_data_destroy (data=0xffffffffffffffff) at ../../src/hb-graphite2.cc:129 1 0x00007ffff4271d7d in hb_graphite2_shaper_face_data_ensure ( face=<optimized out>) at ../../src/hb-shaper-list.hh:35 2 hb_shape_plan_plan (shaper_list=<optimized out>, num_user_features=0, user_features=0x0, shape_plan=0xf7b490) at ../../src/hb-shaper-list.hh:35 3 hb_shape_plan_create (face=<optimized out>, props=<optimized out>, user_features=0x0, num_user_features=0, shaper_list=<optimized out>) at ../../src/hb-shape-plan.cc:108 4 0x00007ffff4272c93 in hb_shape_plan_create_cached (face=0x10cf2b0, props=0x11980d8, user_features=0x0, num_user_features=<optimized out>, shaper_list=0x0) at ../../src/hb-shape-plan.cc:283
ecd454b3 2013-01-08 18:09:46 [Indic] In old-spec shaping, don't move viramas around if seq ends with one For example: u0c9a u0ccd u0c9a u0ccd with Lohit. See: https://bugs.freedesktop.org/show_bug.cgi?id=59118
e95e031b 2013-01-08 16:15:46 [GPOS] If an Anchor offset is NULL, return false If in a MarkPos table, a base has no anchor for a particular mark class, return NULL such that the subsequent subtables get a chance at it. Test case: hb-shape ./EBGaramond12-Regular.otf ἂ --features="ss20","smcp"
1172dc73 2013-01-07 16:46:37 Rename hb_buffer_clear() to hb_buffer_clear_contents() The previous name was clashing with harfbuzz.old. There are systems that need to link both... Clash-free now again.
7b912c19 2013-01-04 01:25:27 Remove a few unnecessary const's Apparently helps with MSVC compilation.
f0c82410 2013-01-03 00:07:16 [OTLayout] Always collect default language system in collect_lookups Not sure if this is the most desired behavior. It's the most easily defined though.
15e9e4e1 2013-01-03 00:04:40 [OTLayout] Fix feature iteration in collect_lookups Previous logic was just wrong.
733e8c0d 2013-01-03 00:00:23 [OTLayout] Whitespace
d37ae380 2013-01-02 23:57:36 [OTLayout] Handle required_feature_index in collect_lookups
11fba79e 2013-01-02 23:36:37 [OTLayout] Fix various introspection issues with ClassDef's As reported by Jonathan Kew.
7b1b720a 2013-01-02 23:02:59 Protect sets in-error from further modication Fixes test-set.c
8165f276 2013-01-02 22:50:36 [tests] Start adding tests for hb-set.h Fails now. Fixing.
11d29565 2013-01-02 17:41:27 Minor
596740db 2012-12-21 19:41:04 [Indic] Insert dottedcircle after a lone Malayalam dot-reph
6f69fa28 2012-12-21 16:51:15 Minor
f4abcbfc 2012-12-21 16:48:51 Minor
8b217f5a 2012-12-21 15:48:32 [Indic] Reorder Malayalam dot-reph to after base Test sequence is simple: U+0D4E,U+0D15. The doth-reph should be reordered to after the Ka. https://bugzilla.redhat.com/show_bug.cgi?id=799565
742c4ee9 2012-12-21 15:35:03 Minor
044d3852 2012-12-19 13:00:16 Bug 58498 - Tests fail with gold linker on ARM
b68b86da 2012-12-18 20:39:40 Use C++ linker if ICU is disabled Bug 54948 - Undefined symbols: "operator delete(void*)" "operator new(unsigned long)" "___cxa_pure_virtual"
1ffd23cb 2012-12-17 23:29:15 [OTLayout] Limit alternate-location FeatureParams to 'size' feature
efe252e6 2012-12-17 23:21:05 [OTLayout] Fix 'size' featureParams implementation Looks at alternate location now.
e77b4425 2012-12-17 18:42:59 [OTLayout] Fix tracing
9b54562d 2012-12-17 13:55:36 [OTLayout] Towards correct FeatureParams handling