src/hb-buffer.cc


Log

Author Commit Date CI Message
Behdad Esfahbod d35c73cd 2022-03-22T10:20:28 [buffer] Whitespace
Behdad Esfahbod 03085132 2022-03-21T18:06:33 [buffer] Fix out-buffer under memory-alloc failure This was broken in July refactoring of the buffer, and exposed to ReverseChainSingleSubstFormat1 in 3807061d634b60bd6235d6e1d8c47a034377f924 Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38800 https://bugs.chromium.org/p/chromium/issues/detail?id=1303552
Behdad Esfahbod b263371b 2022-02-12T15:06:47 Merge pull request #3398 from harfbuzz/buffer-verify Add HB_BUFFER_FLAG_VERIFY
Khaled Hosny 98da3306 2022-01-31T18:12:01 3.3.0
Behdad Esfahbod 7c704d89 2022-01-28T12:38:32 [buffer] Make hb_buffer_append() take a const argument
Behdad Esfahbod d98a0fc8 2021-12-04T20:43:27 [buffer] Consolidate glyph-flags implementation
Behdad Esfahbod f91ce56e 2021-12-04T20:07:05 [buffer] Add default cluster value in find_min_cluster
Behdad Esfahbod 56d08195 2021-12-04T19:59:55 [buffer] Rename _unsafe_to_break_set_mask to _infos_set_glyph_flags
Behdad Esfahbod 3122c2cd 2021-12-04T19:50:33 [buffer] Add HB_GLYPH_FLAG_UNSAFE_TO_CONCAT Fixes https://github.com/harfbuzz/harfbuzz/issues/1463
Behdad Esfahbod bea5369c 2022-01-04T10:52:05 [buffer] Rename swap_buffers() to sync()
Behdad Esfahbod d1e7df5c 2022-01-04T07:32:04 [buffer] Add enter()/leave() pair around shape()
Behdad Esfahbod 43be5ba4 2022-01-04T07:26:53 [buffer] Group shape-related members together
Behdad Esfahbod 52f5711e 2022-01-03T11:57:42 [buffer] Add hb_buffer_create_similar() Fixes https://github.com/harfbuzz/harfbuzz/issues/1555
Behdad Esfahbod f643b81f 2022-01-03T11:45:31 [buffer] Clean up internal state bookkeeping hb_buffer_reset() was NOT resetting cluster_level. Ouch! Fix that. Part of https://github.com/harfbuzz/harfbuzz/issues/1555
Behdad Esfahbod 36e9f467 2022-01-03T11:23:14 [buffer] Overlay segment-properties in hb_buffer_append() Part of https://github.com/harfbuzz/harfbuzz/issues/1555
Behdad Esfahbod 6a669928 2022-01-03T11:21:29 Add hb_segment_properties_overlay() New API: + hb_segment_properties_overlay()
Behdad Esfahbod 1b78e04c 2021-12-10T12:45:43 [buffer] Add ::reverse_groups()
Behdad Esfahbod 4cd96e73 2021-12-10T12:33:21 [buffer] Inline revers_range() / reverse()
Behdad Esfahbod 70f8c57e 2021-12-04T19:49:23 [buffer] Rename find_min_cluster
Khaled Hosny 77eeec53 2021-11-03T23:31:03 3.1.0
Behdad Esfahbod da500568 2021-10-26T08:02:29 [API] Add hb_buffer_[sg]et_not_found_glyph() and --not-found-glyph Instead of using gid=0 when a character is not found in the font, client can now set a custom value. This is useful for shaper-driven font fallback and to differentiate that from .notdef glyph. Fixes https://github.com/harfbuzz/harfbuzz/issues/1360
Behdad Esfahbod 4b5a81f1 2021-08-25T15:20:54 [buffer] Fix hb_buffer_append() pre/post-context logic Part of https://github.com/harfbuzz/harfbuzz/pull/3150
Khaled Hosny 430224b1 2021-08-16T15:40:47 [buffer] Handle pre/post-context in buffer_append Fixes https://github.com/harfbuzz/harfbuzz/issues/1843
Behdad Esfahbod 09c3b82f 2021-07-29T17:49:10 [buffer] When shifting forward, leave no gap Trying to see if this fixes the fuzzer issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36236
Behdad Esfahbod 3e266e5f 2021-07-12T17:30:26 [buffer] Update comments
Behdad Esfahbod 3807061d 2021-07-12T17:02:03 [ot-layout] Don't remove_output() before reverse substitution No need anymore, because of new swap_buffers() semantics. Just assert instead.
Behdad Esfahbod 10a9960f 2021-07-12T17:09:03 [buffer] Restructure swap_buffers() Is more of a "commit" operation now. Will rename when ready.
Behdad Esfahbod 05c17787 2021-07-12T16:55:08 [buffer] Rewind cursor in clear_output()
Behdad Esfahbod 69310f14 2021-07-09T17:24:29 [buffer] Change nil buffer have_output to false Seems like a historical artefact that it was true.
Behdad Esfahbod 2337f0d0 2021-07-08T10:58:50 Internally use hb_malloc/.../hb_free instead of malloc/.../free Redefining those stock names as macros was conflicting with gcc 10 headers. Fixes https://github.com/harfbuzz/harfbuzz/issues/3044
Behdad Esfahbod 93e6a9bc 2021-06-15T15:38:49 Revert "Remove unneeded buffer clear_output / remove_output calls" This reverts commit 06175b71433bc42edc07d342e6354035e37fb5fd. One of the sanitizers is failing. Pushing again as PR to debug. I have suspicions.
Behdad Esfahbod 06175b71 2021-06-15T14:33:27 Remove unneeded buffer clear_output / remove_output calls Made sure clear_output is always paired with swap_buffers. Trying to see if we can move towards RAII-like buffer iterators instead of the buffer keeping an iterator internally.
Behdad Esfahbod c61ce962 2021-06-10T17:33:29 [buffer] In hb_buffer_get_positions(), return NULL if inside message callback As discussed in https://github.com/harfbuzz/harfbuzz/issues/2468#issuecomment-645666066 Part of fixing https://github.com/harfbuzz/harfbuzz/issues/2468
Behdad Esfahbod 34a1204f 2021-03-15T14:39:06 [buffer] HB_NODISCARD output_glyph() Also, generalize and use replace_glyphs() in morx where output_glyph() was used in a loop.
Behdad Esfahbod b05e5d9a 2021-03-15T14:08:08 [buffer] HB_NODISCARD next_glyphs()
Behdad Esfahbod 05d2d37f 2021-03-15T13:43:29 [buffer] HB_NODISCARD ensure()
Behdad Esfahbod 906c9928 2021-03-15T13:13:45 [buffer] Return success status from buffer ops that can fail Previous error-handling philosophy was that user doesn't need to immediately know whether operation failed. But as can be seen after we added malloc-failing fuzzing, there's just so many places in the code that a failure of these operations needs to be mitigated before further operations. So I'm moving towards returning success here, and possibly making it nodiscard.
Behdad Esfahbod 2d39031f 2020-06-28T20:48:48 [buffer/set/map] Move immutable check only to C API boundary The immutable objects are a concept only enforced by the C API. So move checks only to that region. This does assume that the rest of the code is careful not getting into these internal methods on immutable objects, which something we do, but have no way of enforcing (currently). .
Behdad Esfahbod 21433fa5 2020-06-28T20:46:02 m[buffer] In hb_buffer_append() don't change until allocation success
Behdad Esfahbod 3b91e0b5 2020-06-28T20:33:54 m[buffer] Rename internal variable
Behdad Esfahbod 9fcba109 2020-06-28T20:30:39 [buffer] Make swap_buffers() copy rest
Khaled Hosny 9936490c 2020-12-31T00:19:29 [docs] Invalid use of "optional" annotation It is valid only for out and inout parameters. Fixes https://github.com/harfbuzz/harfbuzz/issues/1787
Khaled Hosny 2fdab788 2020-12-30T23:44:30 [docs] Complete hb-buffer docs a bit
Khaled Hosny cb319f0d 2020-12-24T21:47:05 [docs] Add some missing annotations to hb-buffer.cc
Khaled Hosny f88e845f 2020-12-24T21:28:37 [docs] Minor fixes
Nathan Willis e8de26e1 2019-04-21T20:31:54 [docs] Add gtkdoc comments to hb-buffer
Khaled Hosny 71a3b54f 2020-12-23T15:33:15 2.7.3
Behdad Esfahbod 77e704d1 2020-10-15T02:02:04 [buffer] Add assert_unicode()/assert_glyphs() and use internally
Behdad Esfahbod 3232e6f2 2020-10-15T00:20:17 [buffer] Add hb_buffer_has_positions() Fixes https://github.com/harfbuzz/harfbuzz/issues/2716
Ebrahim Byagowi 48ad7459 2020-07-29T08:09:08 [ENOMEM] Fix buffer's content check logic So now rest of shape fuzzer also can be enabled. Fixes #2571
Ebrahim Byagowi d0e2addd 2020-07-18T22:14:52 minor
Ebrahim Byagowi 2dda6dd7 2020-04-20T14:12:45 minor, tweak spacing turn 8 spaces to tab, add space before Null/Crap
Garret Rieger 14a7b6f1 2020-02-26T15:09:04 Set hb_buffer_t to use array_t.reverse().
Evgeniy Reizner b79ceac3 2019-12-15T16:50:01 Prefer UINT_MAX instead of uint overflow. Also, prefer HB_FEATURE_GLOBAL_START and HB_FEATURE_GLOBAL_END.
Evgeniy Reizner b618e0ae 2019-12-15T16:26:50 Remove non-breaking spaces from comments. `0xC2A0` was used, for some reasons. It's not really a problem, but Qt Creator constatly trying to replace them with regular spaces, so I have to edit those files separately.
Evgeniy Reizner 780d640c 2019-12-15T16:11:37 Remove unnecessary check in hb_buffer_t::set_masks. Bounds are already checked by the caller. Closes #2073
Behdad Esfahbod 5fddc5f1 2019-11-20T13:07:26 Use foreach_cluster
Behdad Esfahbod 029775bc 2019-10-09T11:00:09 [buffer] Minor; improve HB_NO_BUFFER_MESSAGE
Ebrahim Byagowi 670fec23 2019-10-10T09:21:08 Minor, add a zero length tolerant memset, hb_memset
Ebrahim Byagowi e6909ee5 2019-09-18T22:12:25 minor
Ebrahim Byagowi bfb155a5 2019-09-18T00:44:52 Don't call memset when length is zero Fixes this -fno-sanitize-recover=undefined check, /buffer/positions/empty: hb-buffer.cc:327:11: runtime error: null pointer passed as argument 1, which is declared to never be null /usr/include/string.h:60:62: note: nonnull attribute specified here #0 0x4cf31c in hb_buffer_t::clear_positions() /home/user/code/harfbuzz/src/hb-buffer.cc:327:3 #1 0x4d4dd4 in hb_buffer_get_glyph_positions /home/user/code/harfbuzz/src/hb-buffer.cc:1418:13 #2 0x4cb553 in test_buffer_positions /home/user/code/harfbuzz/test/api/test-buffer.c:305:3 #3 0x7f324187bf49 (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72f49) #4 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) #5 0x7f324187be7a (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x72e7a) #6 0x7f324187c121 in g_test_run_suite (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73121) #7 0x7f324187c140 in g_test_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x73140) #8 0x4c8bd3 in hb_test_run /home/user/code/harfbuzz/test/api/./hb-test.h:88:10 #9 0x4c8bd3 in main /home/user/code/harfbuzz/test/api/test-buffer.c:884:10 #10 0x7f324086db96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310 #11 0x41e919 in _start (/home/user/code/harfbuzz/test/api/test-buffer+0x41e919)
Ebrahim Byagowi a0b4ac4d 2019-08-24T17:57:14 Turn 8 spaces to tab across the project According to the current code style of the project
Behdad Esfahbod 7f3b409e 2019-06-20T14:24:43 Fix build with -O0 message_impl was not defined. That causes trouble if compiler didn't optimize the unreachable call out...
Behdad Esfahbod eb9798ef 2019-06-18T13:29:55 [config] Dont' compile buffer message API if HB_NO_BUFFER_MESSAGE Part of https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod c7439d4e 2019-06-05T12:13:49 Slightly massage buffer-messaging commit Saves a few bytes.
Ebrahim Byagowi 815f002b 2019-06-05T10:38:06 Don't use vsnprintf when HB_NO_BUFFER_MESSAGE is defined
Behdad Esfahbod 41248cce 2019-05-07T20:54:31 Remove MIN/MAX in favor of hb_min/hb_max
Ebrahim Byagowi e4120085 2018-12-17T21:31:01 Remove redundant void from C++ sources (#1486)
Ebrahim Byagowi 7ee5c523 2018-12-12T15:14:37 minor style fix, use void in methods on no argument
Behdad Esfahbod 93ef20a8 2018-11-03T15:03:06 Replace most uses of is_inert with is_immutable
Behdad Esfahbod cf5fa57f 2018-10-27T04:50:38 [docs] Change section titles again I think I like the uniform "hb-*" more.
Behdad Esfahbod 5dd86aa3 2018-10-27T04:28:40 [docs] Rename section titles to object names More useful.
Behdad Esfahbod 00cf4e5e 2018-10-27T04:07:33 [docs] Fill in some sections
Behdad Esfahbod 8d304ef7 2018-10-16T19:04:48 [utf] Add UTF16-BE and UTF32-BE
Behdad Esfahbod 3d9a0306 2018-10-18T05:58:17 2.0.0
Behdad Esfahbod 2e7c7165 2018-10-16T18:35:03 [buffer] Add an assert See if it helps debugging https://bugs.chromium.org/p/chromium/issues/detail?id=895117
David Corbett a03f5f4d 2017-12-28T22:59:29 Replace "ISO 639" with "BCP 47" `hb_language_from_string` accepts not only ISO 639 but also BCP 47. Not all ISO 639 codes are valid BCP 47 tags but the function does not accept overlong language subtags anyway.
Behdad Esfahbod e42cd58c 2018-10-07T20:46:11 Rename invisible_codepoint to invisible_glyph in API Deleted recently added API: hb_buffer_set_invisible_codepoint() hb_buffer_get_invisible_codepoint() hb-shape / hb-view --invisible-codepoint New API: hb_buffer_set_invisible_glyph() hb_buffer_get_invisible_glyph() hb-shape / hb-view --invisible-glyph Fixes https://github.com/harfbuzz/harfbuzz/issues/1216
Behdad Esfahbod 14ebf8af 2018-10-07T20:35:06 [buffer] Improve shift_forward() "Improve" is a strong word in this case though, I understand.
Behdad Esfahbod 71b65eb2 2018-10-07T18:41:52 Add API for setting invisible-codepoint Fixes https://github.com/harfbuzz/harfbuzz/issues/1216 New API: hb_buffer_set_invisible_codepoint() hb_buffer_get_invisible_codepoint() hb-shape / hb-view --invisible-codepoint
Behdad Esfahbod 2a6f1521 2018-10-03T20:09:14 [buffer] Inline some more
Behdad Esfahbod ba0f0f15 2018-09-30T03:49:52 Document setlocale() threadsafety issue "Fixes" //github.com/harfbuzz/harfbuzz/issues/1191
Behdad Esfahbod 55bae682 2018-09-24T10:43:06 [docs] A few improvements If we wrote just this much every day...
Behdad Esfahbod 606bf574 2018-09-16T19:33:48 Revert forcing use of single-parameter static_assert() Some clang versions define static_assert as a macro apparently, so we cannot redefine it... This reverts commit 94bfea0ce6a7b4d5641c198d50751748a353df11. This reverts commit 4e62627831e7457ed60ff87712570065b14b200a.
Behdad Esfahbod 4e626278 2018-09-16T18:09:36 Enforce single-param static_assert() only So we don't accidentally break it again.
Behdad Esfahbod c77ae408 2018-08-25T22:36:36 Rename hb-*private.hh to hb-*.hh Sorry for the noise, downstream custom builders. Please adjust.
Behdad Esfahbod f0ef096b 2018-08-13T10:30:41 Don't add reference in get_unicode_funcs() functions Users don't expect a new reference returned from a get() function. Indeed, all users of that API I foud where NOT destroying the reference. Just change the implementations to NOT return a reference. This applies to the following APIs: hb_unicode_funcs_get_default() hb_glib_get_unicode_funcs() hb_icu_get_unicode_funcs() Fixes https://github.com/harfbuzz/harfbuzz/issues/1134
Behdad Esfahbod 3506672c 2018-08-06T06:17:48 Port _nil objects to Null() machinery Finally, unified!
Behdad Esfahbod bddeb2b1 2018-07-10T14:12:37 Minor renamings of internal inline functions
Behdad Esfahbod 7185b273 2018-05-31T20:03:00 Rename in_error to !successful Towards possibly using Null pool for some nil objects.
Behdad Esfahbod f673cfbd 2018-05-07T13:58:32 Support scripts that are written both LTR and RTL Right now only Old Italic is marked as such. Fixes https://github.com/harfbuzz/harfbuzz/issues/1000
Behdad Esfahbod cc1e0840 2018-02-06T10:20:48 [buffer] Tweak diff re glyph_flags again We expect the buffer to have no flags that the reference doesn't... Meh. Makes MORX tests pass now. Need to better define the behavior.
Ebrahim Byagowi d49ae515 2018-02-06T13:48:10 Fix hb-buffer logic error
Behdad Esfahbod 54e6efad 2018-02-04T14:58:02 [aat] Fix unsafe-to-break At any position, if state is not zero, mark unsafe-to-break before, unless we can reason it safe. At any position, if there's an action entry for end-of-text, mark unsafe to break. Also changes buffer diff impl to allow for flag differences as long as the buffer glyph flags are superset of reference glyph flags. With this, all MORX tests pass.
Behdad Esfahbod baf7779d 2017-11-14T21:53:48 Limit how much recursion GSUB/GPOS does This only counts recursions right now. Good start. Hopefully... Fixes https://github.com/behdad/harfbuzz/issues/429
ebraminio 102f5ead 2017-11-01T02:10:18 Enable PSVita (arm-none-eabi) compile again and add it to CI (#594)
Behdad Esfahbod dbdbfe3d 2017-10-15T12:11:08 Use nullptr instead of NULL
Behdad Esfahbod c3448e8d 2017-10-15T12:02:00 Use static_assert instead of custom ASSERT_STATIC
Behdad Esfahbod d03f11f2 2017-09-04T20:14:13 Fix buffer_diff for empty buffers If buffers are empty, content type should be ignored. This fixes last of the failing tests: fuzzed.tests. Green again!
Behdad Esfahbod 099472e0 2017-08-30T16:45:06 hb_buffer_diff() tweak I like to have a mode where CONTAINS_NOTDEF and CONTAINS_DOTTEDCIRCLE are not returned. Abused a value of -1 for that. hb-shape now uses it. Fixes two of the six tests failing with --verify in test/shaping/run-tests.sh.