Commit Graph

7192 Commits

Author SHA1 Message Date
Behdad Esfahbod c69f02784a Fix sign-compare error on 32-bit systems 2019-04-24 16:31:37 -07:00
Behdad Esfahbod 59a8fa5353 [iter] Add tests for casting to hb_iter_t<> base class for hb_sorted_array_t<>
Something's phishy about hb_sorted_array_t<>.  Can't get it work nicely with
change I'm making.  Ugh..
2019-04-24 12:49:58 -04:00
Behdad Esfahbod 714307cc43 [iter] Remove fixed TODO 2019-04-24 10:56:12 -04:00
Behdad Esfahbod 22da12318a [map] Fix TODO 2019-04-24 10:53:47 -04:00
Behdad Esfahbod 4c6136e976 [mutex] Remove TODO 2019-04-24 10:53:44 -04:00
Behdad Esfahbod 0268db1196 [map] Use hb_invoke() with pointer-to-method 2019-04-24 10:53:39 -04:00
Behdad Esfahbod 8f79a5750e [algs] Add more hb_forward<>()'s 2019-04-24 10:32:49 -04:00
Behdad Esfahbod 42526d1697 [serialize] Fix SingleSubstFormat1 failure 2019-04-24 10:24:33 -04:00
Behdad Esfahbod 6cc9707c9c [serialize] Rename 2019-04-24 10:22:06 -04:00
Behdad Esfahbod 085793d6cd Remove wrong TODOs 2019-04-24 10:15:59 -04:00
Behdad Esfahbod 915b9ea5f4 [serialize] Add c->check_assign()
To check for assignment overflows.
2019-04-24 10:07:19 -04:00
Behdad Esfahbod 00a00bc1f2 Fix two TODOs 2019-04-24 10:01:30 -04:00
Behdad Esfahbod 11ab889a8d Rename a few test programs 2019-04-24 09:55:24 -04:00
Behdad Esfahbod 12017db0bf Move test code around 2019-04-24 09:24:38 -04:00
Behdad Esfahbod 27377a7e28 Rely on variadic parameter pack more 2019-04-24 09:22:14 -04:00
Behdad Esfahbod 3ad20c38ad [serialize] Fix a few overflow TODO items 2019-04-24 09:09:00 -04:00
Behdad Esfahbod 175bdad8bf One more variadic parameter pack use 2019-04-23 23:57:11 -04:00
Behdad Esfahbod 441cca2354 Use hb_forward() when forwarding parameter pack 2019-04-23 23:51:59 -04:00
Behdad Esfahbod 20f3134789 Use variadic templates in OffsetTo<> and various ArrayOf<>s 2019-04-23 12:59:17 -04:00
Ebrahim Byagowi 64ca2ffa4c
Fix clang's -Wmain complain (#1678) 2019-04-23 01:10:46 -07:00
Behdad Esfahbod 25dd88efc6 Err, fix hb_invoke() variadic 2019-04-22 17:47:07 -04:00
Behdad Esfahbod c862a532df Add variadic arguments to hb_invoke() 2019-04-22 17:32:19 -04:00
Behdad Esfahbod 9c724e48a2 [serializer] Add err_propagaged_error() 2019-04-22 17:21:42 -04:00
Behdad Esfahbod ae8da4b61b Minor 2019-04-22 15:25:11 -04:00
Behdad Esfahbod 24da1d0860 Use variadic template args for propagate_error()
Let's see if bots happy.

Not sure where else we can use these.  Mm.  Maybe in hb_invoke().
2019-04-22 15:20:25 -04:00
Behdad Esfahbod 9bab398462 Simplify propagate_error() 2019-04-22 15:16:35 -04:00
Behdad Esfahbod 42f4bd6b80 Minor warning fix again 2019-04-18 19:06:07 -04:00
Michiharu Ariza 267fb9c716 add spaces 2019-04-18 18:18:05 -04:00
Michiharu Ariza ba0386060d fix oss-fuzz issue 14345 2019-04-18 18:18:05 -04:00
Michiharu Ariza 63a2108480 silence MVC warnings 3rd attempt 2019-04-18 13:54:58 -07:00
Michiharu Ariza 705dde57fe silence MVC warnings 2nd attempt 2019-04-18 11:32:10 -07:00
Michiharu Ariza dd4c37529b silence MVC warnings 2019-04-18 10:38:57 -07:00
Behdad Esfahbod 518e6e07f2 Minor 2019-04-18 12:21:25 -04:00
Behdad Esfahbod 91d958acc0 [array] Simplify copy assignment/constructor
To fix bogus MSVC warnings:

  c:\projects\harfbuzz\src\hb-array.hh(189): warning C4521: 'hb_array_t<Type>': multiple copy constructors specified [C:\projects\harfbuzz\build\harfbuzz.vcxproj]
  c:\projects\harfbuzz\src\hb-array.hh(189): warning C4522: 'hb_array_t<Type>': multiple assignment operators specified [C:\projects\harfbuzz\build\harfbuzz.vcxproj]
