Commit Graph

5138 Commits

Author SHA1 Message Date
Behdad Esfahbod 7f8b6fe67d Minor 2018-08-26 00:07:12 -07:00
Behdad Esfahbod 59bca0d2cb [ot-font] Rename 2018-08-26 00:06:12 -07:00
Behdad Esfahbod 1c48a7ef06 [ot-font] Cache tables on face, not font 2018-08-25 23:57:16 -07:00
Behdad Esfahbod 71f8893eff [ot-font] Use init0 2018-08-25 23:27:45 -07:00
Behdad Esfahbod f36ae6f8a8 [ot-font] Make everything (cmap/metrics) lazy 2018-08-25 23:26:45 -07:00
Behdad Esfahbod 62fc54725a [ot-font] Fallback vertical advance to UPEM
Used to be ascent+descent.  Whatever. This is more convenient for
upcoming changes.
2018-08-25 23:15:52 -07:00
Behdad Esfahbod d950022c8a Add hb-ot-face.cc/hh 2018-08-25 23:06:37 -07:00
Behdad Esfahbod dae39c58fb [face] Introduce character-map API
New API:
+hb_face_collect_unicodes
+hb_face_collect_variation_selectors
+hb_face_collect_variation_unicodes
2018-08-25 22:44:39 -07:00
Behdad Esfahbod 66384db97c Minor 2018-08-25 22:39:17 -07:00
Behdad Esfahbod c77ae40852 Rename hb-*private.hh to hb-*.hh
Sorry for the noise, downstream custom builders.  Please adjust.
2018-08-25 22:36:36 -07:00
Behdad Esfahbod 82b12bcadd [unicode] Add HB_UNICODE_MAX
New API:
HB_UNICODE_MAX
2018-08-25 22:07:17 -07:00
Behdad Esfahbod b09a0336ca [cmap] More hb_auto_t<>(...) 2018-08-25 22:04:39 -07:00
Behdad Esfahbod 28634db07e [cmap] Fix skipping gid0 in Format4 collect_unicodes() 2018-08-25 21:23:43 -07:00
Behdad Esfahbod acce1fa3ea Use new hb_auto_t<> constructor with Coverage::Iter 2018-08-25 21:15:39 -07:00
Behdad Esfahbod ddea4d19cf Add 1-param passthrough constructor to hb_auto_t<>
And use.
2018-08-25 21:08:15 -07:00
Behdad Esfahbod c8cfb702e9 [cmap] Minor 2018-08-25 16:18:00 -07:00
Behdad Esfahbod 1dcf5fb038 [cmap Add hb_subset_collect_variation_unicodes()
To be moved to hb-face.h later.
2018-08-25 16:12:18 -07:00
Behdad Esfahbod 4806b3800d [cmap] Add hb_subset_collect_variation_selectors()
To be moved to hb-face later.
2018-08-25 15:58:40 -07:00
Behdad Esfahbod 3336de2479 [cmap] Remove unused code 2018-08-25 15:41:25 -07:00
Behdad Esfahbod 1becabe06c [cmap] Use bsearch to find subtables 2018-08-25 15:37:56 -07:00
Behdad Esfahbod 02fe03e09a [cmap] Factor out find_best_subtable 2018-08-25 15:33:05 -07:00
Behdad Esfahbod b41c43b4e1 Minor 2018-08-25 15:25:03 -07:00
Behdad Esfahbod 7d382fa276 [cmap] Implement collect_unicodes() for Format0/6/10 2018-08-25 09:42:52 -07:00
Behdad Esfahbod bd0e542525 [cmap] Simplify collect_unicodes()
Don't use accelerator (almost).  Hooks up Format13 as well.
2018-08-25 09:33:30 -07:00
Behdad Esfahbod d60c465627 Rename get_all_codepoints() to collect_unicodes() 2018-08-25 08:48:42 -07:00
Behdad Esfahbod 531051b8b9 [ot-font] Return char-not-found if mapped to gid 0
OpenType cmap table can use gid=0 to mean "not covered" to produce
more optimized cmap subtables.  Return false from get_nominal_glyph()
for those.  hb-ft already does this.
2018-08-25 08:44:18 -07:00
Behdad Esfahbod aadb2a9188 Add face-builder
New API:
+hb_face_builder_create
+hb_face_builder_add_table
2018-08-25 08:18:53 -07:00
Behdad Esfahbod 6cac9dc9cc [blob] Add as_bytes() 2018-08-24 10:29:45 -07:00
Behdad Esfahbod 29a9a08838 [sanitize] Document how sanitize machinery works 2018-08-24 10:24:45 -07:00
Behdad Esfahbod 142ac5a6be [serialize] Add copy_bytes() and copy_blob() 2018-08-24 10:07:49 -07:00
Behdad Esfahbod 1c6b369324 [ot] Rename hb_ot_layout_t to hb_ot_face_data_t 2018-08-23 11:30:21 -07:00
Michiharu Ariza 27c32d8afb fixed "Fixed" number decoding 2018-08-22 11:36:39 -07:00
Michiharu Ariza 811a651bbd fixed bugs with empty CFFIndex, fullset FDMap 2018-08-20 14:04:46 -07:00
Michiharu Ariza 5cde2f55cd drop hints from CFF & CFF2 Private 2018-08-17 16:50:13 -07:00
Michiharu Ariza cef75ea41a Added CFF2 Subr nullifier
along with CFF2 charstring interpreter
factored out common code between CFF1 & CFF2 to CSInterpreter
moved fetch_op from Interpreter to InterpEnv
misc code clean up & bug fixes
2018-08-17 13:13:18 -07:00
Michiharu Ariza f57d6bcbca renamed CFF::Index to CFF::CFFIndex
to avoid confusion with OT::Index
2018-08-16 08:03:46 -07:00
Michiharu Ariza c4ae426a3d treat h/vstem the same as h/vstemhm 2018-08-16 00:59:46 -07:00
Michiharu Ariza e67bb3fbcf renamed OT::cff to OT::cff1 for consistency
along with HB_OT_TAG_cff1
2018-08-16 00:25:57 -07:00
Michiharu Ariza fdbfa1848b renamed CFF version 1 structs and sources to CFF1 from CFF
"CFF" is used for shared structs & sources between CFF1 & CFF2
except OT:cff is for CFF version 1 table
2018-08-16 00:13:09 -07:00
Michiharu Ariza 867f68bd8a fix build attempt ^7 2018-08-15 15:53:50 -07:00
Michiharu Ariza 685db67bb0 fix build attempt ^6 2018-08-15 15:45:17 -07:00
Michiharu Ariza 2810caafeb fix build attempt ^5 2018-08-15 15:30:24 -07:00
Michiharu Ariza 25b8310b2a Merge branch 'master' into cff-subset 2018-08-15 15:00:55 -07:00
Michiharu Ariza 7aa23f3597 fix build attempt ^4 2018-08-15 15:00:32 -07:00
Michiharu Ariza 270452a446 fix build attempt ^3 2018-08-15 13:15:08 -07:00
Michiharu Ariza c234839f25 fix build attempt ^2 2018-08-15 13:04:43 -07:00
Michiharu Ariza eab07e713a fix build 2018-08-15 12:15:55 -07:00
Michiharu Ariza 633ce88de9 CFF Subrs subsetting
Unreferenced subroutines are nullified (not removed) in a subset font

Separate Interpreter struct from hb-ot-cff-common-private.hh in a set of four header files, augmented for CharString (CS):
hb-cff-interp-common-private.hh
hb-cff-interp-dict-common-private.hh
hb-cff-interp-cs-common-private.hh
hb-cff-interp-cs.hh

Interpreter runtime is separated off as a new struct InterpEnv sub-classed differently for Dict and CharString (CS)
2018-08-15 12:00:19 -07:00
Emil A Eklund 22defe0965 Add guard around free_static_C_locale
Add HB_USE_ATEXIT guard around free_static_C_locale missed by previous
commit.
2018-08-14 18:10:17 -07:00
Emil A Eklund 7112c6413c Guard free_static function definitions with macro
Add HB_USE_ATEXIT macros around free_static function definitions to
avoid unused function compiler warnings/errors.
2018-08-14 14:04:10 -07:00
Behdad Esfahbod 63be5dcdde 1.8.8 2018-08-14 10:59:34 -07:00
Behdad Esfahbod c9a22fa124 [icu] Pass normalizer instance down as user_data 2018-08-13 17:02:21 -07:00
Behdad Esfahbod f0ef096b8c Don't add reference in get_unicode_funcs() functions
Users don't expect a new reference returned from a get() function.
Indeed, all users of that API I foud where NOT destroying the reference.
Just change the implementations to NOT return a reference.

This applies to the following APIs:
hb_unicode_funcs_get_default()
hb_glib_get_unicode_funcs()
hb_icu_get_unicode_funcs()

Fixes https://github.com/harfbuzz/harfbuzz/issues/1134
2018-08-13 10:30:41 -07:00
Behdad Esfahbod 9bbd1cdf06 [uniscribe] Use lazy loader
Fixes https://github.com/harfbuzz/harfbuzz/issues/1129
2018-08-12 18:20:53 -07:00
Behdad Esfahbod 2663689936 Another clang bot fix 2018-08-12 18:10:59 -07:00
Behdad Esfahbod 989e71a982 Silence clang 2018-08-12 17:47:59 -07:00
Behdad Esfahbod 6750ec692c [lazy] Use for C_locale 2018-08-12 17:42:16 -07:00
Behdad Esfahbod 747d2564e6 [lazy] Port more 2018-08-12 17:32:10 -07:00
Behdad Esfahbod 7bd508a0c4 [lazy] Rename free() 2018-08-12 17:19:55 -07:00
Behdad Esfahbod a3b97db910 [lazy] Port more to it 2018-08-12 17:14:32 -07:00
Behdad Esfahbod 6901090945 [lazy] Make hb_lazy_loader_t<> more usable 2018-08-12 16:59:37 -07:00
Behdad Esfahbod bb905e9afc [lazy] Minor 2018-08-12 16:44:44 -07:00
Behdad Esfahbod 3945cd78a9 Minor 2018-08-12 16:33:48 -07:00
Behdad Esfahbod c21a1b95df [icu] Use get_relaxed for normalizer access
We've had the proper barriers already.  No need for more with every access.
2018-08-12 16:30:39 -07:00
Behdad Esfahbod 125fefa2a6 [icu] Fix for breakage after recent change 2018-08-12 16:29:41 -07:00
Behdad Esfahbod 53442be1ed [lazy] Use for ft_library 2018-08-12 16:20:11 -07:00
Behdad Esfahbod 7a8d480378 [lazy] Add .free() 2018-08-12 16:00:13 -07:00
Behdad Esfahbod c7ca30a533 [ot/ft] Port font_funcs statis to lazy-loader 2018-08-12 13:46:53 -07:00
Behdad Esfahbod cb3fc3685c [ucdn/glib/icu] Port unicode_funcs statics to lazy-loader 2018-08-12 13:39:01 -07:00
Behdad Esfahbod 1b6b481262 [lazy] Allow calling fini() multiple times 2018-08-12 13:16:40 -07:00
Behdad Esfahbod 918ad9f5d9 [lazy] More 2018-08-12 13:12:29 -07:00
Behdad Esfahbod 5abdf5eeba [lazy] More shuffle 2018-08-12 12:48:44 -07:00
Behdad Esfahbod 5d9863be6e Minor 2018-08-12 12:27:47 -07:00
Behdad Esfahbod f9a3eab810 Add explicit_operator
Fixes https://github.com/harfbuzz/harfbuzz/issues/1127
2018-08-12 12:21:56 -07:00
Behdad Esfahbod 470acb6c32 Rename 2018-08-12 12:13:36 -07:00
Martin Hosken 39607dc98e Support _ in feature ids 2018-08-11 16:55:16 -07:00
Michiharu Ariza a3a8c85b02 Merge branch 'master' into cff-subset 2018-08-10 13:41:42 -07:00
Michiharu Ariza 145f371d71 fixed TRACE build failure 2018-08-10 13:07:53 -07:00
Michiharu Ariza a97ed342d1 fixed inclusion of excluded Private & local Subrs
It was bloating a multi-FD subset font unnecessarily
defined a wrapper struct FDMap for fdmap
2018-08-10 12:55:22 -07:00
Michiharu Ariza 64c5412264 Added CFF support
Added sources hb-ot-cff-table.hh, hb-subset-cff.cc & hh
Templatized Index because CFF uses 16-bit count while CFF2 uses 32-bit
Misc code cleanup & bug fixes
2018-08-10 11:07:07 -07:00
Behdad Esfahbod 652cd45c65 [coretext] Another try 2018-08-09 01:02:02 -07:00
Behdad Esfahbod 3f3585ca14 Fix coretext build (hopefully) 2018-08-09 00:58:17 -07:00
Behdad Esfahbod aa3b6017ed Revert "[iter] Make operator bool explicit"
This reverts commit 66920a6bac.

Some of our bots (Oracle Studio and Apple gcc 4.2) do not allow
explicit except for constructors.

https://github.com/harfbuzz/harfbuzz/issues/1127
2018-08-09 00:56:28 -07:00
Behdad Esfahbod e1a2354220 [atomic] More 2018-08-09 00:53:25 -07:00
Behdad Esfahbod f1f4b45ac3 Fix lazy_loader fini()
Was creating object even if wasn't there.
2018-08-09 00:28:40 -07:00
Behdad Esfahbod 1f7380944d [atomic] Add hb_atomic_ptr_t<> and port all uses
Found and fixed a couple bugs.

Found a couple multithreading issues.  Marked them with "XXX-MT-bug".
2018-08-09 00:27:01 -07:00
Behdad Esfahbod 6e42f4c53f [atomic] Remove hb_atomic_int_impl_t now that it's always int 2018-08-08 22:51:35 -07:00
Behdad Esfahbod 1227a9e5a5 [atomic] Unify typedef
Removes volatile from fallback implementation.  That was handwavy
anyway.
2018-08-08 22:45:49 -07:00
Behdad Esfahbod 5cd1888c9d [atomic] Change Mac atomic int type to int
If ever int is not 32bit, we'll fix this...
2018-08-08 22:43:53 -07:00
Behdad Esfahbod e1de86eac1 [atomic] Change Windows atomic int type to int 2018-08-08 22:42:33 -07:00
Behdad Esfahbod aee2d10b2b [atomic] Change Solaris atomic int to signed 2018-08-08 22:40:10 -07:00
Behdad Esfahbod b6fdcf4f8b 1.8.7 2018-08-08 22:01:38 -07:00
Behdad Esfahbod 51ffc3e65a Fix previous commit to use atomic operations 2018-08-08 22:01:38 -07:00
Behdad Esfahbod 883957688c Fix assertion failure
https://bugzilla.mozilla.org/show_bug.cgi?id=1476334
2018-08-08 21:42:18 -07:00
Behdad Esfahbod e49a38b20e 1.8.6 2018-08-07 09:55:42 -07:00
Behdad Esfahbod b0ff79acd8 Add +hb_font_get_glyph_advances_for_direction
New API:
+hb_font_get_glyph_advances_for_direction
2018-08-07 09:52:06 -07:00
Behdad Esfahbod 28e2f467e1 Actually add hb_font_get_glyph_[hv]_advances
New API:
+hb_font_get_glyph_h_advances
+hb_font_get_glyph_v_advances
2018-08-07 09:47:00 -07:00
Behdad Esfahbod 996775191a Minor 2018-08-07 09:44:36 -07:00
Behdad Esfahbod 3d7c555a19 Remove get_advances_nil and alias it to get_advances_default 2018-08-07 09:37:52 -07:00
Behdad Esfahbod 66920a6bac [iter] Make operator bool explicit
We would need to write:

  for (Iter<T> it (...); bool (t); t++)

instead of:

  for (Iter<T> it (...); t; t++)

But I think it's an improvement in code readability in the long term.

Fixes https://github.com/harfbuzz/harfbuzz/issues/1127
2018-08-06 15:32:13 -07:00
Michiharu Ariza 161ece4c30 Merge branch 'master' into cff-subset 2018-08-06 11:23:50 -07:00
Michiharu Ariza 9fae33b9f3 Silence Codacy 2018-08-06 10:44:12 -07:00
Michiharu Ariza 5561b81849 subset FDSelect and FDArray
Added a set of sources hb-subset-cff-common-private.cc & .hh for FDSelect subseting code.
Added FDSelect format 4 (CFF2 only) support. Shared its implementation with format 3 as a template.
2018-08-06 10:04:53 -07:00
Behdad Esfahbod 79e21984b1 Add batch advance width callback function
New API:
+hb_font_funcs_set_glyph_h_advances_func
+hb_font_funcs_set_glyph_v_advances_func
+hb_font_get_glyph_h_advances
+hb_font_get_glyph_h_advances_func_t
+hb_font_get_glyph_v_advances
+hb_font_get_glyph_v_advances_func_t
2018-08-06 09:45:17 -07:00
Koji Ishii 9533364cc3 batchwidth 2018-08-06 09:44:46 -07:00
Behdad Esfahbod b912fbea17 Remove most uses of direct comparison to Null objects 2018-08-06 06:38:59 -07:00
Behdad Esfahbod 3506672ce9 Port _nil objects to Null() machinery
Finally, unified!
2018-08-06 06:17:48 -07:00
Behdad Esfahbod 1abd427acf [BASE] Rename horzi/vert to h/v 2018-08-06 05:53:35 -07:00
Behdad Esfahbod da48aca1be [BASE] Misc fixes
The code was badly broken.  In better shape now, but still, needs
a full review before ever working.
2018-08-06 05:52:12 -07:00
Behdad Esfahbod f9cfa5cb0e Change null-pool specialization to min_size again 2018-08-06 05:29:15 -07:00
Behdad Esfahbod 25147ff808 Move Null system to hb-null.hh 2018-08-06 05:01:52 -07:00
Behdad Esfahbod f800368df3 Remove unused macros 2018-08-06 04:58:34 -07:00
Behdad Esfahbod 19e0091299 Minor 2018-08-06 04:54:31 -07:00
Behdad Esfahbod 37be774af9 Minor 2018-08-06 04:52:12 -07:00
Behdad Esfahbod e1acff806b Move hb_vector_t to hb-vector-private.hh 2018-08-06 04:42:46 -07:00
Behdad Esfahbod be336dadc0 Move some more code around 2018-08-06 04:32:51 -07:00
Behdad Esfahbod 92806ee055 Move null data definitions to hb-static.cc
Also remove "    " null data for Tag.  Just use zeroes.
2018-08-05 21:41:52 -07:00
Behdad Esfahbod 1b4d5a2402 Minor 2018-08-03 19:55:09 -07:00
Behdad Esfahbod 7df7963b46 Make lazy loader deal with OOM 2018-08-03 19:54:33 -07:00
Behdad Esfahbod 30ff8ac865 Rename 2018-08-03 17:33:13 -07:00
Behdad Esfahbod 85ba4a190f [ot] Comment 2018-08-03 17:06:42 -07:00
Behdad Esfahbod 07afc1a213 [ot] Add misc tables to tables_t
Most unused.
2018-08-03 17:03:32 -07:00
Behdad Esfahbod 74b4df2cde [ot] Move GDEF into tables_t 2018-08-03 16:58:05 -07:00
Behdad Esfahbod 0271c7ab3b [ot] Move GSUB/GPOS into tables_t 2018-08-03 16:45:57 -07:00
Behdad Esfahbod f73d2775cf [ot] More shuffling
Misc. table loading now properly automated.
2018-08-03 16:34:25 -07:00
Behdad Esfahbod 52fbd23d86 [ot] Minor 2018-08-03 16:22:16 -07:00
Michiharu Ariza cc3f4e00aa silence gcc 2018-08-03 15:00:37 -07:00
Michiharu Ariza 00970dd242 Removed parsed hint fields from CFF2PrivateDictValues
Instead moved & stored uniformly in values vector (renamed from opstrs)
This should be fine as we aren't likely going to use them as hints after all
Templatized DictValues whether to parse them out
For subsetter, they aren't parsed
2018-08-03 14:35:09 -07:00
Behdad Esfahbod 6a0a298aab [ot] Move code around 2018-08-02 23:13:19 -07:00
Behdad Esfahbod 5e718a751e [ot] Use switch for checking for blacklisted GDEF tables
Faster / more compact code.
2018-08-02 23:04:42 -07:00
Behdad Esfahbod b5cdf5280d [ot] In GDEF blacklisting logic, remove the glyph index check for Times
Just blacklist based on table sizes like we do for other fonts.
2018-08-02 22:56:42 -07:00
Behdad Esfahbod c988b11999 Move code around 2018-08-02 22:55:52 -07:00
Michiharu Ariza 76f7397c10 templatized CFF2 accelerator for lean Private dict interpretting for subset
also fixed local subrs serialization
2018-08-02 16:28:10 -07:00
Michiharu Ariza 43040564e6 removed TRACE_SERIALIZE from non-member function _write_cff2 2018-08-02 12:23:10 -07:00
Michiharu Ariza e2fd49e477 Merge branch 'master' into cff-subset 2018-08-02 11:39:22 -07:00
Michiharu Ariza 693ae80474 more silencing fixes 2018-08-02 11:22:42 -07:00
Michiharu Ariza f6da449831 silence archlinux 2018-08-02 10:52:08 -07:00
Michiharu Ariza 58279c3db4 silence Codacy 2018-08-02 10:18:01 -07:00
Behdad Esfahbod 574b37e933 Minor 2018-08-02 02:22:38 -07:00
Behdad Esfahbod d4d1bf8177 Fix for recent rename 2018-08-02 02:04:02 -07:00
Behdad Esfahbod 91126aa11a [uniscribe] Update for recent changes 2018-08-02 02:03:13 -07:00
Behdad Esfahbod 66952ec47b Remove unused table reference 2018-08-02 01:45:12 -07:00
Behdad Esfahbod 443de26fa5 Minor 2018-08-02 01:43:02 -07:00
Behdad Esfahbod ee35af738b Make lazy-loader safe for nil objectification 2018-08-02 01:37:57 -07:00
Behdad Esfahbod 6404c49d07 Minor 2018-08-02 01:36:08 -07:00
Behdad Esfahbod ff7826e90b Reduce storage by sharing face amongst lazy_loaders 2018-08-02 01:29:05 -07:00
Behdad Esfahbod bdd3c11a19 Internal templatization of lazy-loaders 2018-08-02 01:09:14 -07:00
Behdad Esfahbod ed7b2e58fc Remove OT namespace from hb-machinery-private.hh 2018-08-02 00:08:08 -07:00
Behdad Esfahbod cb1491f92e Minor 2018-08-01 22:50:45 -07:00
Behdad Esfahbod 16ccfafbbd [face] Sprinkle const in the API 2018-08-01 22:50:06 -07:00