Commit Graph

8617 Commits

Author SHA1 Message Date
Garret Rieger 834a224a50
[subset] Put a limit on the number of lookup indices that can be visited during closures
Fixes https://crbug.com/oss-fuzz/21025
2020-03-12 13:32:36 +03:30
Ebrahim Byagowi f8c8be0564 [meson] Add amalgam build option 2020-03-12 00:25:48 +03:30
Aaron Boxer 68f982415b meson: update to latest master 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 535186fd84 meson: provide a harfbuzz-config for use from CMake
See #822 and #1437.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 7eaf3754dc meson: update for changes in master
And remove header files from sources list, Meson figures
out header dependencies by itself (via the compiler).
2020-03-11 19:18:57 +03:30
Khaled Hosny 04438554c8 meson: Update build files after rebase 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 618584e923 meson: rename incbase to incconfig
Makes it clearer what it's for: config.h. See #4.
2020-03-11 19:18:57 +03:30
Khaled Hosny 14b5c774c2 meson: Fix include directory when used as subproject
HarfBuzz headers are under src/ not the root directory, without using
incsrc no headers will be found by the dependent project. I think
incbase is superfluous, it should be replaced by incsrc or dropped.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 6abe7983ed meson: add g-i introspection 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller d230a02048 meson: generate .def file for MSVC symbol export on the fly
Fix symbol export with MSVC when features are disabled,
such as GLib. We need to generate the list of exported
symbols on the fly to make sure we only export symbols
that are actually available.

Needs some minor modifications to the gen-def.py script:
 - accept header list also via command line args; we can't
   pass things to a configure_file() command via the environment
   in Meson.
 - strip any leading 'src/' from library filename. This might
   be there because in Meson the script might be called from
   the top-level directory and not the current source directory.

Remove .def files again which had been checked in for earlier
versions of the Meson port.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 4840c8237e meson: add option and build system plumbing for CoreText on macOS/iOS
Untested though.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 83ebbe4ade meson: add option and build system plumbing for DirectWrite on Windows
Untested though.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller b7796a5d69 meson: add option and build system plumbing for uniscribe on Windows
Untested though.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller c81290b0c1 meson: add feature option for internal ucdn lib 2020-03-11 19:18:57 +03:30
Nirbheek Chauhan f65def4dc7 meson: Declare dependencies for use as a subproject
Also use fallbacks for dependencies that have meson build files
2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 29c47d8eb5 meson: pass subdirs to pkgconfig.generate() 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 484313ff36 meson: install 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle d4a7237327 meson: all tests passing on Windows / MSVC 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 99b26789d2 meson: more windows fixes 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 920efc0ef7 Add Meson build definitions
Fixes #490

