Commit Graph

8302 Commits

Author SHA1 Message Date
Ebrahim Byagowi 3e1a2632dc
[unscribe] fix leak issue
with no user_data provided, `free` will be called with `(0)` thus silently having a leak
2019-12-12 15:48:27 +03:30
Daeren 4ef597e170 Fix unary minus operator applied to unsigned int
Applying unary minus operator to unsigned int causes the following error on MSVS: error C4146
This patch fixes the error.
2019-12-11 09:19:28 -06:00
Daeren 1770493cf5 Fix unary minus operator applied to unsigned int
Applying unary minus operator to unsigned int causes the following error on MSVS: error C4146
This patch fixes the error.
2019-12-11 09:19:19 -06:00
Behdad Esfahbod a061e47fcc Change a few HB_INTERNAL static methods to static inline 2019-12-10 13:31:50 -06:00
Behdad Esfahbod dd3972a364 [GSUB] Simplify Extension is_reverse()
We don't allow extension lookups to chain to another extension lookup.
Simplify code for that.
2019-12-10 13:28:39 -06:00
Behdad Esfahbod 858b627984 [machinery] Remove CastR<>() 2019-12-10 13:18:32 -06:00
Behdad Esfahbod b84ceb2fcf [machinery] Remove CastP 2019-12-10 13:02:48 -06:00
Behdad Esfahbod 85574ec287 [machinery] Minor 2019-12-10 12:52:32 -06:00
Behdad Esfahbod 6a60ca117c [algs] Fold last other bsearch() in
Now truly have only one bsearch implementation.
2019-12-10 12:32:59 -06:00
Behdad Esfahbod 39afe608b4 [algs] Fold one more custom bsearch() in
One more to go.
2019-12-10 12:13:40 -06:00
Behdad Esfahbod b1dc676eaa [algs] Reduce one more bsearch() impl
Ouch, there were three more left.  Down one.  Two to go.
2019-12-10 12:13:40 -06:00
Behdad Esfahbod f47cbade18 [aat] Adjust fallback positioning logic
Fixes https://github.com/harfbuzz/harfbuzz/issues/1528

Wish could add a test...

$ ./hb-view --font-file Thonburi.ttc --unicodes U+0E17,U+0E35,U+0E48,U+0E4A --shaper ot

                   ▃

         ▂▃▃▄▃▂▁▊        ▃  ▃       ▎
      ▗   ▅▆▆▅          ▌ ▆▆▅▆▙ ▌▗
     ▗                  ▙ ▂  ▎▗   ▟
     ▅▆▆▆▇▇▇▇▇▇▇▆▆▅▄     ▇▅▅▅ ▙▆▇
    ▁▁▂▁       ▁▁
         ▖                    ▖ ▂▂
  ▉   ▁        ▆▆        ▌   ▆  ▙▄ ▁▁
   ▙            ▉      ▃▖           ▟
      ▊         ▉      ▅▟           ▗▄
      ▊         ▉     ▗ ▏           ▇▆
      ▊    ▟    ▉      ▆             ▖
      ▊         ▉        ▌        ▂
      ▊   ▏     ▉           ▌ ▗   ▄▟
      ▊                        ▆
