src/hb-ot-layout-gpos-table.hh


Log

Author Commit Date CI Message
Behdad Esfahbod ef14cad7 2021-12-08T10:43:52 [GPOS] Disable vertical advance if HB_NO_VERTICAL
Behdad Esfahbod 6d555ce8 2021-11-02T00:18:22 [meta] Use std::forward instead of hb_forward()
Nico Weber 96299d70 2021-10-12T10:42:43 Fix Wbitwise-instead-of-logical warnings `a || b` only evaluates b if a is false. `a | b` always evaluates both a and b. If a and b are of type bool, || is usually what you want, so clang now warns on `|` where both arguments are of type bool. This warning fires twice in harfbuzz. In both cases, `|` is used intentionally, with a comment explaining this. Slightly reorder the code a bit to make the compiler happy, and to make it obvious even without a comment that both calls should be evaluated. No intended behavior change.
Garret Rieger c2cc566c 2021-09-22T14:15:55 [subset] Fix subset_offset_array adding unused space to serializer. ArrayOf.serialize_append allocates space for the new item, but ArrayOf.pop() does not recover the allocated space. So in the case where the revert path was entered the extra space added by serialize_append gets left in the serialization buffer. This moves the snapshot to before ArrayOf.serialize_append is called so that revert cleans up the buffer extend.
Behdad Esfahbod c852b868 2021-09-19T16:30:12 Rename HBGlyphID to HBGlyphID16
Garret Rieger 46d4a5e6 2021-07-29T15:07:13 [subset] Convert subset plan to use a flags bit set.
Behdad Esfahbod f0a1892f 2021-07-28T17:36:22 [serialize] Remove unnecessary pointer indirection
Behdad Esfahbod bb48bf52 2021-07-08T10:53:45 Rename misc uses of "free" In preparation for fixing https://github.com/harfbuzz/harfbuzz/issues/3044
Garret Rieger 8443cc85 2021-06-11T13:40:39 [subset] Correct OffsetTo serialization in GPOS to use serialize_serialize ().
Garret Rieger e25efb31 2021-04-23T19:09:37 [subset] consider all value formats when computing effective format.
Qunxin Liu 84dbfacf 2021-04-15T16:52:11 [subset] fix collect_variation_idx in PairPosFormat2
Garret Rieger d356d0f7 2021-04-23T17:41:09 [subset] optimize ValueRecord's for PairPosFormat1.
Garret Rieger f9fbe481 2021-04-23T17:06:06 [subset] implement value record optimization for PairPosFormat2.
Garret Rieger badb8e40 2021-04-23T16:32:56 [subset] use copy_values for PairPos serialize.
Garret Rieger 2f50283c 2021-04-23T15:21:30 [subset] Begin implementing ValueRecord optimization: remove value records which have a zero value.
Garret Rieger 5df7c668 2021-04-22T16:45:14 [subset] In SinglePosFormat1 serialize only 1 value record. Previously one record per glyph in the subset was serialized.
Garret Rieger 92757f68 2021-04-22T15:18:35 [subset] Don't drop anchor device tables when dropping hints. These may contain variation data. Update subseting expected files to match latest version of fontTools.
Qunxin Liu 9dc9f038 2021-04-08T11:00:17 [subset] fix for fuzzer testcase: https://oss-fuzz.com/testcase-detail/5858518134554624
Qunxin Liu 553ffaf6 2021-04-07T17:15:32 [subset] fix for fuzzer testcase: https://oss-fuzz.com/testcase-detail/6382598554255360 avoid writing to null pointer
Garret Rieger 6f98a8ed 2021-04-02T14:37:10 [subset] Anchor should only use format 1 when hints are dropped. Refactor Anchor to have a subset method instead of copy. This also allows use to use serialize_subset in several places which simplifies calculating offset bases.
Behdad Esfahbod 5639e253 2021-03-31T16:04:43 Add Array16Of<>
Behdad Esfahbod 5efe3609 2021-03-31T15:33:22 Rename (Unsized)OffsetListOf
Behdad Esfahbod 6c4e0491 2021-03-31T15:31:32 s/OffsetArrayOf/Array16OfOffset16To/g
Behdad Esfahbod ad28f973 2021-03-31T12:49:14 Rename offset types to be explicit about their size Add Offset16To<>, Offset24To<>, and Offset32To<> for most use-cases.
Garret Rieger b14475d2 2021-03-18T10:51:26 [subset] further changes to serializer error handling. - Rename enum type and enum members. - in_errors() now returns true for any error having been set. hb-subset now looks for offset overflow only errors to divert to repacker. - Added INT_OVERFLOW and ARRAY_OVERFLOW enum values.
Garret Rieger 73ed59f7 2021-03-17T15:53:10 [subset] store errors in the serializer as a flag set. Make check_assign/check_equal specify the type of error to set.
Qunxin Liu 56ca4357 2021-01-28T15:21:26 [subset] fix for collect_features and remove_redundant_lamngsys previously remove_redundant_sys () is missing in harfbuzz, after redundant langsys removal, some features are removed as well in prune_features() in fonttools. This change is trying to get the same result between harfbuzz and fonttools.
Garret Rieger 2df39bca 2021-03-16T14:20:49 [subset] don't allocate a set to use as a glyph filter for PairPosFormat2.
Garret Rieger bb54e104 2021-03-16T13:19:26 [subset] Also filter class1 by coverage when collecting variation indices for PairPosFormat2.
Garret Rieger 190b7a98 2020-10-08T14:44:54 [subset] Update PairPosFormat2 subsetting to match fontTools updated subsetting (https://github.com/fonttools/fonttools/pull/2221) - subset class def 1 against the coverage table. - Don't re-use class 0 in class def 2. - Ignore class 0 glyphs for the purposes of determing format 1 vs format 2 encoding for ClassDef. Add an additional test case which demonstrates these issues.
Behdad Esfahbod 103ed7da 2021-02-19T16:48:30 [subset] Use dagger Better fix for https://github.com/harfbuzz/harfbuzz/pull/2858
Garret Rieger 5ca353a2 2021-02-12T15:16:59 [subset] fix heap buffer overflow found by fuzzer.
Behdad Esfahbod c7d232ce 2021-02-10T18:13:38 Merge pull request #2701 from googlefonts/Mark-To-Ligature_grieger [subset] GPOS 5 MarkToLigature subsetting support
Garret Rieger 1d9801e0 2020-10-05T14:41:55 [subset] In AnchorMatrix::subset eliminate the use of dynamically allocated vector.
Garret Rieger 093909b2 2020-10-05T13:14:53 [subset] Fix wrong offset base for subsetting LigatureArray. Offsets from LigatureArray must be relative to the beginning of the LigatureArray table. For the serialization mechanism to use the correct beginning point the LigatureArray must be created using the push()/pop() mechanism. So convert LigatureArray subsetting to use serialize_subset() instead of a manually called serialize and subset.
Garret Rieger 147e93b9 2020-10-01T16:44:16 [subset] Fixes to get GPOS 5 subsetting code compiling.
Qunxin Liu 3a0b05fa 2020-02-06T15:08:26 [subset] GPOS 5 MarkToLigature subsetting support
Garret Rieger e5835053 2020-09-29T11:05:08 [subset] Use plan->glyphset_gsub instead of plan->glyphset for GSUB/GPOS This matches fontTools behaviour. glyphset_gsub does not contain gids added from closing over composite glyphs in glyf, since these cannot particpate in GSUB/GPOS processing.
Behdad Esfahbod fce64a40 2020-08-08T14:04:54 Minor
Ebrahim Byagowi 5a7cc7fd 2020-07-29T08:33:32 minor spacing tweak
Ebrahim Byagowi d0e2addd 2020-07-18T22:14:52 minor
Behdad Esfahbod 9ef9ac37 2020-06-17T17:41:15 [gpos] Break cycle-of-2 when cursive attaching Fix thinko this time around. Fixes https://github.com/harfbuzz/harfbuzz/issues/2469
Behdad Esfahbod 3fe71957 2020-06-17T17:51:08 Revert "[gpos] Break cycle-of-2 when cursive attaching" This reverts commit 7090707de67e660ae626ecf774f6af8a63a692ab.
Behdad Esfahbod 7090707d 2020-06-17T17:41:15 [gpos] Break cycle-of-2 when cursive attaching Fixes https://github.com/harfbuzz/harfbuzz/issues/2469
Qunxin Liu 973c47f6 2020-06-11T11:27:57 [subset] Move 2 experimental public api methods to be private methods in GSUB/GPOS. 2 methods are: hb_ot_layout_closure_lookups and hb_ot_layout_closure_features
Behdad Esfahbod 56719474 2020-06-05T12:57:23 s/blacklist/blocklist/g
Qunxin Liu d7c012a0 2020-02-26T13:11:42 [subset] GDEF Variation Store: step 2 do subset based on variation indices collected in step 1
Qunxin Liu 8200e48f 2020-02-26T13:11:42 [subset] GDEF Variation Store: step 1 closure device variation indexes, create old->new variation idx mapping and store them in subset-plan
Behdad Esfahbod 5cf53c06 2020-04-23T10:55:41 Rename add_coverage to collect_coverage
Ebrahim Byagowi 2dda6dd7 2020-04-20T14:12:45 minor, tweak spacing turn 8 spaces to tab, add space before Null/Crap
Qunxin Liu c8cc1e37 2020-04-02T16:57:01 fix issues in ClassDefFormat1 serialize: glyph ids in Iterator may be non-consecutive, so the number in classValue might be larger than length of the Iterator
Garret Rieger 2f556c38 2020-03-13T12:21:10 [subset] Fix crash when serializer runs out of room during gpos subsetting.
Ebrahim Byagowi 07acd1a0 2020-03-08T23:39:24 [subset] Rename src_base args to base to match sanitize methods So it will become easier to follow that serialize methods signatures should match with their sanitize methods counterparts.
ariza 188a0a47 2020-03-07T11:02:36 removed default base; replaced w/ bias if required
Qunxin Liu eb7849a8 2020-02-05T15:29:03 [subset] GPOS6 MarkToMark subsetting support
Qunxin Liu 82afc758 2020-02-04T13:24:37 [subset] GPOS4 MarkBase subsetting support
ariza 1ab3924b 2020-01-22T11:20:56 refix PR #2087 subset PairPos1 also added oss-fuzz 20211 data fixed by this
ariza 72cbfb90 2020-01-18T16:35:52 remove empty lookup subtables Added a variant of subset_offset_array which takes an extra arg passed to serialize_subset for this impl. Added a new api test "test-subset-gpos" for this.
Michiharu Ariza c828d7bf 2020-01-15T15:32:44 [subset] fixed GPOS device table sanitize & serialize (#2087)
Qunxin Liu e565d1f9 2019-11-01T10:21:36 [subset] subset lookup/feature/script lists for GSUB/GPOS
Qunxin Liu 0b39c480 2019-10-22T16:00:43 [subset] closure lookups for GSUB/GPOS
Behdad Esfahbod a061e47f 2019-12-10T13:31:50 Change a few HB_INTERNAL static methods to static inline
Behdad Esfahbod dd3972a3 2019-12-10T13:21:26 [GSUB] Simplify Extension is_reverse() We don't allow extension lookups to chain to another extension lookup. Simplify code for that.
Behdad Esfahbod 858b6279 2019-12-10T13:18:32 [machinery] Remove CastR<>()
Behdad Esfahbod b84ceb2f 2019-12-10T13:02:48 [machinery] Remove CastP
Behdad Esfahbod 39afe608 2019-12-10T12:04:44 [algs] Fold one more custom bsearch() in One more to go.
Ebrahim Byagowi 486754a8 2019-09-23T23:48:08 [serialize] Extract iterable copy, copy_all
Qunxin Liu defe9b6d 2019-10-25T10:07:26 crash fix : Heap-buffer-overflow READ 2 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18513
Qunxin Liu 1f0a9d9b 2019-09-17T11:10:08 [subset] GPOS Lookup Type 2: PairPos
Ebrahim Byagowi 0558413f 2019-10-01T13:49:55 Minor, tweak spaces
Qunxin Liu b0c3eb06 2019-09-18T16:11:44 [subset] GPOS Lookup Type 3: CursivePos
Ebrahim Byagowi 68d39ea4 2019-09-24T13:52:46 Revert previous change and fix -Wrange-loop-analysis complains
Ebrahim Byagowi cbc0646a 2019-09-24T12:08:12 Minor, normalize for each calls
Ebrahim Byagowi f0a76779 2019-09-23T21:09:39 [gpos] minor
Ebrahim Byagowi c1a585fa 2019-09-21T23:30:52 [gpos] minor
Ebrahim Byagowi d87d3899 2019-09-21T17:27:39 Fix clang -Wrange-loop-analysis complains ./hb-ot-layout-gpos-table.hh:674:43: error: loop variable '_' is always a copy because the range of type 'hb_zip_iter_t<hb_iter_type<hb_array_t<const OT::IntType<unsigned short, 2> > &>, hb_iter_type<hb_array_t<const OT::IntType<unsigned short, 2> > &> >' (aka 'hb_zip_iter_t<hb_array_t<const OT::IntType<unsigned short, 2> >, hb_array_t<const OT::IntType<unsigned short, 2> > >') does not return a reference [-Werror,-Wrange-loop-analysis] for (const hb_pair_t<Value, Value>& _ : hb_zip (val_iter, first_val_iter)) ^ ./hb-ot-layout-gpos-table.hh:674:12: note: use non-reference type 'hb_pair_t<OT::Value, OT::Value>' (aka 'hb_pair_t<IntType<unsigned short, 2>, IntType<unsigned short, 2> >') for (const hb_pair_t<Value, Value>& _ : hb_zip (val_iter, first_val_iter)) and In file included from hb-subset.cc:44: ./hb-ot-vorg-table.hh:87:34: error: loop variable '_' is always a copy because the range of type 'hb_map_iter_t<hb_filter_iter_t<hb_sorted_array_t<const OT::VertOriginMetric>, const hb_set_t *, OT::HBGlyphID OT::VertOriginMetric::*, nullptr>, (lambda at ./hb-ot-vorg-table.hh:100:15), hb_function_sortedness_t::NOT_SORTED, nullptr>' does not return a reference [-Werror,-Wrange-loop-analysis] for (const VertOriginMetric& _ : it) ^ ./hb-ot-vorg-table.hh:113:17: note: in instantiation of function template specialization 'OT::VORG::serialize<hb_map_iter_t<hb_filter_iter_t<hb_sorted_array_t<const OT::VertOriginMetric>, const hb_set_t *, OT::HBGlyphID OT::VertOriginMetric::*, nullptr>, (lambda at ./hb-ot-vorg-table.hh:100:15), hb_function_sortedness_t::NOT_SORTED, nullptr>, nullptr>' requested here vorg_prime->serialize (c->serializer, it, defaultVertOriginY); ^ ./hb-ot-vorg-table.hh:87:10: note: use non-reference type 'OT::VertOriginMetric' for (const VertOriginMetric& _ : it) ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Ebrahim Byagowi 6e42a418 2019-09-21T16:25:54 Minor, turn more of hb_apply to for each
Ebrahim Byagowi d512087e 2019-09-14T10:36:29 Rename GlyphID to HBGlyphID Avoid collision with macOS's ATSUnicodeTypes.h GlyphID
Behdad Esfahbod 3c81246f 2019-09-01T19:25:50 [subset] Use newer iter tools in SinglePosFormat1
Behdad Esfahbod e0e0c8c1 2019-08-29T14:58:16 Minor
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
Qunxin Liu 321d5588 2019-07-02T16:30:57 [subset] Add subsetting for GPOS Lookup Type 1: Single Adjustment Positioning Subtable
Ali Javadi c1841802 2019-07-16T22:10:24 Fix C++20 compile warning on implicit capture of this with '=' default capture (#1833) Happens when compiled with -std=c++2a, the fix just makes the captures explicit to resolve the issue. Just adding this in addition to = doesn't work in C++11. src/hb-ot-layout-gpos-table.hh:737:18: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture] { return (this+_).intersects (glyphs, valueFormat); }) ^ src/hb-ot-layout-gpos-table.hh:736:16: note: add an explicit capture of 'this' to capture '*this' by reference | hb_map ([=] (const OffsetTo<PairSet> &_) ^ , this
Behdad Esfahbod 7dcf8e12 2019-06-26T13:44:10 [config] Fix build with HB_NO_OT_LAYOUT
Behdad Esfahbod c8f529a0 2019-06-19T19:33:15 [config] Add HB_NO_HINTING, enabled by HB_TINY Disables HintingDevice tables and Anchors addressing contour points. Part of https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod 78d35f0e 2019-05-15T18:15:05 Reduce captures of lambdas
Behdad Esfahbod dfc57802 2019-05-07T23:26:09 Fix more double-promotion errors WHy do only some of the clang bots catch this I have no idea :(.
Behdad Esfahbod 83e3eabd 2019-05-07T20:58:43 Whitespace
Behdad Esfahbod 41248cce 2019-05-07T20:54:31 Remove MIN/MAX in favor of hb_min/hb_max
Behdad Esfahbod 36bb24f7 2019-05-05T10:14:17 [dispatch] Forward arguments in all dispatch multiplexers
Behdad Esfahbod b10f6593 2019-05-05T09:23:35 [dispatch] Use functionality from previous commit To remove a couple of unwanted wrapper methods
Behdad Esfahbod 88a41472 2019-05-02T14:22:31 [serializer] Accept exact type in serialize_subset/copy()
Ebrahim Byagowi 92588782 2019-04-30T13:05:10 Remove space between right angle brackets now that we have C++11 (#1689)
Behdad Esfahbod 95df00ae 2019-04-12T17:50:03 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++
Behdad Esfahbod 9d8c7204 2019-03-29T21:59:28 Whitespace
Behdad Esfahbod f5ef8a73 2019-03-29T21:57:17 [iter] Port one more function to dagger
Behdad Esfahbod 090fe56d 2019-01-25T15:34:03 Merge branch 'master' into iter
Behdad Esfahbod ef006549 2019-01-22T12:08:57 Convert tag enum class consts to static constexpr Part of https://github.com/harfbuzz/harfbuzz/issues/1553
Behdad Esfahbod a46874f1 2018-12-28T21:23:26 [iter] Revert back uses of C++11 auto type deduction
Behdad Esfahbod e1688424 2018-12-26T22:27:23 [iter] Port Coverage iterator to hb_iter_t