http://mesonbuild.com
2020-03-11 19:18:57 +03:30
Khaled Hosny 0615c7b64b Remove workaround for old pkg-config
Add FreeType dependency to .pc, Ubuntu 14.4 is long dead.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1565
2020-03-10 22:04:35 +02:00
Ebrahim Byagowi 47f5a86036 minor, use NN on every OffsetTo<UnsizedArrayOf<>> 2020-03-10 13:57:46 +03:30
Ebrahim Byagowi 648338c7d4 [gvar] Add fields docs from ot-spec as other tables 2020-03-10 13:20:56 +03:30
Ebrahim Byagowi 1b3b96973b [gvar] Don't copy shared tuples into gvar's accelerator 2020-03-10 12:46:09 +03:30
Ebrahim Byagowi 29dd1fe506 [gvar] Don't check again against face num glyph
Done once by sanitize_shallow
2020-03-10 11:41:58 +03:30
Ebrahim Byagowi d4b1181760 [gvar] minor, rename gvar_table to table 2020-03-10 11:29:56 +03:30
Ebrahim Byagowi 5c37693864 [gvar] Remove axisCount comparison with fvar as we runtime check that 2020-03-10 11:25:47 +03:30
Ebrahim Byagowi ba22df36ad minor
makes search for sanitize calls easier for me
2020-03-10 10:43:27 +03:30
Ebrahim Byagowi 8ca9df7acb [subset] Remove not needed blob sanitize call 2020-03-10 10:40:05 +03:30
Ebrahim Byagowi 07acd1a042 [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.
2020-03-08 23:39:26 +03:30
ariza 188a0a47c2 removed default base; replaced w/ bias if required 2020-03-08 22:59:43 +03:30
blueshade7 4c3af7d406 add "add_link()" with bias arg
issue #2227
2020-03-08 18:48:56 +03:30
Ebrahim Byagowi bdf372b24c [subset/cbdt] Release the referenced cbdt table on error
Just accidentally spotted it, when the table has less than 4 bytes
2020-03-08 00:49:40 +03:30
Ebrahim Byagowi 0d729b4b72 [avar] Fix out-of-bound read when input is bigger than all the coords
'i' shouldn't become equal to array's length which as the increament
is happened at end of the loop, if the input is bigger than all the
table coords, it will be equal to array's length.

Fixes https://crbug.com/oss-fuzz/21092
2020-03-07 13:20:41 +03:30
Ebrahim Byagowi 6924e29f62 [var] Fix hb_ot_var_get_axis_infos's offset semantic
The API was adding offset to input's infos buffer index also which is
unusual between our APIs and wrong.
2020-03-06 02:01:04 +03:30
Ebrahim Byagowi b7617f6b3c [glyf] Update to latests of ttf-parser 2020-03-05 15:08:06 +03:30
ariza 0b29053864 removed unused code 2020-03-05 10:11:23 +03:30
ariza e8f010d793 removed unused code & data; rename 2020-03-05 10:11:23 +03:30
Garret Rieger 14a7b6f1ab Set hb_buffer_t to use array_t.reverse(). 2020-03-04 16:52:29 -08:00
ariza 5935a1dc0b add pop_discard() calls to errror returns 2020-03-05 01:22:51 +03:30
ariza c05458ec7f update cff & cff2 subsetters 2020-03-05 01:22:51 +03:30
Ebrahim Byagowi 9004848560 [gvar] Make sure font's num_coords matches with gvar.axisCount 2020-03-04 12:43:26 +03:30
Ebrahim Byagowi 1af3363f9e [gvar] Use hb_array_t instead indexing raw pointers 2020-03-04 12:43:26 +03:30
Ebrahim Byagowi 99b5b3f1b1 [gvar] Make sure TupleVarHeader has the needed size
Fixes https://crbug.com/oss-fuzz/21026
2020-03-04 12:43:26 +03:30
Ebrahim Byagowi b398748d8b
[algs] Add hb_clamp
Similar to stl and glsl's clamp
2020-03-04 11:18:19 +03:30
Ebrahim Byagowi f745777c60 minor, debug bit, ops 2020-03-03 19:14:41 +03:30
Ebrahim Byagowi f253f06cf3 [fuzz] Add another fixed case
https://crbug.com/oss-fuzz/14626

another numerous subtables count which is fixed by d38360397
2020-03-03 19:12:04 +03:30
Ebrahim Byagowi d383603976
Limit OT::Lookup subtables (#2219)
Fixes https://crbug.com/oss-fuzz/13943
2020-03-02 22:41:08 +03:30
Ebrahim Byagowi 60262e4ca9 [var] Build end-points array on gvar itself 2020-02-29 22:57:59 +03:30
Ebrahim Byagowi 44169f3396
[draw] Fix invalid rendering of some glyph on Estedad-VF
Basically reverts 11f3fca so I can do the same tested and better later

Fixes #2215
2020-02-29 16:04:03 +03:30
Michiharu Ariza 5ab50eebd7
collect_unicodes() with clamp, calling add_range()
Use add_range instead an inner loop, clamp its input number by
number of glyphs a face has.

Even the face cmap12 and 13 have 32-bit hb_codepoint_t, which is here
used to make timeout, face's maxp has 16-bit gid limitation at least for now,
using that makes sure we both fix and the timeout and don't need to change
much things here also in order to support 32-bit gids also someday.

Fixes #2204
2020-02-29 13:02:29 +03:30
Garret Rieger 414529e45a [subset] Limit the number of feature indices processed during script subsetting. 2020-02-28 16:10:14 -08:00
Garret Rieger 75622b0d24 [subset] Limit the number of features processed in the feature closure. 2020-02-28 16:10:14 -08:00
Garret Rieger c66ee213b7 Limit the number of feature indices processed during feature collection. 2020-02-28 16:10:14 -08:00
Ebrahim Byagowi 758fda728b
[glyf] Don't accept gids higher than maxp's glyphs number
This specially becomes concerning on sub-components where a gvar table
that is sanitized using maxp's glyphs number overflows when a high gid
accepted here goes to it, maybe an additional check can be put there
also, this however feels to be enough.

Fixes https://crbug.com/oss-fuzz/20944
2020-02-28 23:19:06 +03:30
Ebrahim Byagowi e642aab116
[subset] Add source_blob as a hb_subset_context_t field (#2203)
So no more double sanitizing source table.
2020-02-28 22:24:25 +03:30
Ebrahim Byagowi e90213868b Revert "collect_unicodes() to check gid < num_glyphs with cmap 12"
Didn't fix the case actually, making bots to fail.

This reverts commit 15b43a4104.
2020-02-28 21:24:51 +03:30
Ebrahim Byagowi 61208401f4
[gvar] Use hb_bytes_t.check_range instead having in house one
And use TupleVarHeader calculated size for validity check.

Fixes https://crbug.com/oss-fuzz/20919 and possibly other gvar related issues
2020-02-28 21:09:07 +03:30
Michiharu Ariza 15b43a4104
collect_unicodes() to check gid < num_glyphs with cmap 12
fixes #2204
2020-02-28 20:15:39 +03:30
Qunxin Liu b0749bfaa5 [subset] GDEF LigCaretList subsetting support 2020-02-28 14:51:52 +03:30
ariza 002f0e20c4 reimplment serialize_int using check_assign() 2020-02-28 14:21:58 +03:30
Ebrahim Byagowi 14b134379d [gvar] Minor, check whether sub_array result also have enough room 2020-02-27 21:01:48 +03:30
Ebrahim Byagowi 8eba66c1c6 [gvar] Fix invalid memory access by refactoring GlyphVarData fetch logic
Fixes https://crbug.com/oss-fuzz/20906
2020-02-27 20:26:54 +03:30
Evgeniy Reizner f44e1dc07d Fix spelling. 2020-02-27 13:33:56 +03:30
Qunxin Liu 5ad761b943 [subset] GDEF MarkGlyphSets subsetting support 2020-02-26 15:15:21 -08:00
Qunxin Liu fcd7f33bbb [subset] GDEF glyphClassDef subsetting support
glyphClassDef uses the same ClassDef format. However, glyphClassDef table
uses predefined class values so we do not remap class values.
2020-02-26 11:10:31 -08:00
Garret Rieger 50129b03a1 Add a reverse () call to hb_array_t. 2020-02-26 11:09:54 -08:00
Garret Rieger 38c6598c1c Switch to C style comments. 2020-02-26 11:09:54 -08:00
Garret Rieger 52b6e0baa0 When serializing cmap14 order the offsets from smallest to largest.
Current versions of OTS fail fonts with cmap 14's who's last offset does not point to the a block at the end of the table.
2020-02-26 11:09:54 -08:00
ariza d0aaba5c50 fixes oss-fuzz 20886
hb_set_t::resize () is needed after compact()
2020-02-26 09:35:32 -08:00
Ebrahim Byagowi 05a25c1a5b
[cff] minor, remove unused fields 2020-02-26 19:35:27 +03:30
Ebrahim Byagowi 9fe0dc3464 [draw] Pass draw_helper_t itself around instead recreating it
Specially helpful if we want to change the design
2020-02-26 17:40:46 +03:30
Ebrahim Byagowi 4cdaa9d1f4 [glyf] Simplify contour end logic
So no need for infinite loop here
2020-02-26 16:29:14 +03:30
Ebrahim Byagowi 84163c83d3 [draw] Skip commands and paths not contributing anything
They aren't contributing to rendering and making issue for stroking, let's skip them
ourselves as Skia does also https://skia-review.googlesource.com/c/skia/+/268166

They are useful for extracting extents and so which that functionality won't be effected by this change.
2020-02-26 16:09:28 +03:30
Ebrahim Byagowi 073d4954e0 [draw] Port glyf path extract to draw_helper_t 2020-02-26 15:40:40 +03:30
Ebrahim Byagowi 0ebf3a4e62 [draw] Move common CFF path building logic to draw_helper_t 2020-02-26 15:15:22 +03:30
Michiharu Ariza c400cb8863
Re-implement hb_set_t::del_range (#2194)
* optimize hb_set_del_range()

fix issue #2193

* fixed bug & added tests

* coding & comment tweaks
2020-02-25 16:06:03 -08:00
Ebrahim Byagowi c21eb86bfd
Merge pull request #2163 from harfbuzz/absolute-link
added add_link_abs()
2020-02-26 02:54:38 +03:30
ariza 4081439d2a tweak reflecting review & add test cases 2020-02-25 15:03:12 -08:00
ariza de896278f7 coding & comment tweaks 2020-02-25 07:12:20 -08:00
Ebrahim Byagowi 2f97aa65e5 [cff] Make sure previous is ended on processing a seac 2020-02-25 18:07:44 +03:30
Ebrahim Byagowi acc2d4738e [cff] Make path extract easier to read and more defensive 2020-02-25 18:05:48 +03:30
Ebrahim Byagowi b59eb54f70 [glyf] Refactor, move get_points inside Glyph 2020-02-25 12:56:32 +03:30
ariza 173b745da8 fixed bug & added tests 2020-02-24 22:56:57 -08:00
ariza a5012e97c4 optimize hb_set_del_range()
fix issue #2193
2020-02-24 17:09:48 -08:00
Ebrahim Byagowi 1f5a54c768 [gvar] fix infinite loop introduced by 11f3fca
The attempt on removing end_points had made the code unreadable
and has intrdouced infinite, fixed by making the code clear what
it tries to achieve.
2020-02-24 14:30:07 +03:30
Ebrahim Byagowi f00eb4ebfa [gvar] Don't compare against Null address 2020-02-24 09:25:19 +03:30
Ebrahim Byagowi 19b78d56cd [gvar] Accept coord_count even if is higher than gvar's axisCount 2020-02-24 09:25:18 +03:30
Ebrahim Byagowi 197e2e929b [gvar] Return gracefully even if gvar wasn't used at all 2020-02-24 08:55:35 +03:30
Ebrahim Byagowi 346ab9884b [gvar] Return gracefully even if coords_count != gvar's axis count
It shouldn't be that common to have the situation, even so, no need to
reject entire a glyph even if gvar isn't used.
2020-02-24 08:48:54 +03:30
Ebrahim Byagowi 5f23a76e99 [cff] Don't remove coords const qualification
We should find some way to audit all the const removals, perhaps by
enabling -Wold-style-cast warning on the project and turning all the
implicit const removals to const_cast.
2020-02-24 08:23:25 +03:30
Michiharu Ariza ff5223ba60
remove invalid glyphs from closure (#2188)
fix issue #2186
2020-02-23 15:53:21 -08:00
Ebrahim Byagowi e17fd0d91c [tools] More on py3 compatibility 2020-02-24 00:10:11 +03:30
Ebrahim Byagowi 0cf050a7b1 [draw] Merge consequent move-to commands of CFF/CFF2 2020-02-23 23:23:50 +03:30
Ebrahim Byagowi 86bd5a0ba1 [draw] End CFF paths with a line-to
Issue a line-to command when start and end point of a path isn't same, matches freetype also.
2020-02-23 23:23:50 +03:30
Ebrahim Byagowi a46ba770ab [number] minor 2020-02-22 17:15:06 +03:30
ariza 4aa354beba chain second OffsetTo::serialize_copy() to first 2020-02-21 10:17:26 -08:00
ariza 6120f50c8f fix Head with link.bias 2020-02-21 10:17:26 -08:00
ariza e65bff0943 workaround whence_t as bit-field 2020-02-21 10:17:26 -08:00
ariza 1aed6d223c fix whence=Head; position as 28 bits 2020-02-21 10:17:25 -08:00
ariza 4ca8e0d989 re-implement Tail; rewrote name table with it 2020-02-21 10:17:25 -08:00
ariza c1313e4be2 minor: undid unintended change 2020-02-21 10:17:25 -08:00
ariza 9c65680b48 rename enums to avoid conflict on win 2020-02-21 10:17:25 -08:00
ariza 555f6f1daa merge add_link_abs() into add_link() 2020-02-21 10:17:25 -08:00
ariza 017cd945bf added add_link_abs() 2020-02-21 10:17:25 -08:00
Ebrahim Byagowi 07504569d5 [gsub] minor format 2020-02-21 13:05:44 +03:30
Garret Rieger 411225426f Fix glyph closure for alternate substitution.
It was not filtering on the glyphs to be retained.
2020-02-21 13:01:23 +03:30
Ebrahim Byagowi da37880e17 [draw] Add a private bit field instead null-checking quad-to callback
This doesn't imply the the design is good or stable just is better
to not fail due to null quad-to callback so as our quad-cubic curves
translation is currently table limited which can be revisited anytime.
2020-02-20 19:04:20 +03:30
Ebrahim Byagowi 8c652f72fc Minor, switch to https links where possible 2020-02-19 16:32:44 +03:30
Ebrahim Byagowi bbcbcafc25 [tool] Minor, move input files link 2020-02-19 16:21:47 +03:30
Ebrahim Byagowi 8d19907704 Remove python2 support from tests/utils scripts 2020-02-19 16:17:45 +03:30
Rico Tzschichholz 2c9fbf5561 Improve GIR build 2020-02-19 14:12:29 +03:30
Qunxin Liu 493e40ff78 [subset] add one empty byte to glyf table
if it's going to end up empty after subsetting
This will make OTS happy and match what fontTools is doing now.
2020-02-19 12:24:38 +03:30
Ebrahim Byagowi a7dec0cb51 [glyf] Tweak path_builder_t 2020-02-18 16:22:12 +03:30
Ebrahim Byagowi d52ea2a42c [glyf] minor 2020-02-18 15:46:02 +03:30
Ebrahim Byagowi 3b0c58f811 [glyf] minor, use private font coords to simplify 2020-02-18 15:43:25 +03:30
Ebrahim Byagowi dcd2729e71 [glyf] Move contour_bounds_t into scope it is actually used 2020-02-18 15:38:57 +03:30
Ebrahim Byagowi 8bb47fa17d [glyf] minor, spacing 2020-02-18 15:06:58 +03:30
Ebrahim Byagowi 21a5fe4f09 [glyf] Make returning phantoms to not require another vector 2020-02-18 14:38:55 +03:30
Ebrahim Byagowi 5c03fbe7e0 [glyf] do a phantom only iteration when possible 2020-02-18 14:08:37 +03:30
Ebrahim Byagowi 11f3fca01d [glyf/gvar] Remove need of passing end points vector around 2020-02-18 14:08:37 +03:30
Ebrahim Byagowi 0f2c2d989b [glyf] Push consumer machine one more level further 2020-02-18 14:08:37 +03:30
Ebrahim Byagowi 11f5f7c59c [glyf] Adopt a state machine like style for the path builder
Toward making glyf path reader alloc free at least on gvar absence.
2020-02-18 00:49:09 +03:30
Ebrahim Byagowi 60f8f384f9 [glyf] Switch to ttf-parser's glyf to path algorithm
It consumes each point at a time and doesn't need to know contour size before hand
2020-02-18 00:49:09 +03:30
ariza 3c792c2aa5 add test cases for hb_unwrap_type 2020-02-17 21:16:15 +00:00
ariza 168ceeac49 renamed to hb_unrwap_type(); now recursive 2020-02-17 21:16:15 +00:00
ariza 71552ecc26 add hb_get_type 2020-02-17 21:16:15 +00:00
ariza 6585846352 pop_pack(share=false) in end_serialize()
issue #2177
2020-02-16 17:16:29 -08:00
Michiharu Ariza 39fb57c0e4
add share option to pop_pack() (#2176)
as a solution for #2164
2020-02-16 08:38:41 -08:00
ariza 9c6499d9f4 rewrite read_points() to take lambda & consts args
replacing awkward x/y_setter_t structs
2020-02-16 00:56:31 -08:00
Behdad Esfahbod d663e28af1 [serialize] Catch signedness overflows in check_assign()
Should address https://github.com/harfbuzz/harfbuzz/pull/2163#pullrequestreview-355137936
2020-02-12 15:41:21 +00:00
Ebrahim Byagowi ff984ed3cd Use multiplication to avoid undefined behaviour per clang
Newer versions of MSVC with /we4146 don't like putting negative sign behind a
unsigned number as https://github.com/harfbuzz/harfbuzz/pull/2069
That however have made https://crbug.com/1050424 this complain:
  src/hb-ot-color-sbix-table.hh:304:28: runtime error: negation of -2147483648 cannot be represented in type 'int';
                                        cast to an unsigned type to negate this value to itself
which apparently can be fixed using this change.

Let's see if this won't make another ubsan complain!
2020-02-11 19:51:52 +03:30
Ebrahim Byagowi 21e1b1310a [colr] minor style fix 2020-02-11 17:10:34 +03:30
Ebrahim Byagowi cbb45c3ee7 [subset/colr] minor improve to resolve msvc complain
MSVC says,
  hb-ot-color-colr-table.hh(215): warning C4700: uninitialized local variable 'new_record' used [build\harfbuzz-subset.vcxproj]
    harfbuzz-subset.vcxproj -> build\Debug\harfbuzz-subset.lib
2020-02-11 16:46:18 +03:30
Ebrahim Byagowi 352ac63ef9 Fix an unlikely UAF on the deprecated _set_glyph_func API
Fixes https://github.com/harfbuzz/harfbuzz/issues/2168
2020-02-11 03:05:04 +03:30
Ebrahim Byagowi 6a390df8af [tools] Print unicode links on gen-* tools output
As Behdad's review
2020-02-10 17:20:09 +03:30
Evgeniy Reizner 4dc87365d7 Add links to files used by python scripts.
Closes #2150
2020-02-09 20:52:49 +03:30
Ebrahim Byagowi 40166eb0e5 [var] Fix the just introduced hb_font_set_var_coords_design storing bug
The memcpy call was using the current coords count which is zero initially so no copy at all.

Sad that no test has caught it, should see why, will however with the upcoming style API tests.
2020-02-08 13:22:01 +03:30
Ebrahim Byagowi 5c1a023f67 [tool] Optimize COLR glyph dump
Move palette colors fetching out of gid iteration so not
fetching all the colors of a palette each time.
2020-02-08 11:07:33 +03:30
Ebrahim Byagowi 0b76e8130e Don't use _normalize_variations to avoid twice axis fetch 2020-02-08 11:04:34 +03:30
Ebrahim Byagowi ab2d3ec542 [var] Implement hb_font_get_var_coords_design
Hold design coords and simulate when normalized coords are set directly.
2020-02-08 11:04:34 +03:30
Garret Rieger 5a10f3a055 Use vector instead of map during page compaction in hb-set. 2020-02-08 10:27:44 +03:30
Garret Rieger 2742c81624 Fix page_map corruption in hb_set_t during process().
If a process operation results in less pages then the current set has, it will likely corrupt the page_map since it overwrites page_map entries ahead of where it's processing. This fixes that problem by removing page_map entries that will be dropped. Then dropping orphaned pages and re-indexing retained pages.
2020-02-08 10:27:44 +03:30
Qunxin Liu eb7849a806 [subset] GPOS6 MarkToMark subsetting support 2020-02-06 10:46:05 -08:00
Qunxin Liu 82afc75835 [subset] GPOS4 MarkBase subsetting support 2020-02-06 10:46:05 -08:00
Ebrahim Byagowi 4dc3db7344 Minor, fix warnings raised when built with -std=c++2a
Follow up to c184180,

It was raising,

  src/hb-ot-layout-common.hh:1067:63: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture]
      | hb_filter ([=] (const OffsetTo<TSubTable> &_) { return (this+_).intersects (glyphset, lookup_type); })
                                                                ^
  src/hb-ot-layout-common.hh:1067:19: note: add an explicit capture of 'this' to capture '*this' by reference
      | hb_filter ([=] (const OffsetTo<TSubTable> &_) { return (this+_).intersects (glyphset, lookup_type); })
                    ^
                     , this

and

  src/hb-ot-layout-common.hh:2626:38: warning: implicit capture of 'this' with a capture default of '=' is deprecated [-Wdeprecated-this-capture]
                  { r.collect_lookups (this, lookup_indexes); })
                                       ^
  src/hb-ot-layout-common.hh:2625:18: note: add an explicit capture of 'this' to capture '*this' by reference
      | hb_apply ([=] (const FeatureTableSubstitutionRecord& r)
                   ^
                    , this

and

  src/hb-ot-hdmx-table.hh:141:44: error: implicit capture of 'this' with a capture default of '=' is deprecated [-Werror,-Wdeprecated-this-capture]
                          return device_record->widthsZ.as_array (get_num_glyphs ()) [_];
                                                                  ^
  src/hb-ot-hdmx-table.hh:137:17: note: add an explicit capture of 'this' to capture '*this' by reference
              | hb_map ([=] (hb_codepoint_t _)
                         ^
                          , this
2020-02-06 16:25:54 +03:30
Ebrahim Byagowi b4d3bf1d8a [draw] Add hb_draw_funcs_is_immutable and hb_draw_funcs_make_immutable 2020-02-06 11:52:32 +03:30
Ebrahim Byagowi 3a98c7fae1 [glyf] Skip empty contours
As https://savannah.nongnu.org/bugs/index.php?57701
2020-02-06 11:35:48 +03:30
ckitagawa 03f778cf3c [cmap] remove dead code 2020-02-05 18:00:39 +03:30
Ebrahim Byagowi 71a2018600 [cbdt] minor, tweak spaces 2020-02-05 17:40:51 +03:30
Ebrahim Byagowi eaa2402a79 [cbdt] Merge hb-ot-color-cbdt-table.cc into its header file
Not needed as far as can be said.
2020-02-05 17:09:12 +03:30
Ebrahim Byagowi a7f694d4b0 Merge branch 'subset_cblc' into master 2020-02-05 16:31:21 +03:30
Ebrahim Byagowi 43016715e1 [subset] minor on _subset 2020-02-05 15:02:20 +03:30
Ebrahim Byagowi dcb5dfc970 [subset] minor on tables iteration 2020-02-05 15:01:25 +03:30
Ebrahim Byagowi a8593339e2 [subset] minor on switch statements 2020-02-05 15:00:25 +03:30
Ebrahim Byagowi b1f63109c6 [subset] Optimize _is_table_present
One call for most of the fonts and no malloc
2020-02-05 00:30:40 +03:30
Ebrahim Byagowi 25707e37e3 [cff] minor 2020-02-05 00:27:28 +03:30
ckitagawa 0d61926ca7 [subset] Keep head when no glyf table 2020-02-04 23:31:33 +03:30
Ebrahim Byagowi 7f9b2228a6 [glyf] minor
Improve using https://developer.blender.org/diffusion/B/browse/master/source/blender/blenlib/intern/freetypefont.c$572
2020-02-04 23:05:49 +03:30
Ebrahim Byagowi 5b43603385 [subset] Rename _subset2 to _subset 2020-02-04 21:29:24 +03:30
ariza 2792fb8ba1 first rewrite of cff/cff2 _subset with _subset2 2020-02-04 21:20:43 +03:30
ckitagawa b114b26a56 Add guard to copy_glyph_at_idx 2020-02-04 09:49:24 -05:00
Ebrahim Byagowi b2a68ed587 [name] Minor, use subtraction instead ternary operator
Guess ternary was a bit more legible, apparently however we agreed to use subtraction,
https://github.com/harfbuzz/harfbuzz/pull/2139#discussion_r372582005
2020-02-01 23:16:45 +03:30
Qunxin Liu 490ef1cc23 [subset] Fix namerecord ordering
This will fix inconsistency with fontTools.
Also according to the spec, namerecords must be sorted
first by platform ID, then by platform-specific ID,
then by language ID, and then by name ID.
2020-02-01 23:07:47 +03:30
ckitagawa e128f80278 parent 777ba47b50
author ckitagawa <ckitagawa@chromium.org> 1579631743 -0500
committer ckitagawa <ckitagawa@chromium.org> 1580506176 -0500

[subset] Add CBLC support
2020-01-31 16:37:30 -05:00
Evgeniy Reizner b4377afd28 Minor hb_ot_layout documentation fixes. 2020-01-31 22:57:38 +03:30
Qunxin Liu 0216a96b0f [subset] Fix simple glyph trim_padding in glyf table
Detail: when numOfContours = 1 and flag = 0x31
xCoordinates and yCoordinates would be empty
2020-01-31 10:49:44 -08:00
Qunxin Liu b6a8f5e63c [subset] CMAP table subsetting fix
Not all codepoints smaller than 0xFFFF go to cmap4 table.
Only subset codepoints existing in each table.
This will also make harfbuzz consistent with fontTools' behavior
2020-01-31 10:49:44 -08:00
Ebrahim Byagowi 777ba47b50
Merge pull request #2132 from ckitagawa-work/subset_colr
[subset] Add COLR support
2020-01-30 22:38:43 +03:30
Ebrahim Byagowi 5b069c3612
[draw][docs] update to new terminology 2020-01-30 18:05:01 +03:30
Ebrahim Byagowi 920dca4550
[draw][docs] update to new terminlogy 2020-01-30 18:03:06 +03:30
Ebrahim Byagowi 1632726c1f
[draw] minor 2020-01-30 16:48:34 +03:30
ckitagawa 92f43a99c6 [subset] COLR, simplify logic and use add_array 2020-01-29 16:06:55 -05:00
ckitagawa fba5128a9e Fix build 2020-01-29 10:24:55 -05:00
ckitagawa 7d542a5274 Refactor to two iterators 2020-01-29 10:21:00 -05:00
ckitagawa 0aed54dca6 Use one-liner methods 2020-01-28 15:35:53 -05:00
ckitagawa 81c469eb62 Try to fix Wrange-loop-analysis 2020-01-28 15:35:53 -05:00
ckitagawa 0d1ba94ac7 Minor style fixes 2020-01-28 15:35:53 -05:00
ckitagawa ed857c4680 [subset] Add COLR support 2020-01-28 15:35:53 -05:00
Ebrahim Byagowi d106900bfd [draw][glyf] Implement quadratic to cubic call translation 2020-01-28 15:27:27 +03:30
Ebrahim Byagowi 74fdcdcac8 [draw] Rename conic_to to quadratic_to 2020-01-28 13:45:22 +03:30
Ebrahim Byagowi ac81e94016 Rename hb_outline_decompose to hb_font_draw_glyph and hb_outline_decompose_funcs_t to hb_draw_funcs_t 2020-01-28 13:24:49 +03:30
Ebrahim Byagowi cf5f946756 [outline] use hb_object_is_immutable instead comparing to Null 2020-01-27 23:43:54 +03:30
Ebrahim Byagowi 981125aa2a Rename hb_ot_glyph_* to hb_outline_* 2020-01-27 23:43:54 +03:30
Evgeniy Reizner cd7b46ca15 Use correct return type in _unsafe_to_break_find_min_cluster. 2020-01-26 23:59:36 +03:30
Ebrahim Byagowi cd266e4f3d
minor 2020-01-25 21:33:38 +03:30
Ebrahim Byagowi f9070cfef8 Run morx if run is horizontal or GSUB doesn't exist 2020-01-25 00:36:36 +03:30
Ebrahim Byagowi 8e0898080f [sbix] minor style fixes 2020-01-24 23:42:53 +03:30
Qunxin Liu 36a5c042d7 [subset] Add "--name-languages" and "--name-legacy" options
Make name table subsetting consistent with fontTools
2020-01-24 23:17:04 +03:30
Ebrahim Byagowi b7762c7068 Disable hb_ot_glyph_decompose in HB_TINY 2020-01-24 21:20:07 +03:30
ckitagawa-work 0e4b2676bd [subset] sbix fix missed offset is_null() check 2020-01-24 20:46:07 +03:30
Ebrahim Byagowi 2d14735588 [src/main] separate the places use private API, minor 2020-01-24 19:56:06 +03:30
Ebrahim Byagowi 23277beef9 Fold src/test-ot-glyph and src/test-ot-color into src/main 2020-01-24 19:56:06 +03:30
Ebrahim Byagowi b72337e57e [test] Adopt test-ot-color with ot-glyph and remove freetype/cairo dependecy 2020-01-24 19:56:06 +03:30
Ebrahim Byagowi e171beeb5f Revert "[subset] Add "--name-languages" and "--name-legacy" options"
Causes tests failures, please reapply when tests are fixed, thanks.

This reverts commit fd85818b5b.
2020-01-24 19:51:32 +03:30
Dominik Röttsches 298c46afbf Only prefer AAT morx for horizontal layout
Fixes #2124.
2020-01-24 19:48:36 +03:30
Qunxin Liu fd85818b5b [subset] Add "--name-languages" and "--name-legacy" options
Make name table subsetting consistent with fontTools
2020-01-23 17:24:05 -08:00
Qunxin Liu c370da45ff [subset] Cmap table: remove encodingRecord entry for empty cmap4 subtable 2020-01-23 17:23:55 -08:00
ckitagawa d3fff622b3 Move push call to caller 2020-01-23 23:46:22 +03:30
ckitagawa 7dc341fe74 [subset] Fix UBSAN issue in sbix 2020-01-23 23:46:22 +03:30