2019-12-09 18:11:04 -06:00
Behdad Esfahbod fa7edf87c9 [bsearch] Massage API some more 2019-12-09 17:51:41 -06:00
Behdad Esfahbod 70aa5071d8 [algs] Adjust return value of hb_ctz(0) to be 32 instead of 0 2019-12-09 17:48:10 -06:00
Behdad Esfahbod eefb78f674 Minor 2019-12-09 17:46:56 -06:00
Behdad Esfahbod 9fb030585a Rename start/end to first/last in RangeRecord
Because that's what they are.
2019-12-09 17:46:08 -06:00
Ebrahim Byagowi 9b1d5c4a59
[number] fix where strtod_l not available 2019-12-09 12:29:28 +03:30
Ebrahim Byagowi 5c8f960289
[number] minor, include the renamed header 2019-12-09 10:48:43 +03:30
Behdad Esfahbod 48eef2724c [algs/array] Consolidate the last two bsearch implementations!
Yay!  Seems to work.
2019-12-06 05:04:11 +00:00
Behdad Esfahbod ed35dea8c0 Fourth try... sighs 2019-12-06 04:37:11 +00:00
Behdad Esfahbod 9168310bb4 Fix build, third times... 2019-12-06 04:28:06 +00:00
Behdad Esfahbod 34f5cc2cc8 Second try at fixing build 2019-12-06 04:09:33 +00:00
Behdad Esfahbod 14ce5ab0b7 First try at fixing build errors 2019-12-06 03:54:46 +00:00
Behdad Esfahbod 2274270c6a [algs] Streamline bsearch some more 2019-12-06 03:42:21 +00:00
Behdad Esfahbod bd55d4b49f [algs] Streamline bsearch() API more towards hb_array_t::bsearch_impl()
Preparing to merge the two finally!
2019-12-06 03:35:24 +00:00
Behdad Esfahbod fd6df520a1 [array] Isolate bsearch implementation more 2019-12-06 03:01:34 +00:00
Behdad Esfahbod 06d3c2019f [array] Simplify bfind() positioning
I had copied the old scheme from fontconfig's fccharset.c.  I just
convinced myself that this change is correct and produces exact
same results.  But I also am skeptical.  Anyone else feel like
convincing themselves as well please?
2019-12-06 02:52:54 +00:00
Ebrahim Byagowi d67ba649a3 Rename hb_array_t::in_range to hb_array_t::check_range 2019-12-06 02:27:23 +00:00
Ebrahim Byagowi 72d83a0280 Make hb_array_t::in_range similar to hb_sanitize_context_t::check_range 2019-12-06 02:27:23 +00:00
Behdad Esfahbod 2dc20e632e Implement fallback vertical shaping from Firefox
Fixes https://github.com/harfbuzz/harfbuzz/issues/355
2019-12-05 15:28:42 +00:00
Behdad Esfahbod b6d0f1529d [indic] Fix old-spec base-finding logic w vatu feature
Fixes https://github.com/harfbuzz/harfbuzz/issues/1587
2019-12-05 12:19:52 +00:00
Behdad Esfahbod 0414341ac5 Prefer AAT shaping over OT if both available
Fixes https://github.com/harfbuzz/harfbuzz/issues/1529
2019-12-05 11:26:39 +00:00
blueshade7 82545c5e2b more coding style fixes 2019-11-26 18:34:06 +00:00
blueshade7 2e7c1239c8 minor: coding style 2019-11-26 18:34:06 +00:00
blueshade7 ab525ac66d fix HB_TINY buid 2019-11-26 18:34:06 +00:00
blueshade7 ff64652cf6 fix shape-fuzzer failure 2019-11-26 18:34:06 +00:00
blueshade7 a333b0f717 add hb-ot-cff1-std-str.hh to Makefile.sources 2019-11-26 18:34:06 +00:00
blueshade7 61707266a3 fix get_sid crash 2019-11-26 18:34:06 +00:00
blueshade7 4c4e08a1ef add cff1::accelerator_t::fini 2019-11-26 18:34:06 +00:00
blueshade7 ff87465b40 add get_glyph_from_name & test. use hb_string_array 2019-11-26 18:34:06 +00:00
blueshade7 51e7728521 minor 2019-11-26 18:34:06 +00:00
blueshade7 6d9eb9c040 fixed failure with language-tags.tests 2019-11-26 18:34:06 +00:00
blueshade7 59fe379797 fixed hb-shape-fuzzer failures in get_sid 2019-11-26 18:34:06 +00:00
blueshade7 e26df436bc fix test-ot-face crash 2019-11-26 18:34:06 +00:00
blueshade7 7b49042ef4 add cff1::get_glyph_name 2019-11-26 18:34:06 +00:00
blueshade7 ea8fdfa079 Merge branch 'master' into var-subset 2019-11-22 15:59:09 -08:00
Behdad Esfahbod d5338ba189 [ft] Add locking FT_Face API
Now that we mutex our internal FT_Face, share it with clients.