2019-04-18 10:04:10 -04:00
Behdad Esfahbod 693d91cd49 [serialize] Fix offset calculation 2019-04-17 17:59:39 -04:00
Behdad Esfahbod db0c9a1485 [subset] Assert offsets are zero during relocation
If they're not, it's a bug in our subsetting logic somewhere.  So check.
2019-04-17 17:58:13 -04:00
Behdad Esfahbod efbba7ad26 [serializer] Add copy()
Calls obj.copy() or obj.operator=() in that order.
2019-04-17 11:00:08 -04:00
Behdad Esfahbod c67a0d581f Add HB_RETURN 2019-04-17 10:29:10 -04:00
David Corbett 6745a600bf Comment out ot_languages where fallback suffices 2019-04-17 10:28:59 -04:00
David Corbett 5daeff3e68 Fix "hb_script_" doc typo 2019-04-17 10:06:13 -04:00
Behdad Esfahbod 6916b77863 One more auto return type 2019-04-16 18:33:51 -04:00
Behdad Esfahbod 5b33427f2c Rename HB_AUTO_RETURN_EXPR to HB_AUTO_RETURN 2019-04-16 18:28:17 -04:00
Behdad Esfahbod da293b0e59 Use HB_AUTO_RETURN_EXPR in hb_min/max 2019-04-16 18:27:25 -04:00
Behdad Esfahbod 0241a40f2a Use auto return type for hb_first/hb_second 2019-04-16 18:26:30 -04:00
Behdad Esfahbod fe30fcd228 Use hb_deref_pointer() to reduce number of overloads 2019-04-16 17:34:06 -04:00
Behdad Esfahbod c918a6706f Properly prioritize hb_hash() 2019-04-16 17:28:18 -04:00
Behdad Esfahbod 75fd845a4a Move around 2019-04-16 17:22:29 -04:00
Behdad Esfahbod 973717175d Fix priorities 2019-04-16 16:50:07 -04:00
Behdad Esfahbod 54ece299bc Use type aliasing for meta-functions, ie. those returning a type 2019-04-16 16:45:53 -04:00
David Corbett 1ce11b4437 Reduce LangTag from 3 language system tags to 1 2019-04-16 11:41:01 -04:00
Behdad Esfahbod 155e92f259 Reduce NullPool size 2019-04-16 11:35:09 -04:00
Behdad Esfahbod 4fc2d2d724 [meta] Flesh out hb_invoke() 2019-04-16 11:24:42 -04:00
Behdad Esfahbod e03d9395aa Comment 2019-04-16 11:20:16 -04:00
Behdad Esfahbod b8e763fd71 [meta] Add hb_invoke() 2019-04-16 10:54:24 -04:00
Behdad Esfahbod a3fcb9a370 [meta] Add HB_AUTO_RETURN_EXPR, HB_VOID_RETURN_EXPR, hb_priority, hb_has(), hb_get()
The first three based on range-v3.
2019-04-16 10:45:57 -04:00
Behdad Esfahbod ff68be31bf Add hb_void_tt<> ala std::void_t 2019-04-16 09:59:51 -04:00
Behdad Esfahbod 89fea21697 Fix copyright 2019-04-15 17:36:09 -04:00
Behdad Esfahbod 07776b6096 More tweaks to previous commit
Delete assignment operator of OffsetTo<> instead of Offset<>.

In simple ArrayOf<>::sanitize() assert that Type has assignment operator.
Ideally we should SFINAE this and fallback to calling Type::sanitize()
if assignment operator is not available.  But we don't have a case of
that in the codebase.
2019-04-15 16:43:34 -04:00
Behdad Esfahbod 699de689e9 Delete default assignment operator Offset<> 2019-04-15 16:00:20 -04:00
Behdad Esfahbod 02d864aa26 Add HB_FUNCOBJ()
Fixes https://github.com/harfbuzz/harfbuzz/issues/1651
2019-04-15 15:39:30 -04:00
Behdad Esfahbod 38b1d0b9b2 Move static const to post-struct for a function object
Just sending this to bots to see if all happy, then turn it into macro and
apply everywhere.

