Behdad Esfahbod
87205ef935
[aat] Make sure Lookup offset is never nulled
...
It has unbounded size...
Fixes https://oss-fuzz.com/v2/testcase-detail/5718889451749376
2018-10-16 15:41:00 -07:00
Ebrahim Byagowi
42b75dc3a7
[kerx] Minor, remove debug bit
2018-10-16 10:58:09 +03:30
Behdad Esfahbod
11703afce6
[kerx] Fix Format6 sanitize
...
Fixes https://oss-fuzz.com/v2/testcase-detail/5650286710882304
2018-10-15 21:17:08 -07:00
Behdad Esfahbod
bb35725cd7
[kerx/morx] More end-of-text protection
2018-10-15 11:05:10 -07:00
Behdad Esfahbod
40f2b9355c
[kerx] Fix Format1 sanitize
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10948
2018-10-14 14:56:32 -07:00
Behdad Esfahbod
de6e414c56
[kerx] Sanitize more
2018-10-13 13:48:22 -04:00
Behdad Esfahbod
71f76f2f39
[kerx] Fix-up previous commit
...
A "&" was missing. Go back to using pointers that are less error-prone.
2018-10-13 13:36:27 -04:00
Behdad Esfahbod
6d4b054234
[kerx] Use sanitizer instead of handcoded runtime sanitization
2018-10-13 12:20:33 -04:00
Behdad Esfahbod
5733113662
[kerx] Wire up context down to get_kerning
2018-10-13 12:16:12 -04:00
Behdad Esfahbod
c4502833b7
[kerx] Use sanitizer.get_num_glyphs() instead of face->get_num_glyphs()
2018-10-13 12:09:59 -04:00
Behdad Esfahbod
fc45e698f2
[kerx] Protext against overflows
2018-10-13 12:09:59 -04:00
Behdad Esfahbod
fbbd926dba
[kerx] Implement Format4 action_type=1 contour-point-based attachment
...
Untested.
This concludes kerx table support!
2018-10-11 01:22:29 -04:00
Behdad Esfahbod
b6bc0d4ff6
[kerx] Implement Format4 action_type=2 coordinate-based attachment
...
Untested.
2018-10-11 01:17:57 -04:00
Behdad Esfahbod
1622ba5943
[kerx] Implement Format4 'ankr'-based mark attachment
...
Tested with Kannada MN:
$ HB_OPTIONS=aat ./hb-shape Kannada\ MN.ttc -u 0CCD,0C95,0CD6
[kn_ka.vattu=0+230|kn_ai_length_mark=1@326,0+607]
2018-10-11 01:17:33 -04:00
Behdad Esfahbod
28f0367aab
[kerx] Flesh out Format4
...
Doesn't apply actions yet.
2018-10-11 00:46:12 -04:00
Behdad Esfahbod
f7c45bc33e
[kerx] Allow granularly disabling kerning
2018-10-10 22:15:13 -04:00
Behdad Esfahbod
2b72c4b63d
[kerx] Comment
2018-10-10 21:53:14 -04:00
Behdad Esfahbod
9f450f07b0
[kerx] Make Format1 work
...
Tested using Kannada MN:
$ HB_OPTIONS=aat ./hb-shape Kannada\ MN.ttc -u 0C95,0CCd,C95,CCD
[kn_ka.virama=0+1299|kn_ka.vattu=0+115|_blank=0@-115,0+385]
$ HB_OPTIONS=aat ./hb-shape Kannada\ MN.ttc -u 0C95,0CCd,C95,CCD --features=-kern
[kn_ka.virama=0+1799|kn_ka.vattu=0+230|_blank=0+0]
I don't see the GPOS table in the font do the same. ¯\_(ツ)_/¯
2018-10-10 21:46:58 -04:00
Behdad Esfahbod
8496753796
[kerx] Implement Format1
...
Untested.
2018-10-10 21:18:37 -04:00
Behdad Esfahbod
c9165f5450
[kerx] More UnsizedArrayOf<>
2018-10-10 20:43:21 -04:00
Behdad Esfahbod
ca54eba484
[kerx] Fix bound-checking error introduced a couple commits past
2018-10-10 20:41:16 -04:00
Behdad Esfahbod
339036dd97
[kerx] Start fleshing out Format1
2018-10-10 20:37:22 -04:00
Behdad Esfahbod
ab1f30bd05
[kerx] Implement Format6
...
Untested. The only Apple font shipping with this format is San Francisco fonts
that use this for their kerx variation tables, which we don't support.
2018-10-10 20:10:20 -04:00
Behdad Esfahbod
c9a2ce9e05
[kerx] Move bounds-checking to subtable length itself
2018-10-10 20:00:44 -04:00
Behdad Esfahbod
22955b23cd
[kerx] Start fleshing out Format6
2018-10-10 19:58:20 -04:00
Behdad Esfahbod
f6aaad9b4f
[kerx] When rejecting variable kerning, also check for tupleCount
2018-10-10 19:20:06 -04:00
Behdad Esfahbod
7ed5366d3c
[kerx] No-op
...
Tested that Format0 works with Kannada MN font:
$ make -j5 lib -s && HB_OPTIONS=aat ./hb-shape Kannada\ MN.ttc -u 0C95,0CC2
[kn_ka=0+1000|kn_matra_uu=0@-30,0+1345]
$ make -j5 lib -s && HB_OPTIONS=aat ./hb-shape Kannada\ MN.ttc -u 0C95,0CC2 --features=-kern
[kn_ka=0+1030|kn_matra_uu=0+1375]
Note that GPOS does the same with 'dist' feature, and applies the whole difference to the
same glyph:
$ make -j5 lib -s && ./hb-shape Kannada\ MN.ttc -u 0C95,0CC2
[kn_ka=0+970|kn_matra_uu=0+1375]
$ make -j5 lib -s && ./hb-shape Kannada\ MN.ttc -u 0C95,0CC2 --features=-dist
[kn_ka=0+1030|kn_matra_uu=0+1375]
2018-10-10 19:12:27 -04:00
Behdad Esfahbod
5d34164d98
[kern/kerx] Fix offset base
...
Disable kern Format2.
Fix kerx Format2. Manually tested this with Tamil MN font and it works:
$ HB_OPTIONS=aat ./hb-shape Tamil\ MN.ttc -u 0B94,0B95
[tgv_au=0+3435|tgc_ka=1@-75,0+1517]
HB_OPTIONS=aat ./hb-shape Tamil\ MN.ttc -u 0B94,0B95 --features=-kern
[tgv_au=0+3510|tgc_ka=1+1592]
2018-10-10 18:23:09 -04:00
Behdad Esfahbod
60f86d32d7
[kerx] Don't loop over kerning subtables if kerning disabled
2018-10-10 18:10:05 -04:00
Behdad Esfahbod
44f09afd5b
[kerx] Skip variation subtables
2018-10-10 17:32:32 -04:00
Behdad Esfahbod
7727e73756
[kerx] Actually hook up, and fix crash
2018-10-10 13:24:51 -04:00
Behdad Esfahbod
0537a40193
[kerx] Comment
2018-10-09 23:37:00 -04:00
Behdad Esfahbod
362d324119
[aat] Rename
2018-10-09 23:27:00 -04:00
Behdad Esfahbod
948f59a13a
[kerx] Use subtable range for runtime checks
2018-10-09 23:07:47 -04:00
Behdad Esfahbod
ad76307486
[kerx] Comment
2018-10-09 22:57:00 -04:00
Behdad Esfahbod
db9600bbe1
[kerx] Remove junk
2018-10-09 22:55:47 -04:00
Behdad Esfahbod
27db859416
[kern/kerx] Adjust bounds check
2018-10-09 22:55:17 -04:00
Behdad Esfahbod
c66f7f8c5d
[kerx] Implement Format2 apply()
...
Still, not hooked.
2018-10-09 22:49:33 -04:00
Behdad Esfahbod
4b461785bd
Fix check
2018-10-09 22:46:30 -04:00
Behdad Esfahbod
53e5594500
[kerx] Implement Format0 apply()
...
Not hooked up to be called yet.
2018-10-09 22:35:22 -04:00
Behdad Esfahbod
e640f3a6b1
Another old bot fix
2018-10-09 08:28:07 -04:00
Behdad Esfahbod
ed5cfa42c7
[kern] Minor
2018-10-09 00:20:35 -04:00
Behdad Esfahbod
80e3102b8a
[kerx] Process coverage flags
2018-10-08 22:41:08 -04:00
Behdad Esfahbod
1a5a3325a2
[kerx] Minor
2018-10-07 23:08:39 -04:00
Behdad Esfahbod
c6bb3a588f
[kerx] Clean up Format2
2018-10-07 22:52:53 -04:00
Behdad Esfahbod
8aa83d97f9
[kern/kerx] Fix Format2 offsetting
...
"The values in the right class table are stored pre-multiplied by the
number of bytes in a single kerning value, and the values in the left
class table are stored pre-multiplied by the number of bytes in one
row. This eliminates needing to multiply the row and column values
together to determine the location of the kerning value. The array can
be indexed by doing the right- and left-hand class mappings, adding the
class values to the address of the array, and fetching the kerning
value to which the new address points."
2018-10-07 22:45:15 -04:00
Behdad Esfahbod
ed2a404272
[kerx] Clean up Format0
2018-10-07 22:37:20 -04:00
Behdad Esfahbod
fdce1e1543
[kerx] Clean up kerx and KerxTable structures
2018-10-07 14:01:33 -04: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
63f57f4dab
Mark more unsized array's as arrayZ
2018-05-08 16:56:11 -07:00