New API:
- hb_ft_font_lock_face()
- hb_ft_font_unlock_face()
2019-11-22 16:22:27 -05:00
Behdad Esfahbod e5c7ee9f75 [set] Fix undefined-behavior shift in _previous()
harfbuzz/src/hb-set.hh:138:43: runtime error: shift exponent 64 is too large for 64-bit type 'hb_set_t::page_t::elt_t' (aka 'unsigned long long')
2019-11-20 14:22:01 -05:00
Behdad Esfahbod 5fddc5f169 Use foreach_cluster 2019-11-20 13:07:26 -05:00
Behdad Esfahbod e4a101ed38 [ft] Fix for HB_NO_VAR build 2019-11-19 20:04:00 -05:00
David Corbett 76c27462c2 Don’t modify a ccc to 6
ccc=6 will be used in Unicode 13.0.
2019-11-19 17:16:27 -05:00
Michiharu Ariza 8fdafee2a6 undef HB_STRING_ARRAY_LENG_NAME 2019-11-19 01:13:00 -05:00
blueshade7 5e9863f3c6 ARRAY_LENGTH fails with -Wglobal-constructors 2019-11-19 01:13:00 -05:00
blueshade7 a75983690d calculate hb_string_array length automatically 2019-11-19 01:13:00 -05:00
Khaled Hosny 57da16bc59 [cff] Check rcurveline and rlinecurve arguments
Make sure the number of arguments is not too many or too few, otherwise
skip the command.
2019-11-18 20:46:05 +02:00
Khaled Hosny 9f1524ce83 [cff] Fix a typo in processing rlinecurve
We want to process all pairs of arguments except the last 6 as lines, so
should have been subtracting 6 here, otherwise if the number of
arguments happens to be multiples of 6 they will be all treated as
curves.

See https://github.com/harfbuzz/harfbuzz/pull/2016#issuecomment-554640098
2019-11-18 20:46:05 +02:00
Behdad Esfahbod 78d5eca813 [set] Fix range-based-loop condition
Alternative to https://github.com/harfbuzz/harfbuzz/pull/2046
2019-11-18 13:09:29 -05:00
Hal Canary 4dae7cee4b [minor] Fix common typos: substition, the the.
s/substition/substitution/
s/the the/the/
2019-11-13 18:38:35 +03:30
David Corbett e6351d9b2c Add ms-use/IndicShapingInvalidCluster.txt 2019-11-11 14:51:34 -08:00
David Corbett b372c3e956 Insert a dotted circle within <U+0B85, U+0BC2> 2019-11-11 14:51:34 -08:00
Ebrahim Byagowi 64a45be519
[ubsan] Don't decrease pointer if match_glyph_data is null (#2048)
Similar to fix on https://github.com/harfbuzz/harfbuzz/pull/2022

Fixes https://crbug.com/1023070
2019-11-09 12:25:33 +03:30
Ebrahim Byagowi 486754a888 [serialize] Extract iterable copy, copy_all 2019-10-31 13:31:11 -07:00
Behdad Esfahbod 35218c488c Minor
Allow empty HB_VAR_ARRAY definition.  Though, doesn't compile with any
compiler I know of.
2019-10-31 13:19:44 -07:00
Behdad Esfahbod 1a1d64bc6f If applying morx, apply kern table even if GPOS is present and has kern
Since we won't be applying GPOS if morx...

To be adjusted as I receive more information from Ned.  But for now
fixes this:

$ ./hb-shape GillSans.ttc Ty
[T=0+1109|y=1@-128,0+769]

