Commit Graph

7306 Commits

Author SHA1 Message Date
Garret Rieger 2f6ec35344 Move implementations of hb-ot-name-language.cc into a hb-static.cc 2019-04-26 15:24:47 -07:00
Qunxin Liu 19afd25004 [subset] Update to use _subset2() for name table 2019-04-26 15:24:47 -07:00
Qunxin Liu 1ca4b5c770 [subset] Add unit test for str de-dup
Also move the implementation of some methods from the .cc to the .hh
2019-04-26 15:24:47 -07:00
Qunxin Liu 9ad14f56b6 [subset] update name table subsetting with new serializer 2019-04-26 15:24:47 -07:00
Qunxin Liu e501ea143d [subset] Subset name table step 3, add --nameids option to guide the
selection of which name records to keep in the subset method.
2019-04-26 15:24:47 -07:00
Qunxin Liu 2637a81615 [subset] subset name table step 2, add implementation for collecting subset
elements and serialize method
2019-04-26 15:24:47 -07:00
Qunxin Liu 408c1daeb4 [subset] subset name table step 1, write out table unmodified, use accelerator to access
string
2019-04-26 15:24:47 -07:00
Behdad Esfahbod 3a7f5bdd18 Rewrite hb_is_signed() 2019-04-26 14:40:01 -07:00
Behdad Esfahbod 73c82f2301 [iter] Fix hb_is_iterator_of() to actually check item type 2019-04-26 13:16:48 -07:00
Behdad Esfahbod c51f15ddfc [array] Adjust hb_sorted_array_t copy constructor/assignment to match hb_array_t 2019-04-26 13:04:06 -07:00
Behdad Esfahbod b2758c360c [array] Use hb_is_cr_convertible_to() 2019-04-26 13:04:06 -07:00
Behdad Esfahbod 8ecae793aa [meta] Add hb_is_cr_convertible_to() 2019-04-26 13:04:06 -07:00
Behdad Esfahbod 52bb0346d3 [meta] Add hb_decay<> 2019-04-26 13:04:06 -07:00
Michiharu Ariza 474f3587cd copy retain_gids from input to plan 2019-04-26 10:12:38 -07:00
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
Behdad Esfahbod 8512dc565d [serialize] Simplify copy 2019-03-30 19:01:23 -07:00
Behdad Esfahbod 0b1fe7b716 [serializer] Unbreak for now 2019-03-30 18:48:26 -07:00
Behdad Esfahbod 10f062234e [map] Shuffle fini code 2019-03-30 18:44:01 -07:00
Behdad Esfahbod e6b78003ef [vector] Add move semantics 2019-03-30 18:33:30 -07:00
Behdad Esfahbod 4c4d3c3ed5 [vector] Add some move and forwarding 2019-03-30 18:30:50 -07:00
Behdad Esfahbod 7c9ceabcef [meta] Add hb_move and hb_forward ala std:: 2019-03-30 18:23:24 -07:00
Behdad Esfahbod 9a19b885f9 [serialize] Flesh out packing 2019-03-30 18:14:30 -07:00
Behdad Esfahbod 357c7c611c [vector] Add copy constructor and assignment operator 2019-03-30 18:13:57 -07:00
Behdad Esfahbod 6f69c9d26f [serialize] Minor 2019-03-30 18:00:03 -07:00
Behdad Esfahbod a43290192b [serialize] Add packed_map 2019-03-30 17:57:33 -07:00
Behdad Esfahbod bed150bd2e [serialize] Start fleshing out object stack 2019-03-30 17:43:43 -07:00
Behdad Esfahbod 63c3565189 [serialize] Simplify propagate_error() 2019-03-30 17:12:40 -07:00
Behdad Esfahbod dbe9ba6711 [serialize] Add object_t, link_t, and snapshot_t 2019-03-30 17:10:59 -07:00
Behdad Esfahbod 38d57b9a66 [map] Add another TODO item 2019-03-30 16:38:06 -07:00
Behdad Esfahbod 7fd940f899 [map] Add TODO 2019-03-30 16:29:19 -07:00
Behdad Esfahbod 6dcf7c4017 [serialize] Add unused 'tail' 2019-03-30 15:08:39 -07:00
Behdad Esfahbod fe05e48086 [serialize] Add ran_out_of_room 2019-03-30 15:06:25 -07:00
Behdad Esfahbod a7c63cd8f8 Split sanitize and dispatch into their own files 2019-03-30 14:59:40 -07:00
Behdad Esfahbod be66b575fc Move serializer to hb-serialize.hh 2019-03-30 14:53:54 -07:00
Behdad Esfahbod bb22462f29 Whitespace 2019-03-30 14:46:54 -07:00
Behdad Esfahbod ef33b5d1f6 [map] Deref pointers before equality check 2019-03-30 14:39:21 -07:00
Behdad Esfahbod c98f51da71 [map] Templatize hb_map_t
Template name is hb_hashmap_t<K,V>.
2019-03-30 14:32:52 -07:00
Behdad Esfahbod 4b7f4dbc0c Add hb_deref_pointer() 2019-03-30 13:48:32 -07:00
Behdad Esfahbod e530692799 [iter] Fix bug in hb_any() and hb_none() 2019-03-29 23:31:39 -07:00
Behdad Esfahbod f505b5d5c9 [iter] Port remaining "for (auto" instances to daggers 2019-03-29 22:55:02 -07:00
Behdad Esfahbod 668d2d562f [iter] One more dagger 2019-03-29 22:48:38 -07:00
Behdad Esfahbod d51452500f [iter] Remove more wrong &&'s
Sigh...
2019-03-29 22:48:12 -07:00
Behdad Esfahbod 05f2130a1c [iter] More daggers 2019-03-29 22:43:12 -07:00
Behdad Esfahbod 22ec4c3aa5 [iter] More daggers 2019-03-29 22:29:00 -07:00
Behdad Esfahbod 688069bbfb [iter] One more dagger 2019-03-29 22:17:31 -07:00
Behdad Esfahbod 90b60bd690 Remove HB_DEBUG_WOULD_APPLY
Not that useful.
2019-03-29 22:12:42 -07:00
Behdad Esfahbod 4d28267e59 [iter] Port more to daggers 2019-03-29 22:04:15 -07:00
Behdad Esfahbod 9d8c72042b Whitespace 2019-03-29 21:59:28 -07:00
Behdad Esfahbod 418e9d07e2 Simplify code 2019-03-29 21:57:26 -07:00
Behdad Esfahbod f5ef8a7347 [iter] Port one more function to dagger 2019-03-29 21:57:17 -07:00
Behdad Esfahbod bcab098c8f [iter] Port more code to daggers 2019-03-29 21:49:18 -07:00
Behdad Esfahbod 4c75158e18 [iter] Port two more functions to daggers 2019-03-29 21:46:13 -07:00
Behdad Esfahbod e70ccbe9ed Fix pair signature
Oh well.  Again, who does fully understand what is right???
2019-03-29 21:45:49 -07:00
Behdad Esfahbod 6237b47f0c [iter] Add hb_unzip() 2019-03-29 21:36:49 -07:00
Behdad Esfahbod f1dad91eb3 Whitespace 2019-03-29 21:17:08 -07:00
Behdad Esfahbod 896b31670d [iter] Port two more loops to dagger 2019-03-29 21:16:30 -07:00
Behdad Esfahbod 8e34cb251a [iter] Remove unneeded &&
Next commit needs this.  I never fully get this, sigh.
2019-03-29 21:14:20 -07:00
Behdad Esfahbod 12a4c0441f Whitespace 2019-03-29 21:06:10 -07:00
Behdad Esfahbod 4c38a9f601 Remove hb_assign()
Not needed anymore.  We just use operator= now.
2019-03-29 20:23:07 -07:00
Behdad Esfahbod b986c6a321 [C++11] Remove IntType::set() in favor of operator= 2019-03-29 20:21:21 -07:00
Behdad Esfahbod 58ad357951 [vector] Accept all types in push(...)
Let assignment operator worry about conversion.
2019-03-29 20:05:19 -07:00
Behdad Esfahbod 489faf826c [C++11] Use type aliases for template partial instantiations 2019-03-29 20:01:37 -07:00
Behdad Esfahbod 4fd02f6ee5 Remove unused line 2019-03-29 17:58:23 -07:00
Behdad Esfahbod 9a5b15dc1e [C++11] Replace BEInt.set() with operator= 2019-03-29 17:58:19 -07:00
Behdad Esfahbod 0aa59b1de3 [C++11] Add operator= to IntType<>
Now that we require C++11 we can do this.
2019-03-29 17:58:15 -07:00
Behdad Esfahbod eca466e6b1 Err. Fixup C++11 polyfill removal
Fixes 1d75db19fb
2019-03-29 15:59:04 -07:00
Behdad Esfahbod 3f36c89f2e Inline explicit_operator macro
Now that we require C++11, no need to macro.
2019-03-29 15:22:46 -07:00
Behdad Esfahbod 1d75db19fb Remove C++<11 polyfill
Leaving hb-atomic.hh as is since harmless and other projects might
copy from that file.
2019-03-29 15:20:34 -07:00
Behdad Esfahbod 8e7887ca5f Merge branch 'master' into iter 2019-03-29 14:37:04 -07:00
Ebrahim Byagowi b292772e6e
[dwrite] A new API, hb_directwrite_face_get_font_face (#1600)
Can be useful when using HarfBuzz for font loading and shaping
but using DirectWrite for rendering.
2019-03-29 13:00:56 -07:00
Behdad Esfahbod 59f36f3682 Replace REPLACEME's left out of 2.4.0
https://github.com/harfbuzz/harfbuzz/issues/1641
2019-03-29 10:55:12 -07:00
Behdad Esfahbod 443db2a246 [iter] Remove hb_len()
Not planning on using it.  So remove.  Can add later if needed.
2019-03-29 10:47:13 -07:00
Behdad Esfahbod bdd5a9c48d Add hb_hash()
I don't like the hb_remove_reference() hack, but necessary.
2019-03-28 21:58:07 -07:00
Behdad Esfahbod 343e6063dc Add hb_is_integer(T) 2019-03-28 21:44:12 -07:00
Behdad Esfahbod f639b9a8ea [iter] Add hb_len() function-object 2019-03-28 21:34:47 -07:00
Behdad Esfahbod a030ce4ff8 Merge branch 'master' into iter 2019-03-28 21:26:50 -07:00
Behdad Esfahbod d6fc1d49aa 2.4.0 2019-03-28 21:21:26 -07:00
Behdad Esfahbod d2db71fdc4 Use internal bsearch() for language tags
Fixes https://github.com/harfbuzz/harfbuzz/pull/1639
2019-03-28 21:04:34 -07:00
Behdad Esfahbod 21bb80ebf2 [indic] Add back medial-consonant to grammar
Fixes https://github.com/harfbuzz/harfbuzz/issues/1592
2019-03-28 20:50:04 -07:00
Behdad Esfahbod 5ab6de7a6f [khmer] Add trailing Coeng to syllable grammar
Fixes https://github.com/harfbuzz/harfbuzz/issues/1541
2019-03-28 20:23:12 -07:00
Behdad Esfahbod 160b4a2b01 Fix shell syntax error
Fixes https://github.com/harfbuzz/harfbuzz/issues/1612
2019-03-28 13:44:59 -07:00
Behdad Esfahbod 8665b9b0a2 Comment 2019-03-28 13:44:59 -07:00
punchcutter a7eed7e41d Override USE category for Grantha and Tirhuta visargas to allow marks 2019-03-28 13:31:45 -07:00
Egor Pugin cf040c0fef Disable unwanted C++ definitions for MSVC.
MSVC does not set __cplusplus to the latest standard and also it does not like redefining some keywords.
2019-03-28 11:10:42 -07:00
Behdad Esfahbod ec2a5dc859 Use class templates for Null objects
This allows partial-instantiating custom Null object for template Lookup<T>.
Before, this had to be handcoded per instantiation.  Apparently I missed
adding one for AAT::ankr.lookupTable, so it was getting the wrong (generic)
null for Lookup object, which is wrong and unsafe.

Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=944346
2019-03-26 16:23:40 -07:00
Behdad Esfahbod 96f1237794 [aat] Add missing check to ankr table
Isn't absolutely needed.  But helps.
2019-03-26 16:17:45 -07:00
Qunxin Liu 2d9034491e completely remove lines that are commented out 2019-03-26 13:39:33 -07:00
Qunxin Liu 3147133b61 update arguments in_populate_gids_to_retain() and _create_old_gid_to_new_gid_map()
so they don't use deprecated variable
2019-03-26 13:39:33 -07:00
Qunxin Liu 79a6c25849 try to remove deprecated variable from struct definition 2019-03-26 13:39:33 -07:00
Michiharu Ariza bcb4e505d6
cff2 subset fuzzer issues (#1619)
* add check to FDArray::serialize

* add test files

* fix off by one
2019-03-15 13:46:25 -07:00
Ebrahim Byagowi 8aaab78efc
Allow zero length ranges in sanitization (#1617)
Fixes fvar table sanitization where there are no named instance
by allowing zero length ranges starting from Null() address.

Fixes #1607
2019-03-14 16:49:42 -07:00
David Corbett 7de9f92ee9 Categorize U+09FC as Consonant_Placeholder 2019-03-13 12:59:56 -07:00
Behdad Esfahbod e52ec3fc23 Remove redundant hb_ot_layout_lookup_would_substitute_fast 2019-03-11 18:09:51 -07:00
Khaled Hosny c2442c90d6 [doc] Add placeholder since version for new flag 2019-03-12 01:10:52 +02:00
David Corbett 8c42f03215 Remove obsolete overrides from Indic/USE scripts 2019-03-11 16:07:52 -07:00
Eric Muller b38bab8622 Update generation code for hb-ot-shape-complex-vowel-constraints.cc. Remove 'unlikely' 2019-03-11 16:06:41 -07:00
Eric Muller 44a67ddeb8 Fix coding style. 2019-03-11 16:06:41 -07:00
Eric Muller 30d7c40f8c Add a flag to hb_buffer_t to prevent the insertion of dotted circles on incorrect character sequences.
Current behavior unchanged if this flag is not set (and it isn't by default).
2019-03-11 16:06:41 -07:00
David Corbett e723c04de1 Update to Unicode 12.0.0 2019-03-07 10:15:31 -08:00
Adrian Wong 2f125b0fa7 [indic] Remove superfluous ZWNJ check in final reorder of pre-base matras 2019-03-05 16:41:49 -08:00
Stephan Bergmann d936ad4582 Fix hb_atomic_* variants based on C++11 atomics
I stumbled over this when trying to upgrade the version of HarfBuzz used by
LibreOffice to 3.2.1 (see <https://gerrit.libreoffice.org/plugins/gitiles/core/
+/b7ddc514bff9bdf682abae537f990aa01dc2c0fb%5E!/> "Upgrade to latest
HarfBuzz 2.3.1"), where building with MSVC 2017 failed like

> c:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\unpackedtarball\harfbuzz\src\hb-atomic.hh(272): error C2440: 'reinterpret_cast': cannot convert from 'const int *' to 'std::atomic<int> *'
> c:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\unpackedtarball\harfbuzz\src\hb-atomic.hh(272): note: Conversion loses qualifiers
> c:\cygwin\home\tdf\lode\jenkins\workspace\gerrit_windows\workdir\unpackedtarball\harfbuzz\src\hb-atomic.hh(272): error C2227: left of '->load' must point to class/struct/union/generic type

(see <https://ci.libreoffice.org/job/gerrit_windows/29916/>).

I added all the necessary "const" to make building of HarfBuzz 2.3.1 with
MSVC 2017 succeed for me.  There may be more missing at least conceptually.
2019-03-05 12:11:32 -08:00