Behdad Esfahbod [Wed, 3 Apr 2019 21:18:19 +0000 (14:18 -0700)]
[iter] Use different SFINAE scheme to make MSVC happy
From Orvid King: TLDR; MSVC has some issues using sizeof(declval<T>()) for
SFINAE of templated types, so I just used SFINAE in a different context where
MSVC doesn't have the issue.
Behdad Esfahbod [Wed, 3 Apr 2019 21:15:01 +0000 (14:15 -0700)]
[meta] Add hb_is_same()
Behdad Esfahbod [Wed, 3 Apr 2019 06:10:03 +0000 (23:10 -0700)]
[serialize] Actually reclaim storage from duplicate objects
Behdad Esfahbod [Wed, 3 Apr 2019 05:42:22 +0000 (22:42 -0700)]
[serialize] Port to use object pool
Tested, but feels fragile :(.
Behdad Esfahbod [Wed, 3 Apr 2019 05:41:06 +0000 (22:41 -0700)]
[pool] Uses memset() instead of assigning Null()
Assignment is invalid on invalid object.
Behdad Esfahbod [Wed, 3 Apr 2019 04:46:40 +0000 (21:46 -0700)]
Add hb_pool_t<> for pooled memory allocation
Behdad Esfahbod [Wed, 3 Apr 2019 03:20:53 +0000 (20:20 -0700)]
[serialize] Disable packed_map again
Ugh. Need to think of something else.
Behdad Esfahbod [Wed, 3 Apr 2019 03:17:27 +0000 (20:17 -0700)]
[map] Protect more against pointer deref
Behdad Esfahbod [Wed, 3 Apr 2019 03:13:16 +0000 (20:13 -0700)]
More
Behdad Esfahbod [Wed, 3 Apr 2019 02:27:02 +0000 (19:27 -0700)]
[serialize] Fix hb_hashmap_t<> for pointers and use in packed_map
Behdad Esfahbod [Wed, 3 Apr 2019 01:41:33 +0000 (18:41 -0700)]
[iter] Remove passing pointer to hb_iter()
While doable with hb_deref_pointer() as well, we also would then
need to do it in a ton of places. Not worth it / messy.
Behdad Esfahbod [Wed, 3 Apr 2019 01:22:39 +0000 (18:22 -0700)]
[array] Use dagger for hashing array
Also switch to better mixing.
Behdad Esfahbod [Wed, 3 Apr 2019 01:12:01 +0000 (18:12 -0700)]
[iter] Accept pointers in hb_iter()
No idea how to avoid dupicating code. Was hoping hb_deref_pointer()
would do it, but looks like a pointer can't bind to a universal
reference T&&. Humm.
Behdad Esfahbod [Wed, 3 Apr 2019 00:49:52 +0000 (17:49 -0700)]
[serialize] Towards maintaining packed_map
Behdad Esfahbod [Wed, 3 Apr 2019 00:42:10 +0000 (17:42 -0700)]
[serialize] Minor
Behdad Esfahbod [Wed, 3 Apr 2019 00:21:54 +0000 (17:21 -0700)]
[serialize] Handle non-nullable offsets
Behdad Esfahbod [Wed, 3 Apr 2019 00:20:04 +0000 (17:20 -0700)]
[serialize] Movce empty-object handling earlier
Behdad Esfahbod [Wed, 3 Apr 2019 00:12:24 +0000 (17:12 -0700)]
[serialize] Minor
Behdad Esfahbod [Tue, 2 Apr 2019 23:53:05 +0000 (16:53 -0700)]
[serialize] Allow offset links that have base offset from the object base
Rarely used, but used, in name table or similar constructs.
Ebrahim Byagowi [Tue, 2 Apr 2019 20:18:59 +0000 (00:48 +0430)]
[test][iter] minor, fix double promotion warning
Ebrahim Byagowi [Tue, 2 Apr 2019 15:57:00 +0000 (20:27 +0430)]
[test] minor, c style comments
Ebrahim Byagowi [Tue, 2 Apr 2019 15:55:06 +0000 (20:25 +0430)]
[iter][test] Add another test for hb_reduce
Different initial and accumulator types
Behdad Esfahbod [Tue, 2 Apr 2019 04:36:13 +0000 (21:36 -0700)]
[serialize] Switch to tetris-packing
Behdad Esfahbod [Tue, 2 Apr 2019 04:36:03 +0000 (21:36 -0700)]
[serialize] Fix linking
Behdad Esfahbod [Tue, 2 Apr 2019 04:32:29 +0000 (21:32 -0700)]
[serialize] Minor
Behdad Esfahbod [Mon, 1 Apr 2019 23:50:28 +0000 (16:50 -0700)]
[cmap] Minor
Behdad Esfahbod [Mon, 1 Apr 2019 23:45:50 +0000 (16:45 -0700)]
[subset] Call serialize start/end around it
To be cleaned up.
Behdad Esfahbod [Mon, 1 Apr 2019 23:45:40 +0000 (16:45 -0700)]
[serialize] Assert stack
Behdad Esfahbod [Mon, 1 Apr 2019 23:17:30 +0000 (16:17 -0700)]
[serialize] Add add_link() to add link
Behdad Esfahbod [Mon, 1 Apr 2019 21:17:09 +0000 (14:17 -0700)]
[serialize] Add default template type to push()
Ebrahim Byagowi [Mon, 1 Apr 2019 20:00:06 +0000 (00:30 +0430)]
[iter] hb_reduce, accumulator with a different type
Ebrahim Byagowi [Sun, 31 Mar 2019 08:11:58 +0000 (12:41 +0430)]
[iter] Implement hb_reduce
Behdad Esfahbod [Mon, 1 Apr 2019 04:37:14 +0000 (21:37 -0700)]
[serialize] Implement linking
Untested!
Behdad Esfahbod [Mon, 1 Apr 2019 04:34:19 +0000 (21:34 -0700)]
Move BEInt to hb.hh
I knows...
Behdad Esfahbod [Mon, 1 Apr 2019 02:17:07 +0000 (19:17 -0700)]
[iter] Fix up build, ouch
Yeah, some things not very clear...
Jonathan Kew [Sun, 31 Mar 2019 18:17:32 +0000 (19:17 +0100)]
Don't skip setting the .end field of the first range
Fixes a bug in CoverageFormat2::serialize whereby the first range
was not serialized correctly if it consists of only a single glyph ID.
This broke shaping of U+0626 in the Arabic fallback shaper, because it
is not found in the coverage table of the 'init' and 'medi' lookups.
Also fix similar bug in ClassDefFormat2::serialize, noted during code
inspection (I haven't observed a case that was actually affected by
this, but it looks broken).
Fixes https://github.com/harfbuzz/harfbuzz/issues/1504
Behdad Esfahbod [Mon, 1 Apr 2019 02:00:09 +0000 (19:00 -0700)]
[iter] Adjust hb_copy() and use it
Untested.
Ebrahim Byagowi [Sun, 31 Mar 2019 08:32:30 +0000 (01:32 -0700)]
Remove coretext_aat shaper (#1581)
coretext_aat was a temporary shaper to redirect shaping of AAT fonts
to CoreText and leaving the rest for HarfBuzz. As HarfBuzz now supports
AAT and Chrome now actually ships that on a stable version on macOS,
we no longer care about such use-case. If a client really wants 100%
metrics compatibility with CoreText better to use it directly or through
our API. Replicating the same behavior still is possible using
hb_shape_full, something we don't care or like to offer anymore.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1478
Behdad Esfahbod [Sun, 31 Mar 2019 02:49:56 +0000 (19:49 -0700)]
[serialize] Start implementing linking
Behdad Esfahbod [Sun, 31 Mar 2019 02:46:35 +0000 (19:46 -0700)]
[serializer] Implement dedup!
Behdad Esfahbod [Sun, 31 Mar 2019 02:41:48 +0000 (19:41 -0700)]
Implement hashing of objects
Should be improved for hb_bytes_t.
Behdad Esfahbod [Sun, 31 Mar 2019 02:31:51 +0000 (19:31 -0700)]
Fix hb_hash(pointer)
Behdad Esfahbod [Sun, 31 Mar 2019 02:26:37 +0000 (19:26 -0700)]
[serialize] Don't insert empty object into tree
Behdad Esfahbod [Sun, 31 Mar 2019 02:16:20 +0000 (19:16 -0700)]
[serialize] Towards maintaining hashmap
Behdad Esfahbod [Sun, 31 Mar 2019 02:05:51 +0000 (19:05 -0700)]
[serialize] Only pack main object if there are other objects
Avoids a memmove for tables that don't use the object packing mechanism.
Behdad Esfahbod [Sun, 31 Mar 2019 02:03:55 +0000 (19:03 -0700)]
[serialize] Copy both sides of the buffer
Behdad Esfahbod [Sun, 31 Mar 2019 02:01:23 +0000 (19:01 -0700)]
[serialize] Simplify copy
Behdad Esfahbod [Sun, 31 Mar 2019 01:48:26 +0000 (18:48 -0700)]
[serializer] Unbreak for now
Behdad Esfahbod [Sun, 31 Mar 2019 01:44:01 +0000 (18:44 -0700)]
[map] Shuffle fini code
Behdad Esfahbod [Sun, 31 Mar 2019 01:33:30 +0000 (18:33 -0700)]
[vector] Add move semantics
Behdad Esfahbod [Sun, 31 Mar 2019 01:30:50 +0000 (18:30 -0700)]
[vector] Add some move and forwarding
Behdad Esfahbod [Sun, 31 Mar 2019 01:19:36 +0000 (18:19 -0700)]
[meta] Add hb_move and hb_forward ala std::
Behdad Esfahbod [Sun, 31 Mar 2019 01:14:30 +0000 (18:14 -0700)]
[serialize] Flesh out packing
Behdad Esfahbod [Sun, 31 Mar 2019 01:13:57 +0000 (18:13 -0700)]
[vector] Add copy constructor and assignment operator
Behdad Esfahbod [Sun, 31 Mar 2019 01:00:03 +0000 (18:00 -0700)]
[serialize] Minor
Behdad Esfahbod [Sun, 31 Mar 2019 00:51:26 +0000 (17:51 -0700)]
[serialize] Add packed_map
Behdad Esfahbod [Sun, 31 Mar 2019 00:26:35 +0000 (17:26 -0700)]
[serialize] Start fleshing out object stack
Behdad Esfahbod [Sun, 31 Mar 2019 00:12:40 +0000 (17:12 -0700)]
[serialize] Simplify propagate_error()
Behdad Esfahbod [Sun, 31 Mar 2019 00:10:59 +0000 (17:10 -0700)]
[serialize] Add object_t, link_t, and snapshot_t
Behdad Esfahbod [Sat, 30 Mar 2019 23:38:06 +0000 (16:38 -0700)]
[map] Add another TODO item
Behdad Esfahbod [Sat, 30 Mar 2019 23:29:19 +0000 (16:29 -0700)]
[map] Add TODO
Behdad Esfahbod [Sat, 30 Mar 2019 22:08:39 +0000 (15:08 -0700)]
[serialize] Add unused 'tail'
Behdad Esfahbod [Sat, 30 Mar 2019 22:06:25 +0000 (15:06 -0700)]
[serialize] Add ran_out_of_room
Behdad Esfahbod [Sat, 30 Mar 2019 21:59:40 +0000 (14:59 -0700)]
Split sanitize and dispatch into their own files
Behdad Esfahbod [Sat, 30 Mar 2019 21:53:54 +0000 (14:53 -0700)]
Move serializer to hb-serialize.hh
Behdad Esfahbod [Sat, 30 Mar 2019 21:46:54 +0000 (14:46 -0700)]
Whitespace
Behdad Esfahbod [Sat, 30 Mar 2019 21:39:21 +0000 (14:39 -0700)]
[map] Deref pointers before equality check
Behdad Esfahbod [Sat, 30 Mar 2019 21:30:22 +0000 (14:30 -0700)]
[map] Templatize hb_map_t
Template name is hb_hashmap_t<K,V>.
Behdad Esfahbod [Sat, 30 Mar 2019 20:48:32 +0000 (13:48 -0700)]
Add hb_deref_pointer()
Behdad Esfahbod [Sat, 30 Mar 2019 06:31:07 +0000 (23:31 -0700)]
[iter] Fix bug in hb_any() and hb_none()
Behdad Esfahbod [Sat, 30 Mar 2019 05:55:02 +0000 (22:55 -0700)]
[iter] Port remaining "for (auto" instances to daggers
Behdad Esfahbod [Sat, 30 Mar 2019 05:48:38 +0000 (22:48 -0700)]
[iter] One more dagger
Behdad Esfahbod [Sat, 30 Mar 2019 05:48:12 +0000 (22:48 -0700)]
[iter] Remove more wrong &&'s
Sigh...
Behdad Esfahbod [Sat, 30 Mar 2019 05:40:13 +0000 (22:40 -0700)]
[iter] More daggers
Behdad Esfahbod [Sat, 30 Mar 2019 05:27:46 +0000 (22:27 -0700)]
[iter] More daggers
Behdad Esfahbod [Sat, 30 Mar 2019 05:17:31 +0000 (22:17 -0700)]
[iter] One more dagger
Behdad Esfahbod [Sat, 30 Mar 2019 05:12:42 +0000 (22:12 -0700)]
Remove HB_DEBUG_WOULD_APPLY
Not that useful.
Behdad Esfahbod [Sat, 30 Mar 2019 05:04:15 +0000 (22:04 -0700)]
[iter] Port more to daggers
Behdad Esfahbod [Sat, 30 Mar 2019 04:59:28 +0000 (21:59 -0700)]
Whitespace
Behdad Esfahbod [Sat, 30 Mar 2019 04:57:26 +0000 (21:57 -0700)]
Simplify code
Behdad Esfahbod [Sat, 30 Mar 2019 04:57:17 +0000 (21:57 -0700)]
[iter] Port one more function to dagger
Behdad Esfahbod [Sat, 30 Mar 2019 04:49:18 +0000 (21:49 -0700)]
[iter] Port more code to daggers
Behdad Esfahbod [Sat, 30 Mar 2019 04:46:13 +0000 (21:46 -0700)]
[iter] Port two more functions to daggers
Behdad Esfahbod [Sat, 30 Mar 2019 04:45:49 +0000 (21:45 -0700)]
Fix pair signature
Oh well. Again, who does fully understand what is right???
Behdad Esfahbod [Sat, 30 Mar 2019 04:36:49 +0000 (21:36 -0700)]
[iter] Add hb_unzip()
Behdad Esfahbod [Sat, 30 Mar 2019 04:17:08 +0000 (21:17 -0700)]
Whitespace
Behdad Esfahbod [Sat, 30 Mar 2019 04:16:30 +0000 (21:16 -0700)]
[iter] Port two more loops to dagger
Behdad Esfahbod [Sat, 30 Mar 2019 04:14:20 +0000 (21:14 -0700)]
[iter] Remove unneeded &&
Next commit needs this. I never fully get this, sigh.
Behdad Esfahbod [Sat, 30 Mar 2019 04:06:10 +0000 (21:06 -0700)]
Whitespace
Behdad Esfahbod [Sat, 30 Mar 2019 03:23:07 +0000 (20:23 -0700)]
Remove hb_assign()
Not needed anymore. We just use operator= now.
Behdad Esfahbod [Sat, 30 Mar 2019 03:17:46 +0000 (20:17 -0700)]
[C++11] Remove IntType::set() in favor of operator=
Behdad Esfahbod [Sat, 30 Mar 2019 03:05:19 +0000 (20:05 -0700)]
[vector] Accept all types in push(...)
Let assignment operator worry about conversion.
Behdad Esfahbod [Sat, 30 Mar 2019 03:01:37 +0000 (20:01 -0700)]
[C++11] Use type aliases for template partial instantiations
Behdad Esfahbod [Sat, 30 Mar 2019 00:57:59 +0000 (17:57 -0700)]
Remove unused line
Behdad Esfahbod [Sat, 30 Mar 2019 00:57:24 +0000 (17:57 -0700)]
[C++11] Replace BEInt.set() with operator=
Behdad Esfahbod [Sat, 30 Mar 2019 00:49:55 +0000 (17:49 -0700)]
[C++11] Add operator= to IntType<>
Now that we require C++11 we can do this.
Behdad Esfahbod [Fri, 29 Mar 2019 22:59:04 +0000 (15:59 -0700)]
Err. Fixup C++11 polyfill removal
Fixes
1d75db19fb5df139b9648ff3f5e6184a5c554345
Behdad Esfahbod [Fri, 29 Mar 2019 22:22:46 +0000 (15:22 -0700)]
Inline explicit_operator macro
Now that we require C++11, no need to macro.
Behdad Esfahbod [Fri, 29 Mar 2019 22:20:34 +0000 (15:20 -0700)]
Remove C++<11 polyfill
Leaving hb-atomic.hh as is since harmless and other projects might
copy from that file.
Behdad Esfahbod [Fri, 29 Mar 2019 21:37:04 +0000 (14:37 -0700)]
Merge branch 'master' into iter