Behdad Esfahbod
f9e0552deb
[fuzzing] Make "make lib" faster and more usable
2018-11-10 21:06:56 -05:00
Behdad Esfahbod
4674655841
Minor
2018-11-10 20:11:10 -05:00
Behdad Esfahbod
a953b64750
Revert parts of previous commit that made clang unhappy
2018-11-10 20:10:03 -05:00
Behdad Esfahbod
1d66cdcf77
Better fix for MSVC 2008
...
Follow up on b4c6113032
Fixes https://github.com/harfbuzz/harfbuzz/issues/1374
2018-11-10 19:57:51 -05:00
Behdad Esfahbod
b4c6113032
Try fixing MSVC 2008 build
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1374
2018-11-10 16:35:39 -05:00
Behdad Esfahbod
f2e942f302
Fix hb_bytes_t's unused template array constructor
2018-11-10 16:11:14 -05:00
Behdad Esfahbod
6213a75b68
Add trivial casts to hb_bytes_t
2018-11-10 16:09:21 -05:00
Behdad Esfahbod
8bb97d2ce1
Revert back hb_bytes_t.cmp() to the scheme it was
...
But fix UBSan complaint.
There's nothing in hb_bytes_t that guarantees lexical ordering, and
ordering by length first is much faster.
2018-11-10 16:00:51 -05:00
Behdad Esfahbod
534e1d7694
Fix hb_bytes_t.cmp() for realz this time
2018-11-10 15:45:31 -05:00
Behdad Esfahbod
929f07dbfc
Fix hb_bytes_t.cmp()
...
Ouch!
2018-11-10 15:39:07 -05:00
Ebrahim Byagowi
1d82b4761d
[colr/feat/trak] minor
2018-11-10 19:31:12 +03:30
Behdad Esfahbod
3a9fa8c026
[qsort] Fix O(N^2) behavior if all array elements are the same
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11327
Reported as https://github.com/noporpoise/sort_r/issues/7
2018-11-10 01:58:26 -05:00
Behdad Esfahbod
b308aaccf0
[post] Minor
2018-11-10 01:58:26 -05:00
Behdad Esfahbod
4111c3b8cd
[post] Move sanitize close to data fields
2018-11-10 01:58:26 -05:00
Behdad Esfahbod
e26e6dbb33
[post] Remove unnecessary hb_nonnull_ptr_t<>
2018-11-10 01:58:26 -05:00
Ebrahim Byagowi
6b8178c649
[glyf] minor
2018-11-10 02:42:08 +03:30
Behdad Esfahbod
5f97fe9956
Fix a few MSVC 2008 warnings
...
https://github.com/harfbuzz/harfbuzz/issues/1374
2018-11-09 10:01:50 -05:00
Behdad Esfahbod
f51bb6ee7b
Merge pull request #1358 from ebraminio/lcar
...
Hook AAT's lcar to _get_ligature_carets
2018-11-08 14:42:40 -05:00
Ebrahim Byagowi
b986fead0a
Hook AAT's lcar to _get_ligature_carets
2018-11-08 23:06:26 +03:30
Ebrahim Byagowi
2d987110c0
[aat] Minor
2018-11-08 21:46:26 +03:30
Ebrahim Byagowi
b989507fa6
[aat] Minor ( #1369 )
2018-11-08 20:48:54 +03:30
Ebrahim Byagowi
f90423847b
[just] Initial table implementation ( #1364 )
...
A starting point, its sanitization is not tested however
2018-11-08 19:17:02 +03:30
Ebrahim Byagowi
b8b00fb3c6
[aat] Support Lookup<OffsetTo<>>, needed by just and lcar ( #1368 )
2018-11-08 18:53:14 +03:30
Behdad Esfahbod
15326826bf
[aat] Ignore cross-stream offset of deleted-glyphs
...
I think it makes sense to accumulate it, but Ned tells me that's
what CoreText does.
2018-11-07 21:58:04 -05:00
Behdad Esfahbod
517a1bac97
Merge pull request #1362 from harfbuzz/cross-kern
...
Vastly improve kern/kerx tables, including cross-stream "kerning"
2018-11-07 18:40:48 -05:00
Behdad Esfahbod
b18a56a290
[kerx] Comment
2018-11-07 18:13:22 -05:00
Behdad Esfahbod
006386be3a
[kern] Implement negative state numbers
...
Let the fuzzing bots rip this code apart...
2018-11-07 18:04:53 -05:00
Behdad Esfahbod
29c5302376
[morx] Minor
2018-11-07 17:29:37 -05:00
Behdad Esfahbod
385f78b312
[aat] Remove deleted-glyhs after applying kerx/kern
...
Finally: Fixes https://github.com/harfbuzz/harfbuzz/issues/1356
Test case:
$ ./hb-shape GeezaPro.ttc -u U+0628,U+064A,U+064E,U+0651,U+0629
[u0629.final.tehMarbuta=4+713|u064e_u0651.shaddaFatha=1@0,-200+0|u064a.medial.yeh=1+656|u0628.initial.beh=0+656]
The mark positioning (kern table CrossStream kerning) only works if deleted
glyph (as result of ligation) is still in stream and pushed through the
state machine.
2018-11-07 17:20:47 -05:00
Behdad Esfahbod
1909072235
[aat] Add debug info to state machine
2018-11-07 16:42:16 -05:00
Behdad Esfahbod
ca23567f41
Disable fallback mark positioning if kern table has cross-stream kerning
...
Happens even if the cross-stream kerning is for cursive attachment only. Oh well..
2018-11-07 16:19:51 -05:00
Behdad Esfahbod
5cf6f94dfd
Don't apply both kerx and kern
...
Ouch!
2018-11-07 16:07:22 -05:00
Behdad Esfahbod
41cff7afc9
Minor
2018-11-07 16:05:36 -05:00
Behdad Esfahbod
9af983af24
[kern] Switch to dispatch
2018-11-07 16:03:09 -05:00
Behdad Esfahbod
bc06e2805a
[kerx/kern] Add has_cross_stream()
2018-11-07 16:02:40 -05:00
Behdad Esfahbod
ea579f9ccc
[kerx] Fix peculiar indexing that was needed previously
...
Not needed now that we use GPOS attachment for cursive kerx.
2018-11-07 15:50:23 -05:00
Behdad Esfahbod
6ee6cd93d8
[GPOS] Only mark unsafe-to-break if kerning happened
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1365
2018-11-07 15:40:55 -05:00
Behdad Esfahbod
501a364d9b
[GPOS] Add TODO item
2018-11-07 15:02:16 -05:00
Behdad Esfahbod
7a9629f2f1
[kerx] Implement CrossStream kerning for non-state-machine subtables
...
Untested.
2018-11-07 14:52:57 -05:00
Behdad Esfahbod
0eb4157011
[kerx] Disable backwards-kerning for non-state-machine tables
...
That's what the spec says for Backwards flag, only applicable to
formats 1 and 4.
2018-11-07 14:42:15 -05:00
Behdad Esfahbod
b2f687c256
[kerx] Use GPOS attachment facilities for CrossStream kerning
2018-11-07 14:38:29 -05:00
Behdad Esfahbod
e10a856eb2
[kerx] Format
2018-11-07 14:11:48 -05:00
Behdad Esfahbod
649cc3ef27
[kerx] Don't disable crossKerning if kern feature is off
2018-11-07 14:07:13 -05:00
Behdad Esfahbod
0c3b061ac2
[kern] Apply erlier, where GPOS/kerx are applied
2018-11-07 13:58:41 -05:00
Behdad Esfahbod
f4bad0086e
[kerx] Implement tupleKerning for Format1
...
Untested.
2018-11-07 13:51:17 -05:00
Behdad Esfahbod
39b4ef6f18
[kerx] Better sanitize tupleKerning
2018-11-07 13:48:45 -05:00
Behdad Esfahbod
14772da06f
[kern/kerx] Share KernTable, renamed to KerxTable
2018-11-07 13:40:22 -05:00
Behdad Esfahbod
c038f5be6b
[fallback] Minor
2018-11-07 13:35:06 -05:00
Behdad Esfahbod
db6e658e8c
[kern/kerx] More towards sharing KernTable
2018-11-07 13:33:23 -05:00
Behdad Esfahbod
89ec095979
[kern] Disable Format1 and Format3 for OT-style tables
2018-11-07 13:10:05 -05:00
Behdad Esfahbod
ab57bcae0f
[kern] Minor
2018-11-07 13:04:21 -05:00
Behdad Esfahbod
30af5b4a4c
[kern] Move code
2018-11-07 12:57:10 -05:00
Behdad Esfahbod
1ff300464a
[kern] Massage more
2018-11-07 12:51:49 -05:00
Behdad Esfahbod
8e9f6cd0fd
[kerx] More minor
2018-11-07 12:49:20 -05:00
Behdad Esfahbod
f8c3df7d4a
[kern/kerx] Minor
2018-11-07 12:48:06 -05:00
Behdad Esfahbod
f5e0a63a22
[kern/kerx] Towards sharing KernTable
2018-11-07 12:32:51 -05:00
Behdad Esfahbod
330508497d
[kern/kerx] Minor
2018-11-07 12:27:44 -05:00
Behdad Esfahbod
1a5ef84900
[kern/kerx] Share Format2
...
This, enables Format2 for kern table, which was disabled before.
2018-11-07 12:19:52 -05:00
Behdad Esfahbod
8faec4e334
[kerx] Towards merging Format2
2018-11-07 12:16:38 -05:00
Behdad Esfahbod
d5c0ca210f
[aat] Minor
2018-11-07 12:08:44 -05:00
Behdad Esfahbod
e72e041c3c
[kerx] Rename
2018-11-07 11:56:36 -05:00
Behdad Esfahbod
241ba7da51
[morx/kerx] Rename types
2018-11-07 11:51:40 -05:00
Behdad Esfahbod
c808e444da
[kern/kerx] Share Format1 subtable
2018-11-07 11:47:12 -05:00
Behdad Esfahbod
a244190afa
[kerx] Minor
2018-11-07 11:47:12 -05:00
Behdad Esfahbod
2a72091196
[kerx] Minor
2018-11-07 11:26:57 -05:00
Behdad Esfahbod
f5f4ca7871
[kern/kerx] Enable crossStream kerning in vertical
...
CoreText doesn't, but no reason we shouldn't do.
2018-11-07 11:21:09 -05:00
Behdad Esfahbod
d5c88af4a2
[kerx] More towards sharing Format1
2018-11-07 11:20:14 -05:00
Behdad Esfahbod
b693fd0dc6
[morx] Simplify
2018-11-07 11:10:24 -05:00
Behdad Esfahbod
ce3451dc2a
[kerx] Towards sharing Format1
2018-11-07 11:02:04 -05:00
Behdad Esfahbod
e890753ebb
[morx] Minor
2018-11-07 10:59:53 -05:00
Behdad Esfahbod
5b17853547
[kern/kerx] Share Format0
2018-11-07 10:45:25 -05:00
Behdad Esfahbod
c97dde5d55
[kern/kerx] Towards merge more
2018-11-07 10:39:39 -05:00
Behdad Esfahbod
540ccc38b0
[kern/kerx] More towards sharing
2018-11-07 10:33:46 -05:00
Behdad Esfahbod
d0f8f4c200
[kern] Move kern machine to hb-kern.hh
2018-11-07 10:25:25 -05:00
Behdad Esfahbod
a6acff252c
[kerx] Towards sharing subtables with kern
2018-11-07 10:19:57 -05:00
Behdad Esfahbod
befac337ca
[kern] Remove Override business
...
Not used in any fonts. Not well-specified when mixing kerning with
Cross-Stream positioning.
2018-11-07 09:53:50 -05:00
Behdad Esfahbod
9d5027696e
[post] Return true on truncation
...
Client can check that buffer was completely filled out and reallocate.
2018-11-07 09:16:53 -05:00
Behdad Esfahbod
7d91f07edf
[post] Protect against huge empty tables
2018-11-07 09:14:42 -05:00
Behdad Esfahbod
5ed816ab59
[post] Minor
2018-11-07 09:13:51 -05:00
Behdad Esfahbod
64f0becd89
[post] Fix bound checking
2018-11-07 09:10:55 -05:00
HinTak
7ec694ddf2
Use non-GRID-fitted values for metrics ( #1363 )
...
* Use non-GRID-fitted values for metrics
See freetype/src/base/ftobjs.c:ft_recompute_scaled_metrics() and
the usage of GRID_FIT_METRICS inside.
Fixes https://github.com/behdad/harfbuzz/issues/1262
* Update hb-ft.cc
2018-11-07 08:19:36 -05:00
Behdad Esfahbod
59e04e4231
[kern/kerx] Fix cursive joining
...
Tested with Waseem TTC:
$ hb-shape Waseem.ttc جحخج
[F1Jeem_R2=3@0,180+479|M1Khah_L2_R2=2@0,682+403|M1Hah_L2_R2=1@0,1184+403|I1Jeem_L2=0@0,1184+744]
2018-11-07 00:27:20 -05:00
Behdad Esfahbod
8d0f797139
[kern/kerx] Fix "reset" magic value
2018-11-07 00:05:10 -05:00
Behdad Esfahbod
0123976a0c
[kerx] Adjust CrossStream kern to match 'kern' table
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
80a33b9ac3
[kern] More tweaks
...
Solves a mystery or two. I'm fairly confident this is what CoreText does now.
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
564e8ac046
[kern] Adjust some more
...
Getting closer. So many open questions still...
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
4d003b8503
[kern] Add TODO
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
9810f0b80e
[kern] Minor
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
9c04b60583
[kern] In Format1, adjust how kerning is done
...
In a series of kerns in one action, kern all but last glyph forward,
and the last one backward. Seems to better match what CoreText is doing.
Test cases, with GeezaPro Arabic:
$ ./hb-shape GeezaPro_10_10.ttc -u U+0631,U+0628
[u0628.beh=1+1415|u0631.reh=0@-202,0+700]
$ ./hb-shape GeezaPro_10_10.ttc -u U+0628,U+064F
[u064f.damma=0@0,-250+-250|u0628.beh=0@250,0+1665]
In a later change, I'll make kern machine avoid producing negative kerns.
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
e8c4772463
[kern] XXX Negate CrossKerning sign
...
Not sure why, but seems to better match GeezaPro Arabic w CoreText.
Quite possibly I'm doing something very wrong...
2018-11-06 21:46:14 -05:00
Behdad Esfahbod
01bf43ac01
[kern] Implement CrossStream kerning
2018-11-06 17:59:31 -05:00
Behdad Esfahbod
b11830c09e
[kern] Improve Format 2
...
Still disabled.
2018-11-06 17:59:31 -05:00
Behdad Esfahbod
c0383c6bb7
Minor
2018-11-06 17:59:31 -05:00
Behdad Esfahbod
10e6f708f3
[kern] Minor
2018-11-06 17:16:23 -05:00
Behdad Esfahbod
164eedd918
[kern] Minor
2018-11-06 17:16:23 -05:00
Behdad Esfahbod
220a5991ba
[kern/kerx] Fix trace numbering
2018-11-06 17:16:23 -05:00
Behdad Esfahbod
bfafe208da
[kern] Switch to dispatch
2018-11-06 12:13:20 -05:00
Behdad Esfahbod
213fa3bf71
[kern] Refactor to include header in each subtable type
2018-11-06 12:13:20 -05:00
Behdad Esfahbod
b0da2cd0b9
[kern] Some more
2018-11-06 12:13:20 -05:00
Behdad Esfahbod
75b00b51c8
[kern] Renames
2018-11-06 12:13:20 -05:00