Fixes https://github.com/harfbuzz/harfbuzz/issues/1982 for now.
2019-10-31 12:51:40 -07:00
Behdad Esfahbod 3a74ee5282 2.6.4 2019-10-29 12:49:28 -07:00
Ebrahim Byagowi 3958f6fb23 Add in_range in hb_bytes_t to merge range_checker_t with it 2019-10-29 23:16:05 +03:30
Ebrahim Byagowi aa3831e295 [glyf] Use contour_bounds_t::empty to simplify get_extents logic 2019-10-29 22:34:14 +03:30
Ebrahim Byagowi d59ae5836d [glyf] Refactor contour_bounds_t use to make its fields protected 2019-10-29 22:34:14 +03:30
Behdad Esfahbod 773ee8041e
Merge pull request #2038 from ebraminio/glyf-contour
Remove contour_point_t so we won't need to zero its unused var
2019-10-29 10:58:56 -07:00
Ebrahim Byagowi 0efbda7a40 Remove contour_point_t so we won't need to zero its unused var 2019-10-29 21:03:26 +03:30
Behdad Esfahbod 47b4074d5f
Merge pull request #2034 from khaledhosny/cmap-notdef
[cmap] Check GID before adding ranges in format 4 & 12
2019-10-29 03:16:34 -07:00
jfkthame dd8a846037
Use proper y-scale factor for height value 2019-10-29 09:20:41 +00:00
Behdad Esfahbod 7152ac3fcf Fix build
$ make CPPFLAGS="-DHB_TINY -DHB_NO_OT_FONT" libharfbuzz-subset.la
2019-10-28 17:12:55 -07:00
Khaled Hosny dd288840d6 [cmap] Check GID before adding ranges in format 4 & 12
Fixes https://github.com/harfbuzz/harfbuzz/issues/2031
2019-10-29 02:09:13 +02:00
Behdad Esfahbod fd71c045b4 Hopefully fix up previous commit and bots 2019-10-28 17:06:53 -07:00
Behdad Esfahbod e832dc4c64 [config] Make HB_NO_ERRNO work with systems defining errno as a macro 2019-10-28 17:02:40 -07:00
Behdad Esfahbod ce11df1b5b 2.6.3 2019-10-28 14:46:59 -07:00
Behdad Esfahbod 5a59de2b98 Actually add +hb_font_get_nominal_glyphs()
New API:
+hb_font_get_nominal_glyphs()
2019-10-28 14:46:59 -07:00
Behdad Esfahbod 03028a5fe5 Revert "Don't include codepoint 0 in the results of collect_unicodes."
This reverts commit 14ad96ffbf.

This was wrong.  My bad!

