Michiharu Ariza [Thu, 8 Nov 2018 17:06:49 +0000 (09:06 -0800)]
Merge branch 'master' into cff-subset
Michiharu Ariza [Thu, 8 Nov 2018 17:01:20 +0000 (09:01 -0800)]
got rid of Remap::fullset() as incorrect, redundant, inefficient
Ebrahim Byagowi [Thu, 8 Nov 2018 15:47:02 +0000 (19:17 +0330)]
[just] Initial table implementation (#1364)
A starting point, its sanitization is not tested however
Ebrahim Byagowi [Thu, 8 Nov 2018 15:23:14 +0000 (18:53 +0330)]
[aat] Support Lookup<OffsetTo<>>, needed by just and lcar (#1368)
Ebrahim Byagowi [Thu, 8 Nov 2018 07:29:50 +0000 (10:59 +0330)]
[ci] minor
Behdad Esfahbod [Thu, 8 Nov 2018 02:58:04 +0000 (21:58 -0500)]
[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.
Michiharu Ariza [Thu, 8 Nov 2018 01:58:45 +0000 (17:58 -0800)]
fixed ends_in_hint bug
subr ends in hint itself should be regarded as hint
this flag should propagate to its caller if the call itself is at the end of the caller
Behdad Esfahbod [Thu, 8 Nov 2018 00:11:43 +0000 (19:11 -0500)]
[fuzzing] Take whatever text we can
Behdad Esfahbod [Wed, 7 Nov 2018 23:40:48 +0000 (18:40 -0500)]
Merge pull request #1362 from harfbuzz/cross-kern
Vastly improve kern/kerx tables, including cross-stream "kerning"
Behdad Esfahbod [Wed, 7 Nov 2018 23:13:22 +0000 (18:13 -0500)]
[kerx] Comment
Michiharu Ariza [Wed, 7 Nov 2018 23:09:30 +0000 (15:09 -0800)]
Merge branch 'master' into cff-subset
Michiharu Ariza [Wed, 7 Nov 2018 23:08:55 +0000 (15:08 -0800)]
merge with cff-subset branch
Behdad Esfahbod [Wed, 7 Nov 2018 23:04:53 +0000 (18:04 -0500)]
[kern] Implement negative state numbers
Let the fuzzing bots rip this code apart...
Michiharu Ariza [Wed, 7 Nov 2018 22:48:37 +0000 (14:48 -0800)]
implented no-desubroutinize with CFF2 along with API test
replaced AdobeVFPrototype.abc.otf with a hinted (maually) & subroutinized copy
replaced expected results as well
Behdad Esfahbod [Wed, 7 Nov 2018 22:29:37 +0000 (17:29 -0500)]
[morx] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 22:19:21 +0000 (17:19 -0500)]
[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.
Behdad Esfahbod [Wed, 7 Nov 2018 21:42:16 +0000 (16:42 -0500)]
[aat] Add debug info to state machine
Behdad Esfahbod [Wed, 7 Nov 2018 21:19:51 +0000 (16:19 -0500)]
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..
Behdad Esfahbod [Wed, 7 Nov 2018 21:07:22 +0000 (16:07 -0500)]
Don't apply both kerx and kern
Ouch!
Behdad Esfahbod [Wed, 7 Nov 2018 21:05:36 +0000 (16:05 -0500)]
Minor
Behdad Esfahbod [Wed, 7 Nov 2018 21:03:09 +0000 (16:03 -0500)]
[kern] Switch to dispatch
Behdad Esfahbod [Wed, 7 Nov 2018 21:02:40 +0000 (16:02 -0500)]
[kerx/kern] Add has_cross_stream()
Behdad Esfahbod [Wed, 7 Nov 2018 20:44:40 +0000 (15:44 -0500)]
[kerx] Fix peculiar indexing that was needed previously
Not needed now that we use GPOS attachment for cursive kerx.
Behdad Esfahbod [Wed, 7 Nov 2018 20:40:55 +0000 (15:40 -0500)]
[GPOS] Only mark unsafe-to-break if kerning happened
Fixes https://github.com/harfbuzz/harfbuzz/issues/1365
Behdad Esfahbod [Wed, 7 Nov 2018 20:02:16 +0000 (15:02 -0500)]
[GPOS] Add TODO item
Behdad Esfahbod [Wed, 7 Nov 2018 19:52:36 +0000 (14:52 -0500)]
[kerx] Implement CrossStream kerning for non-state-machine subtables
Untested.
Behdad Esfahbod [Wed, 7 Nov 2018 19:42:15 +0000 (14:42 -0500)]
[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.
Behdad Esfahbod [Wed, 7 Nov 2018 19:38:29 +0000 (14:38 -0500)]
[kerx] Use GPOS attachment facilities for CrossStream kerning
Behdad Esfahbod [Wed, 7 Nov 2018 19:11:48 +0000 (14:11 -0500)]
[kerx] Format
Behdad Esfahbod [Wed, 7 Nov 2018 19:04:04 +0000 (14:04 -0500)]
[kerx] Don't disable crossKerning if kern feature is off
Behdad Esfahbod [Wed, 7 Nov 2018 18:58:41 +0000 (13:58 -0500)]
[kern] Apply erlier, where GPOS/kerx are applied
Behdad Esfahbod [Wed, 7 Nov 2018 18:51:17 +0000 (13:51 -0500)]
[kerx] Implement tupleKerning for Format1
Untested.
Behdad Esfahbod [Wed, 7 Nov 2018 18:48:45 +0000 (13:48 -0500)]
[kerx] Better sanitize tupleKerning
Behdad Esfahbod [Wed, 7 Nov 2018 18:40:22 +0000 (13:40 -0500)]
[kern/kerx] Share KernTable, renamed to KerxTable
Behdad Esfahbod [Wed, 7 Nov 2018 18:35:06 +0000 (13:35 -0500)]
[fallback] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 18:33:23 +0000 (13:33 -0500)]
[kern/kerx] More towards sharing KernTable
Behdad Esfahbod [Wed, 7 Nov 2018 18:10:05 +0000 (13:10 -0500)]
[kern] Disable Format1 and Format3 for OT-style tables
Behdad Esfahbod [Wed, 7 Nov 2018 18:04:21 +0000 (13:04 -0500)]
[kern] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 17:57:10 +0000 (12:57 -0500)]
[kern] Move code
Behdad Esfahbod [Wed, 7 Nov 2018 17:51:49 +0000 (12:51 -0500)]
[kern] Massage more
Behdad Esfahbod [Wed, 7 Nov 2018 17:49:20 +0000 (12:49 -0500)]
[kerx] More minor
Behdad Esfahbod [Wed, 7 Nov 2018 17:48:06 +0000 (12:48 -0500)]
[kern/kerx] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 17:32:39 +0000 (12:32 -0500)]
[kern/kerx] Towards sharing KernTable
Behdad Esfahbod [Wed, 7 Nov 2018 17:27:44 +0000 (12:27 -0500)]
[kern/kerx] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 17:19:52 +0000 (12:19 -0500)]
[kern/kerx] Share Format2
This, enables Format2 for kern table, which was disabled before.
Behdad Esfahbod [Wed, 7 Nov 2018 17:16:38 +0000 (12:16 -0500)]
[kerx] Towards merging Format2
Michiharu Ariza [Wed, 7 Nov 2018 17:16:12 +0000 (09:16 -0800)]
clear stack after vsindex op
Michiharu Ariza [Wed, 7 Nov 2018 17:09:13 +0000 (09:09 -0800)]
fixed off-by-one error in CFF1 Encoding lookup
Behdad Esfahbod [Wed, 7 Nov 2018 17:08:44 +0000 (12:08 -0500)]
[aat] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 16:56:36 +0000 (11:56 -0500)]
[kerx] Rename
Behdad Esfahbod [Wed, 7 Nov 2018 16:51:40 +0000 (11:51 -0500)]
[morx/kerx] Rename types
Behdad Esfahbod [Wed, 7 Nov 2018 16:28:36 +0000 (11:28 -0500)]
[kern/kerx] Share Format1 subtable
Behdad Esfahbod [Wed, 7 Nov 2018 16:43:25 +0000 (11:43 -0500)]
[kerx] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 16:25:55 +0000 (11:25 -0500)]
[kerx] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 16:21:09 +0000 (11:21 -0500)]
[kern/kerx] Enable crossStream kerning in vertical
CoreText doesn't, but no reason we shouldn't do.
Behdad Esfahbod [Wed, 7 Nov 2018 16:20:14 +0000 (11:20 -0500)]
[kerx] More towards sharing Format1
Behdad Esfahbod [Wed, 7 Nov 2018 16:05:28 +0000 (11:05 -0500)]
[morx] Simplify
Behdad Esfahbod [Wed, 7 Nov 2018 16:02:04 +0000 (11:02 -0500)]
[kerx] Towards sharing Format1
Behdad Esfahbod [Wed, 7 Nov 2018 15:58:50 +0000 (10:58 -0500)]
[morx] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 15:45:25 +0000 (10:45 -0500)]
[kern/kerx] Share Format0
Behdad Esfahbod [Wed, 7 Nov 2018 15:39:39 +0000 (10:39 -0500)]
[kern/kerx] Towards merge more
Behdad Esfahbod [Wed, 7 Nov 2018 15:33:46 +0000 (10:33 -0500)]
[kern/kerx] More towards sharing
Behdad Esfahbod [Wed, 7 Nov 2018 15:25:25 +0000 (10:25 -0500)]
[kern] Move kern machine to hb-kern.hh
Behdad Esfahbod [Wed, 7 Nov 2018 15:19:46 +0000 (10:19 -0500)]
[kerx] Towards sharing subtables with kern
Behdad Esfahbod [Wed, 7 Nov 2018 14:53:02 +0000 (09:53 -0500)]
[kern] Remove Override business
Not used in any fonts. Not well-specified when mixing kerning with
Cross-Stream positioning.
Behdad Esfahbod [Wed, 7 Nov 2018 14:16:53 +0000 (09:16 -0500)]
[post] Return true on truncation
Client can check that buffer was completely filled out and reallocate.
Behdad Esfahbod [Wed, 7 Nov 2018 14:14:42 +0000 (09:14 -0500)]
[post] Protect against huge empty tables
Behdad Esfahbod [Wed, 7 Nov 2018 14:13:51 +0000 (09:13 -0500)]
[post] Minor
Behdad Esfahbod [Wed, 7 Nov 2018 14:10:55 +0000 (09:10 -0500)]
[post] Fix bound checking
HinTak [Wed, 7 Nov 2018 13:19:36 +0000 (13:19 +0000)]
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
Behdad Esfahbod [Wed, 7 Nov 2018 05:25:48 +0000 (00:25 -0500)]
[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]
Behdad Esfahbod [Wed, 7 Nov 2018 05:04:40 +0000 (00:04 -0500)]
[kern/kerx] Fix "reset" magic value
Behdad Esfahbod [Wed, 7 Nov 2018 02:45:40 +0000 (21:45 -0500)]
[kerx] Adjust CrossStream kern to match 'kern' table
Behdad Esfahbod [Wed, 7 Nov 2018 02:41:28 +0000 (21:41 -0500)]
[kern] More tweaks
Solves a mystery or two. I'm fairly confident this is what CoreText does now.
Behdad Esfahbod [Wed, 7 Nov 2018 02:04:40 +0000 (21:04 -0500)]
[kern] Adjust some more
Getting closer. So many open questions still...
Behdad Esfahbod [Wed, 7 Nov 2018 02:04:02 +0000 (21:04 -0500)]
[kern] Add TODO
Behdad Esfahbod [Wed, 7 Nov 2018 00:24:04 +0000 (19:24 -0500)]
[kern] Minor
Behdad Esfahbod [Tue, 6 Nov 2018 23:35:58 +0000 (18:35 -0500)]
[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.
Behdad Esfahbod [Tue, 6 Nov 2018 22:16:04 +0000 (17:16 -0500)]
[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...
Behdad Esfahbod [Tue, 6 Nov 2018 19:48:42 +0000 (14:48 -0500)]
[kern] Implement CrossStream kerning
Behdad Esfahbod [Tue, 6 Nov 2018 20:23:18 +0000 (15:23 -0500)]
[kern] Improve Format 2
Still disabled.
Behdad Esfahbod [Tue, 6 Nov 2018 20:07:19 +0000 (15:07 -0500)]
Minor
Behdad Esfahbod [Tue, 6 Nov 2018 18:32:13 +0000 (13:32 -0500)]
[kern] Minor
Behdad Esfahbod [Tue, 6 Nov 2018 18:18:27 +0000 (13:18 -0500)]
[kern] Minor
Behdad Esfahbod [Tue, 6 Nov 2018 18:51:39 +0000 (13:51 -0500)]
[kern/kerx] Fix trace numbering
Michiharu Ariza [Tue, 6 Nov 2018 21:59:07 +0000 (13:59 -0800)]
don't reject empty Dict
Michiharu Ariza [Tue, 6 Nov 2018 17:57:17 +0000 (09:57 -0800)]
Merge branch 'master' into cff-subset
Behdad Esfahbod [Tue, 6 Nov 2018 17:11:45 +0000 (12:11 -0500)]
[kern] Switch to dispatch
Behdad Esfahbod [Tue, 6 Nov 2018 17:07:15 +0000 (12:07 -0500)]
[kern] Refactor to include header in each subtable type
Behdad Esfahbod [Tue, 6 Nov 2018 16:16:45 +0000 (11:16 -0500)]
[kern] Some more
Behdad Esfahbod [Tue, 6 Nov 2018 16:13:40 +0000 (11:13 -0500)]
[kern] Renames
Khaled Hosny [Tue, 6 Nov 2018 16:10:56 +0000 (18:10 +0200)]
Another missing backlash
Did this ever work?
Khaled Hosny [Tue, 6 Nov 2018 16:07:47 +0000 (18:07 +0200)]
Add missing backslash
Behdad Esfahbod [Tue, 6 Nov 2018 16:03:34 +0000 (11:03 -0500)]
[util] Fix up previous commit
Behdad Esfahbod [Tue, 6 Nov 2018 15:49:19 +0000 (10:49 -0500)]
[util] Don't terminate string after a a 0 in -u
Fixes https://github.com/harfbuzz/harfbuzz/issues/1361
Behdad Esfahbod [Tue, 6 Nov 2018 15:24:54 +0000 (10:24 -0500)]
[fuzzing] Fix test
Behdad Esfahbod [Tue, 6 Nov 2018 15:20:57 +0000 (10:20 -0500)]
[fuzzing] Add make check-valgrind
Behdad Esfahbod [Tue, 6 Nov 2018 15:20:36 +0000 (10:20 -0500)]
[test] Minor
Behdad Esfahbod [Tue, 6 Nov 2018 15:03:38 +0000 (10:03 -0500)]
Minor
Ebrahim Byagowi [Tue, 6 Nov 2018 08:12:47 +0000 (11:42 +0330)]
[test] Fix -Weverything bot complain