Commit Graph

77 Commits

Author SHA1 Message Date
Frédéric Wang 9b5a53b1d7 Move public headers into a separate include/woff2 directory
This is a first step to make WOFF2 a shared library. Public headers are moved
in their own directory to make the public API clearer. This is similar to
the c/include/brotli/ directory in Brotli. "using" commands are also removed
from the public headers, so that callers won't have unexpected side effect
when including the files.
2017-10-05 12:04:24 -07:00
Rod Sheeter 53846e1861 Relicense as MIT 2017-10-04 16:12:46 -07:00
Rod Sheeter 679771f97a Reject fonts with bounding boxes for empty glyphs 2017-08-23 14:03:23 -07:00
Rod Sheeter e6579e6b12 Reject fonts with bad loca origLength or hmtx reserved bits set. Correct misplaced bracket in type conversion. 2017-08-23 12:59:55 -07:00
Rod Sheeter 2e09253456 Check for non-consecutive glyf/loca. Reject inconsistent xform flags on glyf/loca 2017-07-31 09:16:49 -07:00
Rod Sheeter 2c6c5846dd reminder to update fuzzer on change 2017-07-31 09:14:44 -07:00
Rod Sheeter a3c61ecad8 Add woff2_info 2017-07-27 09:37:28 -07:00
Garret Rieger 44ab8c45d7 Fix a crash bug in the woff2 decoder when totalSfntSize in the woff2 header is <= 0. 2017-07-19 17:35:57 -07:00
Garret Rieger 849bdb0d24 Fix a crash in the woff2 encoder when it encounters a loca table with a length of zero. 2017-07-19 17:35:13 -07:00
Garret Rieger 4f659ddbad Allow endian-aware optimizations only on whitelisted CPUs. 2017-07-19 17:34:24 -07:00
Garret Rieger 12141fdaf2 Support tables with 0 length (which previously failed in multiple places). 2017-07-19 17:32:38 -07:00
rsheeter cdd19711f4 Merge branch 'master' into master 2017-02-23 13:09:01 -08:00
Rod Sheeter 086bc06ce9 Avoid shadowing 2017-02-23 10:29:01 -08:00
Rod Sheeter 82a9f3afb2 Add check for size of head table to woff2 enc 2017-02-15 13:52:56 -08:00
Rod Sheeter 8109a2cc2b Add fuzzers for consumption by https://github.com/google/oss-fuzz 2017-01-03 16:21:48 -08:00
Eugene Kliuchnikov 9db42c09e9 Roll new brotli version. 2016-12-06 11:14:53 +01:00
Rod Sheeter 63b8fb6d0d Correct comment slightly 2016-09-21 14:48:52 -07:00
Rod Sheeter 58f6fe2aea Add a comment to clarify which ConvertWOFF2ToTTF should be preferred 2016-09-21 14:35:34 -07:00
Khaled Hosny cdd850ef52 Don’t ignore write failure
Makes it easy to find the source of the problems than failing later.
2016-08-09 15:59:50 +02:00
Rod Sheeter afbecce5ff Fix TTC detection, based on findings by libFuzzer 2016-05-25 08:53:43 -07:00
Rod Sheeter 8f3ff26c37 Fix an out of bounds access found by libFuzzer 2016-05-17 16:00:38 -07:00
Rod Sheeter a15a8ab86b Fixes for bugs uncovered by libFuzzer analysis. A write past buffer, a potential DOS by way of giant alloc, and an out of range access. 2016-05-06 13:14:42 -07:00
Rod Sheeter 9476664fd6 Fix bug where table could mismatch header vs data when allow_transforms was set false (not easily possible w/current tools) 2016-05-06 13:10:33 -07:00
Rod Sheeter 2bc6acf6df Push fix for https://bugs.chromium.org/p/chromium/issues/detail?id=604649 2016-04-21 09:29:50 -07:00
Rod Sheeter 07cd303dd2 Update to latest brotli. Use size_t more consistently. Remove dead code. 2016-04-21 09:27:28 -07:00
Rod Sheeter 4e698b8c6c Fix clang compile by adding <string> to woff2_out.h 2016-03-09 10:32:53 -08:00
Rod Sheeter b220918cab Stop trusting header totalSfntSize and glyf origLength 2016-03-08 12:30:08 -08:00
Steve Singer 9ba0580721 Fix issue #44
Use a static_cast instead of a reinterpert_cast so the code compiles
2016-02-10 22:25:06 -05:00
Rod Sheeter d1efde9124 Update woff2_dec.cc range checking 2016-02-04 08:24:36 -08:00
Rod Sheeter bdf886a06b Allow WOFF2Params to specify no transformations at all 2016-01-28 11:36:18 -08:00
Rod Sheeter 14f4cb67ec Tweaks requested by @fred-wang to help Mozilla build 2016-01-28 11:34:31 -08:00
Rod Sheeter c817c969bf hmtx optimization decoding. never encodes hmtx optimized as yet; need a cli param. 2016-01-20 14:10:02 -08:00
Kunihiko Sakamoto 965d077bde Fix signed/unsigned comparison warnings on MSVC 2015-11-17 18:20:03 +09:00
rsheeter 6dbcb5844e Merge pull request #34 from khaledhosny/master
Don’t print to stderr unless a standalone binary
2015-10-28 10:28:58 -07:00
Rod Sheeter fde07429be Be more accepting of fonts with unusual sets of tables 2015-10-26 07:16:42 -07:00
Khaled Hosny 17ed658d0a Don’t print to stderr unless a standalone binary
We will use woff2 code from OTS and it is undesirable for a library to
print messages to stderr.
2015-08-28 01:30:03 +02:00
Rod Sheeter eeec219f20 Only reorder the table directory 2015-07-27 08:47:58 -07:00
Khaled Hosny 208c8f854e Kill kWoff2FlagsContinueStream
There is only a single data stream for all the compressed tables, but
the code was originally written for separately compressed tables then
retrofitted, so this is an attempt to streamline it a bit.
2015-07-15 11:25:52 +02:00
Rod Sheeter 4e3bb3418f Merge PR #16 (reject composite glyphs w/o bbox), slightly modified to match recent code updates (mostly just adding branch predictions) 2015-07-14 10:12:40 -07:00
Rod Sheeter ea4c87a2c5 Updates from internal copy. Better branch prediction, ability to set Brotli quality on ConvertTTFToWOFF2 2015-07-13 09:08:04 -07:00
rsheeter e3ea2285a7 Merge pull request #25 from khaledhosny/invalid-base128
Reject UIntBase128 with leading zeros
2015-06-29 15:30:13 -04:00
Khaled Hosny f43ad22271 Reject UIntBase128 with leading zeros
Fixes #23.
2015-06-25 06:53:21 +02:00
Khaled Hosny c54533f47f Fix compiler warning on Mac OS X
warning: format specifies type 'unsigned long' but the argument has type
'uint64_t' (aka 'unsigned long long') [-Wformat]
2015-06-25 03:32:08 +02:00
Khaled Hosny c3d35ba2e1 Fix building with FONT_COMPRESSION_DEBUG 2015-05-01 01:01:11 +03:00
Rod Sheeter cbd682fcc9 remove comment that has been addressed 2015-04-22 15:55:53 -07:00
rsheeter 56e5e74d34 Merge pull request #13 from khaledhosny/bbox
Fix simple glyph bounding box handling
2015-04-22 15:52:54 -07:00
Khaled Hosny 531adab1fe Reject non-zero loca transformLength 2015-04-20 00:21:05 +02:00
Khaled Hosny 3f91c6e58f Check matadata and private blocks offsets & length
So that we can reject fonts with extraneous data between blocks, as the
spec says we should reject says we should reject such fonts.
2015-04-20 00:11:04 +02:00
Khaled Hosny 0634e0a719 Don't accept too long totalSfntSize
Per the spec (WOFF 2.0 spec just refer to WOFF 1.0 spec here):
http://www.w3.org/TR/2012/REC-WOFF-20121213/#conform-totalsize-longword-reject
2015-04-20 00:11:04 +02:00
Khaled Hosny de2cabb897 Fix simple glyph bounding box handling
Per the spec[1], the bounding box should be calculated and if it differs
from the one stored on the font, the original should be written
otherwise it should be omitted. On the other hand, the bounding box of
composite glyphs should be always written.

Fixes #12.

1. http://dev.w3.org/webfonts/WOFF2/spec/#conform-mustCalculateOmitBBoxValues
2015-04-10 22:07:56 +02:00