https://github.com/harfbuzz/harfbuzz/issues/2031
2019-10-28 13:46:56 -07:00
Garret Rieger 14ad96ffbf Don't include codepoint 0 in the results of collect_unicodes.
It is always assumed to be the notdef glyph.
2019-10-28 12:56:04 -07:00
Ebrahim Byagowi aca6390281 [gpos] Don't move pointer when match_glyph_data is not set 2019-10-28 22:17:48 +03:30
Qunxin Liu defe9b6da0 crash fix : Heap-buffer-overflow READ 2
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18513
2019-10-25 13:09:47 -07:00
Qunxin Liu b2fcca6e14 fuzzer crash fix
https://oss-fuzz.com/testcase-detail/5643107869917184
2019-10-24 16:11:30 -07:00
Behdad Esfahbod 5e489670e1 Remove hb-warning.cc
Fixes https://github.com/harfbuzz/harfbuzz/issues/2005
2019-10-22 15:03:47 -07:00
Garret Rieger 05bcdb39d8 Add a specialization of array_t:hash for hb_bytes_t and hb_ubytes_t. 2019-10-22 13:33:50 -07:00
Garret Rieger 95ab110cd9 Optimize intersects_array to fix fuzzer timeout. 2019-10-22 13:33:50 -07:00
Garret Rieger be5cdcdfa2 Store the hash value of a key in item_t in hb_map to reduce the number of hash computations. 2019-10-22 13:33:41 -07:00
Qunxin Liu b33a0d628e fuzzer crash fix: Null-dereference WRITE
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18363
2019-10-22 01:01:08 +03:30
Qunxin Liu 1f0a9d9be9 [subset] GPOS Lookup Type 2: PairPos 2019-10-21 12:35:28 -07:00
Qunxin Liu b66094ada0 [subset] GSUB Lookup Type 6: ChainContextSubst 2019-10-18 16:52:55 -07:00
Garret Rieger eff91bbb4b Add missing pop() for the failure case of script subsetting. 2019-10-18 15:10:30 -07:00
Garret Rieger eab191fd9c Rewrite hash and == function for hb_array_t as a plain loop.
Profling showed that the current implementation were accounting for nearly all processing time in some cases. These implementations look to be about 10x faster.
2019-10-18 15:10:30 -07:00
Garret Rieger 831daf4c76 Enforce HB_MAX_LANGSYS limit during layout subsetting. 2019-10-18 15:10:30 -07:00
Garret Rieger 9871461bce Enforce HB_MAX_SCRIPTS during subsetting of the script table. 2019-10-18 15:10:30 -07:00
Behdad Esfahbod 029775bcbd [buffer] Minor; improve HB_NO_BUFFER_MESSAGE 2019-10-17 10:00:40 -07:00
Ebrahim Byagowi 9a68e6b901
[doc] minor
Addresses https://github.com/harfbuzz/harfbuzz/pull/2013/files#r335196908
2019-10-16 13:28:15 +03:30
Ebrahim Byagowi 453050ad30 Merge remote-tracking branch 'upstream/master' into var-subset 2019-10-13 08:45:29 +03:30
Ebrahim Byagowi b0b8551afc [glyf] Use range_checker_t in composite_iter_t 2019-10-13 07:17:03 +03:30
Ebrahim Byagowi 06e35ce052 [glyf] minor 2019-10-13 07:17:03 +03:30
Ebrahim Byagowi d13bb4bd94 [glyf] other cleanups 2019-10-13 07:17:03 +03:30
Ebrahim Byagowi e7aa8c5d22 [glyf] Introduce glyf::Glyph, a hb_bytes_t/GlyphHeader pair 2019-10-13 07:17:03 +03:30
Ebrahim Byagowi 546ffc9faf [glyf] minor 2019-10-13 07:17:03 +03:30
Ebrahim Byagowi 4299ea266e [glyf] Move get_contour_points to GlyphHeader 2019-10-13 07:17:03 +03:30
Ben Wagner b918cd8c76 Document hb_feature_t.
This documents hb_feature_t. This is motivated mostly by the ambiguity
of the units for 'start' and 'end' (clusters) and whether they are
inclusive or exclusive. This also documents that for lookup type 3 the
value is the one based index into the alternates and that in a list of
features later feature values override previous feature values with the
same tag.
2019-10-11 20:54:06 +03:30
Behdad Esfahbod e637a4b3de
Merge pull request #2012 from harfbuzz/lepcha-oo
Reorder U+1C29 LEPCHA VOWEL SIGN OO
2019-10-11 10:28:58 +07:00
Ebrahim Byagowi 670fec231d Minor, add a zero length tolerant memset, hb_memset 2019-10-10 09:21:08 +03:30
David Corbett e4464f4484 Reorder U+1C29 LEPCHA VOWEL SIGN OO 2019-10-09 20:55:52 -04:00
Garret Rieger e17e744300 Convert existing uses of serialize_append in gsub subsetting to use subset_offset_array. 2019-10-09 13:52:04 -07:00
Garret Rieger 36f18cecbb Add subset_offset_array helper function which simplifies subsetting offset arrays during stream operations. 2019-10-09 13:52:04 -07:00
Ebrahim Byagowi dc45f22521 [ot-metrics] Don't use mixed scaled and not scaled for generating extents 2019-10-08 23:27:39 +03:30
Ebrahim Byagowi b068e25f8f [glyf] Address Behdad's reviews
Addresses https://github.com/harfbuzz/harfbuzz/pull/1999#issuecomment-539298559
* Don't check against Null pool
* Remove cryptic _tt suffix
2019-10-08 16:29:19 +03:30
Ebrahim Byagowi 6961766db2 [glyf] fix scaling direction 2019-10-08 16:26:48 +03:30
Ebrahim Byagowi 0527fda4c7 minor 2019-10-08 16:19:39 +03:30
Ebrahim Byagowi b2628f1a3e [glyf] Move glyph bytes drop hints logic to GlyphHeader 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi 1fb9c3b646 [glyf] Implement depth limit for add_gid_and_children 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi be0eddd418 [glyf] Move add_gid_and_children to glyf table 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi c7621cf211 Minor, replace hb_set_add with private API 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi ad86806dcb [glyf] Move subset related methods inside GlyphHeader 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi 7839e23558 [glyf] minor 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi cbefbb2439 [glyf] Move padding removal logic to GlyphHeader 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi 1ab8f9aa7a [glyf] minor 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi 13fb5612ad [glyf] Aggregate get_offsets uses 2019-10-08 15:40:29 +03:30
Ebrahim Byagowi 5179b96958 [cff] minor on number_t 2019-10-08 11:11:18 +03:30
Ebrahim Byagowi d73cdcf361 [ot-font] Apply font scaling before turning to int 2019-10-08 11:11:18 +03:30
Ebrahim Byagowi d7df7db160 Merge remote-tracking branch 'upstream/master' into var-subset 2019-10-06 17:18:59 +03:30
Ebrahim Byagowi 74a2dbbced minor 2019-10-06 17:18:55 +03:30
Ebrahim Byagowi f2339964b7 [glyf] minor, remove GlyphHeader::simple_* helpers 2019-10-06 16:58:38 +03:30
Ebrahim Byagowi 2d7ca6a76a [glyf] Move get_instruction_length inside GlyphHeader struct 2019-10-06 16:58:38 +03:30
Ebrahim Byagowi 50aef4d7f8 [glyf] cleanup 2019-10-06 16:58:38 +03:30
Ebrahim Byagowi ee3f4630d7 [glyf] Remove get_composite_iter and refactor bytes_for_glyph for shape uses 2019-10-06 16:58:38 +03:30
Ebrahim Byagowi 8378ab96e2
[glyf] Rewrite composite iterator to new iterators convention 2019-10-06 13:49:45 +03:30
Ebrahim Byagowi 100dbccaa5 Merge remote-tracking branch 'upstream/master' into var-subset 2019-10-06 09:18:22 +03:30
Ebrahim Byagowi 21c80d955f [gvar] minor 2019-10-06 08:59:12 +03:30
Ebrahim Byagowi 5752863640 [glyf][gvar] Make HB_NO_VAR buildable 2019-10-06 08:59:12 +03:30
Ebrahim Byagowi 8e33510343 [gvar] minor 2019-10-06 08:59:12 +03:30
Ebrahim Byagowi b3afa81644 [glyf] Use common convention of other tables access, format 2019-10-06 08:59:12 +03:30
Ebrahim Byagowi 88bd342c0f [glyf] minor 2019-10-06 08:59:12 +03:30
Ebrahim Byagowi ee7610181c [hmtx] Use more conventional internal API style 2019-10-06 08:59:12 +03:30
Ebrahim Byagowi c9577a630f [hmtx] Use more optimal way to access glyf table 2019-10-06 08:59:12 +03:30
Michiharu Ariza b9ff43c162 Implement gvar table and variable glyf
Split from Ariza's "[subset] TrueType/CFF2 variable font" work on #1594
2019-10-06 08:58:40 +03:30
Ebrahim Byagowi 79ec65ae10 [ot-font] Use var vmtx side bearing in calculating v-origin 2019-10-03 14:27:51 +03:30
Ebrahim Byagowi 19d45dcab7 Merge remote-tracking branch 'upstream/master' into var-subset 2019-10-03 13:39:17 +03:30
Ebrahim Byagowi 3fd555be54 [hmtx] Prepare to fix and minor fixes 2019-10-03 13:34:43 +03:30
Michiharu Ariza 6d09b5a8a0 Implement hmtx/vmtx metrics read from hvar/vvar 2019-10-03 13:34:43 +03:30
Ebrahim Byagowi 2d7221a0e3
[cff] minor 2019-10-01 15:05:02 +03:30
Ebrahim Byagowi 0558413f27 Minor, tweak spaces 2019-10-01 13:50:11 +03:30
Ebrahim Byagowi 51b720f686 Fix -Wsizeof-array-div clang warning 2019-10-01 12:40:41 +03:30
Behdad Esfahbod faace9437e
Merge pull request #1807 from harfbuzz/subset-varstore
VariationStore serializer
2019-09-30 13:34:05 -07:00
Behdad Esfahbod e48ef0804a 2.6.2 2019-09-30 12:39:06 -07:00
Behdad Esfahbod d6ad613159 [docs] Misc fixes 2019-09-30 10:40:25 -07:00