Part of https://github.com/harfbuzz/harfbuzz/issues/1651
2019-04-15 12:45:21 -04:00
Behdad Esfahbod 19e800c9d8 Ugh. Another try, to unbreak gcc this time!
Jenga.
2019-04-15 12:07:00 -04:00
Behdad Esfahbod 3a88f55c15 Move location of HB_UNUSED to make MSVC happy 2019-04-15 11:59:57 -04:00
Behdad Esfahbod 1ae265888e Fix gcc warning 2019-04-15 11:31:40 -04:00
Behdad Esfahbod 47e538a35f Add HB_NO_SUBSET_LAYOUT
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 22:54:15 -04:00
Behdad Esfahbod a98e4068e7 Revert "Hide symbols in hb-iter"
This reverts commit 98f14c4cdb.

Same as previous commit.
2019-04-12 22:42:44 -04:00
Behdad Esfahbod dab92bdd46 Revert "Hide more symbols"
This reverts commit 2e86d50915.

I think the setup that caused me to do this is faulty and not hiding inlines.
2019-04-12 22:39:38 -04:00
Behdad Esfahbod 98f14c4cdb Hide symbols in hb-iter
Painful.  All template methods need to be explicitly hidden :(.

Maybe we should switch to -fvisibility=hidden pragma.

A LOT more to go.
2019-04-12 18:12:06 -04:00
Behdad Esfahbod 2e86d50915 Hide more symbols
Exposed by:

$ make -j5 CPPFLAGS="-O0" CXXFLAGS=-flto=thin LDFLAGS=-lc++ && ./check-symbols.sh
2019-04-12 18:07:42 -04:00
Behdad Esfahbod caa20e4ef9 Hide a few more symbols
Exposed by:

$ make CPPFLAGS=-O0
2019-04-12 18:00:58 -04:00
Behdad Esfahbod 95df00aec1 Hide a few static methods
Looks like static methods that do not get inlined end up exported.
We have a lot more.  Need to protect all at some point.  Wish there
was an easier way, like the visibility flag we pass that automatically
hides all inline methods.

Was exposed by check-symbols.sh when compiling on OS X 10.14 with:

$ make CPPFLAGS=-Oz CXXFLAGS=-flto=thin LDFLAGS=-lc++
2019-04-12 17:51:14 -04:00
Behdad Esfahbod 2f4be4ba54 Add HB_NO_OPTIONS
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 16:21:58 -04:00
Behdad Esfahbod 079d2dcbb2 Add HB_NO_NAME_TABLE_AAT
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 15:00:37 -04:00
Behdad Esfahbod 60a58aa61c Add HB_NO_OT_FONT_BITMAP
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 14:58:53 -04:00
Behdad Esfahbod 160c4d8b2d Add HB_NO_OT_FONT_CFF
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 14:57:49 -04:00
Behdad Esfahbod 35f3b97fac Add HB_NO_OT_SHAPE_COMPLEX_HEBREW_FALLBACK
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 10:16:12 -04:00
Behdad Esfahbod 414c5de26b Add HB_NO_OT_SHAPE_FALLBACK
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 10:12:11 -04:00
Behdad Esfahbod fe0018f7ef Add HB_NO_OT_SHAPE_COMPLEX_THAI_FALLBACK
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 09:35:29 -04:00
Behdad Esfahbod 9ddbfa006d Add HB_NO_OT_LAYOUT_BLACKLIST
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-12 09:33:25 -04:00
Behdad Esfahbod 571fad4cf1 Add HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-11 19:42:05 -04:00
Nathan Willis 3db227265b Update gtk-doc annotations for inout counts on various getter functions. 2019-04-12 00:00:47 +02:00
Nathan Willis c08ddbd91b [Docs] Minor edits to gtk-doc inline comment review. 2019-04-12 00:00:47 +02:00
Nathan Willis af5230bce3 [Docs] Minor; fix formatting for gtk-doc multiple-annotations. 2019-04-12 00:00:47 +02:00
Nathan Willis 6c0a1e8cd6 [Docs] Annotate gtk-doc formatting with some un-annotated (out)s. 2019-04-12 00:00:47 +02:00
Nathan Willis 5122805c74 [Docs] Fix gtk-doc formatting for (out) and (inout). 2019-04-12 00:00:47 +02:00
Nathan Willis d3178aa52a [Docs] Fix gtk-doc references to 'kern' table functions, clarifying that GPOS is not examined. 2019-04-12 00:00:47 +02:00
Nathan Willis 3449031fad [Docs] Add inline gtk-doc documentation of GDEF glyph classes. 2019-04-12 00:00:47 +02:00
Nathan Willis 930f6fc3da [Docs] Add inlind gtk-doc comments for hb-ot-layout functions. 2019-04-12 00:00:47 +02:00
Behdad Esfahbod b52c0e54b9 Use injected class name to simplify macros 2019-04-11 11:20:10 -04:00
Behdad Esfahbod baf1e79075 [C++11] Use deleted methods 2019-04-11 11:18:04 -04:00
Behdad Esfahbod 824fd342d5 Rename a few macros 2019-04-11 11:16:01 -04:00
Behdad Esfahbod edfc6be4a0 [arabic] Disable fallback shaping if HB_NO_OT_SHAPE_COMPLEX_ARABIC_FALLBACK defined
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-10 16:10:54 -04:00
Behdad Esfahbod 4d31662b5d Don't install ot-font funcs on new fonts if HB_NO_OT_FONT defined
Currently linker cannot GC hb-ot-font completely because we install
it on fonts by default.  Don't do that if HB_NO_OT_FONT defined.

Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-10 15:40:55 -04:00
Behdad Esfahbod b111b3de02 Don't use any default unicode funcs if HB_NO_UNICODE_FUNCS is defined
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
2019-04-10 15:39:48 -04:00
Behdad Esfahbod c5509be93a [coretext] Fix unused-variable error
Fixes https://github.com/harfbuzz/harfbuzz/issues/1659
2019-04-08 14:50:58 -04:00
Maks Naumov 4c19aa2620 Fix MSVC C4068 warning (#1656) 2019-04-05 11:46:27 -07:00
Maks Naumov a96d003d6e Fix MSVC C4138 warning (#1657) 2019-04-05 02:29:56 -07:00
Behdad Esfahbod c68eb7002f Minor 2019-04-03 16:24:12 -07:00
Behdad Esfahbod 85adf4ad5c [GDEF] Don't assume glyphlist is sorted
As was hit by the fuzzer.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14032
2019-04-03 16:07:36 -07:00
Behdad Esfahbod ecabdffc61 [algs] Add hb_min() and hb_max() 2019-04-03 16:06:34 -07:00
Behdad Esfahbod 7b863142ce [serialize] Make putting breakpoint on out-of-memory easier 2019-04-03 15:48:27 -07:00
Behdad Esfahbod 2bd2750234 [iter] Tweak SFINAE again
Don't think we need hb_is_same().
2019-04-03 15:31:53 -07:00
Behdad Esfahbod f02ebc89ec [array] Add compy assignment operator since copy constructor is explicit 2019-04-03 15:23:06 -07:00
Behdad Esfahbod 20a73da2c9 [array] Add default copy constructor
MSVC seems to need it.
2019-04-03 14:32:15 -07:00
Behdad Esfahbod d419a9a437 [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.
2019-04-03 14:18:19 -07:00
Behdad Esfahbod 2778df7972 [meta] Add hb_is_same() 2019-04-03 14:15:01 -07:00
Behdad Esfahbod 6215fb8e68 [serialize] Actually reclaim storage from duplicate objects 2019-04-02 23:10:03 -07:00
Behdad Esfahbod 3305a2cad2 [serialize] Port to use object pool
Tested, but feels fragile :(.
2019-04-02 22:58:49 -07:00
Behdad Esfahbod 5efbc01174 [pool] Uses memset() instead of assigning Null()
Assignment is invalid on invalid object.
2019-04-02 22:41:06 -07:00
Behdad Esfahbod 434d78bf91 Add hb_pool_t<> for pooled memory allocation 2019-04-02 21:46:40 -07:00
Behdad Esfahbod 8e4df1a152 [serialize] Disable packed_map again
Ugh.  Need to think of something else.
2019-04-02 20:20:53 -07:00
Behdad Esfahbod 31c1a83899 [map] Protect more against pointer deref 2019-04-02 20:17:27 -07:00
Behdad Esfahbod 5bffa9e375 More 2019-04-02 20:13:16 -07:00
Behdad Esfahbod 5b66b033fd [serialize] Fix hb_hashmap_t<> for pointers and use in packed_map 2019-04-02 19:30:22 -07:00
Behdad Esfahbod 42ab32cbba [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.
2019-04-02 18:42:51 -07:00
Behdad Esfahbod d0da547b37 [array] Use dagger for hashing array
Also switch to better mixing.
2019-04-02 18:23:05 -07:00
Behdad Esfahbod b6f29bf141 [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.
2019-04-02 18:12:01 -07:00
Behdad Esfahbod fc24bb9046 [serialize] Towards maintaining packed_map 2019-04-02 17:49:52 -07:00
Behdad Esfahbod aa2293a55e [serialize] Minor 2019-04-02 17:42:10 -07:00
Behdad Esfahbod e42b82c828 [serialize] Handle non-nullable offsets 2019-04-02 17:23:16 -07:00
Behdad Esfahbod e04518bafc [serialize] Movce empty-object handling earlier 2019-04-02 17:20:04 -07:00
Behdad Esfahbod 7f73c9744e [serialize] Minor 2019-04-02 17:12:24 -07:00
Behdad Esfahbod 5a3de4f4f8 [serialize] Allow offset links that have base offset from the object base
Rarely used, but used, in name table or similar constructs.
2019-04-02 16:53:42 -07:00
Ebrahim Byagowi edad6b2c45
[test][iter] minor, fix double promotion warning 2019-04-03 00:48:59 +04:30
Ebrahim Byagowi 062f5d6e7a
[test] minor, c style comments 2019-04-02 20:27:00 +04:30
Ebrahim Byagowi afdbf960d6
[iter][test] Add another test for hb_reduce
Different initial and accumulator types
2019-04-02 20:25:06 +04:30
Behdad Esfahbod bfa02bef45 [serialize] Switch to tetris-packing 2019-04-01 21:36:13 -07:00
Behdad Esfahbod f0ea3ac17b [serialize] Fix linking 2019-04-01 21:36:03 -07:00
Behdad Esfahbod 7c0e2054e0 [serialize] Minor 2019-04-01 21:32:29 -07:00
Behdad Esfahbod 64d0f08938 [cmap] Minor 2019-04-01 16:56:41 -07:00
Behdad Esfahbod 2e675cc7b5 [subset] Call serialize start/end around it
To be cleaned up.
2019-04-01 16:56:41 -07:00
Behdad Esfahbod abe33c6149 [serialize] Assert stack 2019-04-01 16:56:41 -07:00
Behdad Esfahbod 72e9b2c16c [serialize] Add add_link() to add link 2019-04-01 16:56:41 -07:00
Behdad Esfahbod 74addbecac [serialize] Add default template type to push() 2019-04-01 16:56:41 -07:00
Ebrahim Byagowi b8642087e6 [iter] hb_reduce, accumulator with a different type 2019-04-01 16:56:29 -07:00
Ebrahim Byagowi e526414c75 [iter] Implement hb_reduce 2019-04-01 16:56:29 -07:00
Behdad Esfahbod f3aca6aa26 [serialize] Implement linking
Untested!
2019-03-31 21:37:14 -07:00
Behdad Esfahbod 17f0cfa7ea Move BEInt to hb.hh
I knows...
2019-03-31 21:34:19 -07:00
Behdad Esfahbod 78fc43f293 [iter] Fix up build, ouch
Yeah, some things not very clear...
2019-03-31 19:17:07 -07:00
Jonathan Kew e5d6fe9782 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
2019-03-31 19:02:47 -07:00
Behdad Esfahbod 8a8d45b924 [iter] Adjust hb_copy() and use it
Untested.
2019-03-31 19:00:09 -07:00
Ebrahim Byagowi ba4b7be455
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
2019-03-31 01:32:30 -07:00
Behdad Esfahbod d6005b49b3 [serialize] Start implementing linking 2019-03-30 19:49:56 -07:00
Behdad Esfahbod 313b3057c3 [serializer] Implement dedup! 2019-03-30 19:46:35 -07:00
Behdad Esfahbod b189bbc48f Implement hashing of objects
Should be improved for hb_bytes_t.
2019-03-30 19:41:48 -07:00
Behdad Esfahbod d6b28057a5 Fix hb_hash(pointer) 2019-03-30 19:31:51 -07:00
Behdad Esfahbod d74dc3ef65 [serialize] Don't insert empty object into tree 2019-03-30 19:26:37 -07:00
Behdad Esfahbod 7fd8228326 [serialize] Towards maintaining hashmap 2019-03-30 19:16:20 -07:00
Behdad Esfahbod f254f45a1e [serialize] Only pack main object if there are other objects
Avoids a memmove for tables that don't use the object packing mechanism.
2019-03-30 19:05:51 -07:00
Behdad Esfahbod 946d446f9b [serialize] Copy both sides of the buffer 2019-03-30 19:03:55 -07:00