src/hb-buffer-private.hh


Log

Author Commit Date CI Message
Jonathan Kew 331d66c7 2014-07-19T23:09:09 Add function to compare two buffers Based on patch from Jonathan Kew. Needs more cleaning up and documentation. New API: hb_buffer_diff_flags_t hb_buffer_diff()
Behdad Esfahbod 1c17c2bd 2017-08-11T19:06:07 [unsafe-to-break] Copy flag to all glyphs in a cluster Makes consumption easier.
Behdad Esfahbod e2a2b5b2 2017-08-10T20:10:12 [unsafe-to-break] Be careful with flag propagation when merging clusters
Behdad Esfahbod 40bd7e9a 2016-05-02T14:47:45 [unsafe-to-break] Add UNSAFE_TO_BREAK flag Not all shapers code is updated to set this properly. GSUB and Arabic shaper are updated. GPOS and other shapers are NOT. Fixes https://github.com/behdad/harfbuzz/issues/224
Behdad Esfahbod 33317310 2016-08-08T17:24:04 Fix sign of shift operators This one: map->mask = (1 << (next_bit + bits_needed)) - (1 << next_bit); before the fix, the shift was done as an int, causing overflow if it ever got to 1 << 31. Sprinkle 'u's around. Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=634805
Behdad Esfahbod 0c7fb741 2016-02-25T14:40:09 Speed up buffer variable allocation sanity check This makes defining HB_NDEBUG much less relevant, to the point of irrelevance. Sorry about all the fuss in previous release!
Behdad Esfahbod 91dd1156 2016-02-25T13:56:47 Add HB_NDEBUG API changes: - If NDEBUG is defined, define HB_NDEBUG - Disable costlier sanity checks if HB_NDEBUG is defined. In 1.2.3 introduced some code to disable costly sanity checks if NDEBUG is defined. NDEBUG, however, disables all assert()s as well. With HB_NDEBUG, one can disable costlier checks but keep assert()s. I'll probably add a way to define HB_NDEBUG automatically in release tarballs. But for now, production systems that do NOT define NDEBUG, are encouraged to define HB_NDEBUG for our build.
Behdad Esfahbod 98816502 2016-02-25T12:23:02 Disable internal buffer variable bookkeeping in NDEBUG builds Saves some sweet time and binary size!
Behdad Esfahbod cbc3a76c 2016-02-11T16:48:13 [GPOS] Merge fixing of offsets for cursive and mark attachments Part of fixing https://github.com/behdad/harfbuzz/issues/211
Behdad Esfahbod 0475ef2f 2015-12-18T18:17:07 [buffer] Add debugging, aka, message, API Currently just announces lookup applications. Message-API *will* change. hb-shape / hb-view are updated to print-out messages to stder if --debug is specified.
Behdad Esfahbod 13188cba 2015-11-19T11:59:03 Revert "Fix hang in OOM situations" This reverts commit f0599db761d7fc2d585d86e757a797f75ebc7499. Commit abadc1717d997b69f987fdf1be9e12156d2d13d6 provides a better fix for this.
Behdad Esfahbod 18e1c6b6 2015-11-19T11:50:58 Revert "Make sure we make progress in OOM situations" This reverts commit 68b507a3c3c62c28c38e13fee733702bb703b6ca. Commit abadc1717d997b69f987fdf1be9e12156d2d13d6 provides a better fix for this.
Chun-wei Fan 167c3271 2015-11-09T17:17:56 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.
Behdad Esfahbod f1c4adbc 2015-11-06T09:46:05 Fix typo
Behdad Esfahbod 68b507a3 2015-11-06T00:09:26 Make sure we make progress in OOM situations
Behdad Esfahbod f0599db7 2015-11-05T23:52:41 Fix hang in OOM situations Fixes https://github.com/behdad/harfbuzz/issues/161
Behdad Esfahbod 4301703b 2015-11-05T23:44:59 Limit buffer max size growth https://github.com/behdad/harfbuzz/issues/161
Behdad Esfahbod 73fec399 2015-11-05T15:22:18 Reserve a few scratch-flags bits for complex shapers
Behdad Esfahbod 550bd14d 2015-11-04T22:58:58 Actually commit changes for previous commit
Behdad Esfahbod e3e4bb01 2015-11-04T18:58:02 Don't do fractions if buffer is ASCII-only
Behdad Esfahbod 6986208b 2015-11-04T18:46:22 Optimize runs without Default_Ignorable's Now that we have a buffer-wide scratch flags facility, use it to optimize away a few passes.
Behdad Esfahbod 49ef6309 2015-11-04T17:27:07 Adjust the width of various spaces if font does not cover them See discussion here: https://github.com/behdad/harfbuzz/commit/81ef4f407d9c7bd98cf62cef951dc538b13442eb There's no way to disable this fallback, but I don't think it would be needed. Let's hope for the best! Fixes https://github.com/behdad/harfbuzz/issues/153
Behdad Esfahbod aa7044de 2015-11-04T16:25:57 Generalize flags types
Behdad Esfahbod 85658394 2015-11-04T14:46:52 Protect against possible invalid-memory access after OOM
Behdad Esfahbod 4cc80bed 2015-11-04T14:46:10 Fix typo! Ouch! Fortunately that function was unused.
Behdad Esfahbod e995d33c 2015-09-01T16:13:32 [OT] Merge clusters when reordering marks for normalization Fixes https://bugzilla.gnome.org/show_bug.cgi?id=541608 and cluster test.
Behdad Esfahbod 2dbd3d29 2015-07-22T18:28:39 Fix hide-ignorables if font doesn't have space glyph Was broken by 82b521aeb7cc73879b44ca4278d6fa8b4347527f, as we have positioning data by then and can't use the output buffer. Ouch!
Behdad Esfahbod 376d587f 2015-07-22T16:51:12 Implement more granular cluster-merging TODO: Documentation. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71445
Behdad Esfahbod 701112da 2015-07-22T15:42:20 [ot] Simplify form_clusters()
Behdad Esfahbod 5f13bbd9 2015-06-19T13:31:49 When removing default-ignorables, merge clusters Fixes test-shape, and: https://code.google.com/p/chromium/issues/detail?id=497578
Behdad Esfahbod 82b521ae 2015-06-19T11:57:57 Rewrite hide_default_ignorables Separate the loops for the two cases of replacing with space and deleting. For deleting, use the out-buffer machinery. Needed for upcoming cluster merge fix.
Behdad Esfahbod b5fbc3b8 2014-08-11T18:40:01 API: Do not clear buffer-flags in hb_buffer_clear_contents() After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't need to set flags for different pieces of text. The flags now are something the client sets up once, depending on how it actually uses the buffer. As such, don't clear it in clear_contents(). Tests updated.
Behdad Esfahbod a6b8dc87 2014-08-11T15:08:19 [coretext] Fix buffer resize handling We can't really resize buffer and continue in this shaper as we are using the scratch buffer for string_ref and log_cluster. Restructure shaper to retry from (almost) scratch.
Behdad Esfahbod 976c8f45 2014-07-16T15:34:20 New API: hb_buffer_[sg]et_replacement_codepoint() With this change, we now by default replace broken UTF-8/16/32 bits with U+FFFD. This can be changed by calling new API on the buffer. Previously the replacement value used to be (hb_codepoint_t)-1. Note that hb_buffer_clear_contents() does NOT reset the replacement character. See discussion here: https://github.com/behdad/harfbuzz/commit/6f13b6d62daae4989e3cc2fe4b168e5c59650964 New API: hb_buffer_set_replacement_codepoint() hb_buffer_get_replacement_codepoint()
Behdad Esfahbod 2a8c49ad 2013-12-11T20:22:28 Remove unnecessary includes
Behdad Esfahbod 02c6c8cd 2013-11-15T13:05:38 Set buffer content type to INVALID in hb_buffer_set_length(0) Previously we were only setting this in hb_buffer_clear_contents(), but set_length(0) is a valid way to reinitialize buffer to use with new text.
Behdad Esfahbod 061cb464 2013-11-13T14:50:25 Use long alignment for scratch buffer Fixes last of scratch alignment warnings in hb-coretext.
Behdad Esfahbod 68c372ed 2013-11-13T14:44:01 More scratch-buffer cleanup
Behdad Esfahbod 16f175cb 2013-11-12T17:22:49 Fix scratch-buffer alignment warnings
Behdad Esfahbod 6b65a76b 2013-10-14T18:51:39 [otlayout] Fix (Chain)Context recursion! Previously we only supported recursive sublookups with ascending indices. We were also not correctly handling non-1-to-1 recursed lookups. Fix all that! Fixes the three tests in test/shaping/tests/context-matching.tests, which were derived from NotoSansBengali and NotoSansDevanagari among others.
Behdad Esfahbod 8b63efb6 2013-05-02T14:29:32 Minor
Behdad Esfahbod 847794e9 2013-02-27T17:59:28 [buffer] Implement buffer deserialization for format=text Using a ragel machine.
Behdad Esfahbod 3f82f8ff 2012-11-15T18:45:31 Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties()
Behdad Esfahbod f3064103 2012-11-15T18:39:46 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.)
Behdad Esfahbod 66ac2ff3 2012-11-13T16:26:32 API change: Remove "mask" from hb_buffer_add() I don't expect anybody using hb_buffer_add(), so this shouldn't break anyone's code.
Behdad Esfahbod 0c7df222 2012-11-13T14:42:35 Add buffer flags New API: hb_buffer_flags_t HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_BOT HB_BUFFER_FLAG_EOT HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES hb_buffer_set_flags() hb_buffer_get_flags() We use the BOT flag to decide whether to insert dottedcircle if the first char in the buffer is a combining mark. The PRESERVE_DEFAULT_IGNORABLES flag prevents removal of characters like ZWNJ/ZWJ/...
Behdad Esfahbod 82ecaff7 2012-11-13T13:57:52 Add hb_buffer_clear() Which is like _reset(), but does NOT clear unicode-funcs.
Behdad Esfahbod 0bc7a384 2012-10-29T22:02:45 [OT] Fix ReverseChainingSubst We should make it clear that we don't want output buffer in this case, otherwise buffer->backtrack_len() would be wrong.
Behdad Esfahbod 05207a79 2012-09-25T17:44:53 [buffer] Save pre/post textual context To be used for a variety of purposes. We save up to five characters in each direction. No public API changes, everything is taken care of already. All clients need to do is to call hb_buffer_add_utf* with the full text + segment info (or at least some context) instead of just passing in the segment. Various operations (hb_buffer_reset, hb_buffer_set_length, hb_buffer_add*) automatically reset the relevant contexts.
Behdad Esfahbod 96fdc04e 2012-09-06T22:26:16 Add hb_buffer_[sg]et_content_type And hb_buffer_content_type_t and enum values.
Behdad Esfahbod b85800f9 2012-08-31T18:12:01 [Indic] Implement dotted-circle insertion for broken clusters No panic, we reeally insert dotted circle when it's absolutely broken. Fixes most of the dotted-circle cases against Uniscribe. (for Devanagari fixes 80% of them, for Khmer 70%; the rest look like Uniscribe being really bogus...) I had to make a decision. Apparently Uniscribe adds one dotted circle to each broken character. I tried that, but that goes wrong easily with split matras. So I made it add only one dotted circle to an entire broken syllable tail. As in: "if there was a dotted circle here, this would have formed a correct cluster." That works better for split stuff, and I like it more.
Behdad Esfahbod 1be368e9 2012-08-31T16:29:17 Minor
Behdad Esfahbod 965c280d 2012-08-29T13:59:16 Add HB_BUFFER_ASSERT_VAR To be used in places we access buffer vars...
Behdad Esfahbod 801298b5 2012-08-08T14:26:36 Fix cast https://bugs.freedesktop.org/show_bug.cgi?id=53233
Behdad Esfahbod 69cc492d 2012-07-31T14:51:36 [buffer] Minor
Behdad Esfahbod 2f87cebe 2012-07-27T04:02:38 Implement shape_plan caching Should give us some performance boost.
Behdad Esfahbod ea278d38 2012-07-27T02:12:28 Partially switch ot shaper to shape_plan
Behdad Esfahbod d16ccc4a 2012-07-18T15:43:55 Leave one extra item at the end of buffer allocation Just in case, for the times we do out-of-bounds access. jk
Behdad Esfahbod 1bc1cb36 2012-06-16T15:21:55 Make source more digestable for gobject-introspection
Behdad Esfahbod e085fcf7 2012-06-08T21:45:00 Remove unused buffer->replace_glyphs_be16
Behdad Esfahbod 2a3d911f 2012-06-07T17:31:46 Fix alignment-requirement missmatch Detected by clang and lots of cmdline options.
Behdad Esfahbod 6220e5fc 2012-06-06T03:30:09 Add ASSERT_POD for most objects
Behdad Esfahbod 0594a244 2012-06-05T20:35:40 Cleanup TRUE/FALSE vs true/false
Behdad Esfahbod 99c26957 2012-05-13T15:45:18 Add accessort to buffer for current info, current pos, and prev info
Behdad Esfahbod 8e3715f8 2012-04-23T22:18:54 Minor
Behdad Esfahbod d4cc4471 2012-04-07T21:52:28 Move code around, in prep for Thai/Lao shaper
Behdad Esfahbod 9ebe8c02 2011-08-26T09:29:42 Add buffer->replace_glyphs()
Behdad Esfahbod 02aeca98 2011-08-04T22:31:05 [API] Changes to main shape API hb_shape() now accepts a shaper_options and a shaper_list argument. Both can be set to NULL to emulate previous API. And in most situations they are expected to be set to NULL. hb_shape() also returns a boolean for now. If shaper_list is NULL, the return value can be ignored. shaper_options is ignored for now, but otherwise it should be a NULL-terminated list of strings. shaper_list is a NULL-terminated list of strings. Currently recognized strings are "ot" for native OpenType Layout implementation, "uniscribe" for the Uniscribe backend, and "fallback" for the non-complex backend (that will be implemented shortly). The fallback backend never fails. The env var HB_SHAPER_LIST is also parsed and honored. It's a colon-separated list of shaper names. The fallback shaper is invoked if none of the env-listed shapers succeed. New API hb_buffer_guess_properties() added.
Behdad Esfahbod c605bbbb 2011-08-04T20:00:53 Remove C++ guards from source files Where causing issues for people with MSVC.
Behdad Esfahbod e62df436 2011-08-03T17:38:54 Add internal hb_buffer_t::get_scratch_buffer()
Behdad Esfahbod b65c0602 2011-07-28T16:48:43 Formalize buffer var allocations
Behdad Esfahbod a9ad3d34 2011-07-28T15:42:18 Move more code around Buffer var allocation coming into shape
Behdad Esfahbod f4a579bc 2011-07-25T16:20:16 Add internal API for buffer var allocation
Behdad Esfahbod 468e9cb2 2011-07-22T11:28:07 Move buffer methods into the object
Behdad Esfahbod 9111b21e 2011-07-21T00:58:29 Add _hb_buffer_output_glyph() and _hb_buffer_skip_glyph()
Behdad Esfahbod 31f18abe 2011-06-15T09:49:58 Minor compiler warning fixes
Behdad Esfahbod e0db4b86 2011-04-28T12:56:49 [buffer] More error handling Should be all set now.
Behdad Esfahbod fca368c4 2011-04-21T18:24:02 Add hb_object_header_t which is the common part of all objects Makes way for adding arbitrary user_data support.
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 fb194b87 2011-04-20T02:00:47 unicode: Cleanup implementation
Behdad Esfahbod c0af193c 2011-04-15T19:26:24 Change buffer default properties to invalid This includes HB_DIRECTION_INVALID and HB_SCRIPT_INVALID. The INVALID will cause a "guess whatever from the text" in hb_shape(). While it's not ideal, it works better than the previous defaults at least (HB_DIRECTION_LTR and HB_SCRIPT_COMMON).
Behdad Esfahbod 8f0d7e0c 2011-04-15T18:59:56 Remove hb_buffer_clear_positions(), add hb_ot_layout_position_start()
Behdad Esfahbod cc1a8a93 2011-01-06T14:58:52 Fix ChanContext backtrack matching with GPOS Reported on mailing list by Keith Stribley and Khaled Hosny.
Behdad Esfahbod dd2ffd28 2010-10-27T16:57:01 Minor renaming
Behdad Esfahbod 98370e89 2010-10-27T17:39:01 WIP removing external synthesized GDEF support and implementing it internally
Behdad Esfahbod 870e2d6e 2010-10-27T17:37:20 Remove unused function
Behdad Esfahbod 1115890b 2010-10-27T17:07:04 More cleanup
Behdad Esfahbod dbf56b1d 2010-10-27T17:06:12 More lig-id cleanup
Behdad Esfahbod fe263272 2010-10-27T16:51:02 Move setting lig_id/component out of buffer and to the gsub code
Behdad Esfahbod 88474c6f 2010-10-27T14:42:15 Get rid of the OpenType-specific internal buffer representation Add variant integers to buffer item types. More cleanup coming.
Behdad Esfahbod bd7378b2 2010-10-13T18:33:16 Massage mask setting a bit more Still finding the exact correct way the masks should be set.
Behdad Esfahbod 57ac0ecb 2010-10-12T17:07:02 Merge clearing masks and setting global masks
Behdad Esfahbod a7c5046d 2010-10-08T18:47:47 Add private hb_segment_properties_t
Behdad Esfahbod 4e4ef24e 2010-07-23T17:22:11 Towards separating bit allocation from shaping
Behdad Esfahbod acdba3f9 2010-07-23T15:11:18 Prefer C linkage
Behdad Esfahbod da8edbb6 2010-06-09T07:15:39 Fix header
Behdad Esfahbod 81c5e872 2010-05-28T18:31:16 Allow disabling default features Patch from Jonathan Kew
Behdad Esfahbod 1ce7b87c 2010-05-21T17:31:45 Cleanup bitmask allocation
Behdad Esfahbod a6a79df5 2010-05-14T23:20:16 Handle malloc failture in the buffer