Behdad Esfahbod [Wed, 10 Jan 2018 01:20:14 +0000 (02:20 +0100)]
Add option to buffer serialization to not output glyph advances
When advances are not printed, glyph offsets reflect absolute glyph
positions.
New API:
HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES
hb-shape --no-advances
Behdad Esfahbod [Wed, 10 Jan 2018 00:54:12 +0000 (01:54 +0100)]
[test] Add script for extracting tests from text-rendering-tests
Work in progress...
https://github.com/unicode-org/text-rendering-tests
Behdad Esfahbod [Wed, 10 Jan 2018 00:13:36 +0000 (01:13 +0100)]
[test] Minor
Behdad Esfahbod [Tue, 9 Jan 2018 22:15:54 +0000 (23:15 +0100)]
[test] Simplify test runner
Always pass hb-shape as first argument to run-tests.py.
Also require automake 1.13.
Behdad Esfahbod [Tue, 9 Jan 2018 22:11:00 +0000 (23:11 +0100)]
[test] Minor
Behdad Esfahbod [Tue, 9 Jan 2018 20:58:57 +0000 (21:58 +0100)]
[test] Reorganize test suite
In anticipation of importing more test suites.
Behdad Esfahbod [Tue, 9 Jan 2018 20:35:21 +0000 (21:35 +0100)]
[test] Remove unused hb-diff-ngrams
Behdad Esfahbod [Tue, 9 Jan 2018 20:33:38 +0000 (21:33 +0100)]
[test] Remove unused manifest stuff
Behdad Esfahbod [Tue, 9 Jan 2018 17:23:19 +0000 (18:23 +0100)]
[test] Move test files around
Behdad Esfahbod [Tue, 9 Jan 2018 16:55:17 +0000 (17:55 +0100)]
[aat/morx] Implement NoncontextualSubtables
Also makes hb-ot-shape call morx for now instead of GSUB... Just for testing.
Behdad Esfahbod [Tue, 9 Jan 2018 15:32:58 +0000 (16:32 +0100)]
Minor
Behdad Esfahbod [Tue, 9 Jan 2018 14:48:51 +0000 (15:48 +0100)]
[aat] Implement Lookup table
Untested, but compiles.
Behdad Esfahbod [Tue, 9 Jan 2018 11:06:38 +0000 (12:06 +0100)]
Minor
Behdad Esfahbod [Mon, 8 Jan 2018 14:32:55 +0000 (14:32 +0000)]
[aat] Update previous commits for rebase on master
Behdad Esfahbod [Thu, 17 Aug 2017 23:55:54 +0000 (16:55 -0700)]
[aat] Start implementing common table formats
Behdad Esfahbod [Tue, 15 Aug 2017 00:24:36 +0000 (17:24 -0700)]
[aat] Start implementing Apple AAT morx table
Ebrahim Byagowi [Mon, 8 Jan 2018 22:09:42 +0000 (01:39 +0330)]
[cmake] Add autotools like feature testing (#683)
Behdad Esfahbod [Mon, 8 Jan 2018 10:07:46 +0000 (10:07 +0000)]
[ft] Use FT_Done_MM_Var() if available
Behdad Esfahbod [Fri, 5 Jan 2018 18:09:29 +0000 (18:09 +0000)]
[khmer] Relax!
Apparently we don't use OT_A either.
Behdad Esfahbod [Fri, 5 Jan 2018 18:06:00 +0000 (18:06 +0000)]
[khmer] Drop another joiner
Behdad Esfahbod [Fri, 5 Jan 2018 18:04:56 +0000 (18:04 +0000)]
[khmer] Shuffle
Behdad Esfahbod [Fri, 5 Jan 2018 18:03:00 +0000 (18:03 +0000)]
[khmer] Simplify grammar some more
Numbers down (from 38):
KHMER: 299090 out of 299124 tests passed. 34 failed (0.0113665%)
Behdad Esfahbod [Fri, 5 Jan 2018 18:01:01 +0000 (18:01 +0000)]
[khmer] Clean
Behdad Esfahbod [Fri, 5 Jan 2018 17:59:43 +0000 (17:59 +0000)]
[khmer] Limit number of joiners
Behdad Esfahbod [Fri, 5 Jan 2018 17:57:39 +0000 (17:57 +0000)]
[khmer] Relax number of consonants / matras allowed
New numbers (down from 39):
KHMER: 299086 out of 299124 tests passed. 38 failed (0.0127038%)
Behdad Esfahbod [Fri, 5 Jan 2018 17:52:24 +0000 (17:52 +0000)]
[khmer] Allow Independent Vowels where stacked consonants are allowed
New numbers (down from 44):
KHMER: 299085 out of 299124 tests passed. 39 failed (0.0130381%)
Behdad Esfahbod [Fri, 5 Jan 2018 17:47:35 +0000 (17:47 +0000)]
[khmer] Drop some more joiners
Behdad Esfahbod [Fri, 5 Jan 2018 17:46:49 +0000 (17:46 +0000)]
[khmer] Drop some more
Behdad Esfahbod [Fri, 5 Jan 2018 17:45:48 +0000 (17:45 +0000)]
[khmer] Drop some more grammar
Behdad Esfahbod [Fri, 5 Jan 2018 17:44:18 +0000 (17:44 +0000)]
[khmer] Drop some more from grammar
Behdad Esfahbod [Fri, 5 Jan 2018 17:43:31 +0000 (17:43 +0000)]
[khmer] Drop final_halant_group
Behdad Esfahbod [Fri, 5 Jan 2018 17:34:26 +0000 (17:34 +0000)]
Minor
Behdad Esfahbod [Fri, 5 Jan 2018 17:27:48 +0000 (17:27 +0000)]
[indic] Remove unused OT_VD category
Behdad Esfahbod [Fri, 5 Jan 2018 17:21:55 +0000 (17:21 +0000)]
[khmer] Shave off some more from the grammar
Behdad Esfahbod [Fri, 5 Jan 2018 17:17:02 +0000 (17:17 +0000)]
[khmer] Remove unused symbol clusters
Behdad Esfahbod [Fri, 5 Jan 2018 17:15:31 +0000 (17:15 +0000)]
Minor
Behdad Esfahbod [Fri, 5 Jan 2018 17:14:27 +0000 (17:14 +0000)]
[khmer] Remove medials from grammar
Behdad Esfahbod [Fri, 5 Jan 2018 17:06:29 +0000 (17:06 +0000)]
[khmer] Better fix for dangling final Coeng
This is how
1471cfee3bb2734dc44c58471362851ad27e8bd8 should have
been done.
Behdad Esfahbod [Fri, 5 Jan 2018 17:05:53 +0000 (17:05 +0000)]
[khmer] Remove reph/repha support from grammar
Behdad Esfahbod [Fri, 5 Jan 2018 17:01:37 +0000 (17:01 +0000)]
[khmer] Remove forced_rakar from grammar
Used by Sinhala only.
Behdad Esfahbod [Fri, 5 Jan 2018 16:34:20 +0000 (16:34 +0000)]
[khmer] Allow a dangling final Coeng after matras
Uniscribe seems to allow that. New numbers:
KHMER: 299080 out of 299124 tests passed. 44 failed (0.0147096%)
Behdad Esfahbod [Fri, 5 Jan 2018 16:28:00 +0000 (16:28 +0000)]
[khmer] Remove some more unused code
Behdad Esfahbod [Fri, 5 Jan 2018 16:13:09 +0000 (16:13 +0000)]
[khmer] Remove features not used by Khmer
Behdad Esfahbod [Fri, 5 Jan 2018 16:08:44 +0000 (16:08 +0000)]
[khmer] Remove rphf feature
Behdad Esfahbod [Fri, 5 Jan 2018 16:06:53 +0000 (16:06 +0000)]
[khmer] Remove non-Khmer matra positioning code
Behdad Esfahbod [Fri, 5 Jan 2018 16:04:02 +0000 (16:04 +0000)]
[khmer] Remove indic_config_t
Behdad Esfahbod [Fri, 5 Jan 2018 16:02:27 +0000 (16:02 +0000)]
[khmer] Remove indic_config->reph_mode
Behdad Esfahbod [Fri, 5 Jan 2018 16:01:17 +0000 (16:01 +0000)]
[khmer] Remove indic_config->reph_pos
Behdad Esfahbod [Fri, 5 Jan 2018 15:50:05 +0000 (15:50 +0000)]
[khmer] Remove indic_config->base_pos
Behdad Esfahbod [Fri, 5 Jan 2018 15:45:30 +0000 (15:45 +0000)]
[khmer] Remove other scripts
Behdad Esfahbod [Fri, 5 Jan 2018 15:43:48 +0000 (15:43 +0000)]
[khmer] Remove indic_config->script
Behdad Esfahbod [Fri, 5 Jan 2018 15:43:11 +0000 (15:43 +0000)]
[khmer] Remove indic_config->virama
Behdad Esfahbod [Fri, 5 Jan 2018 15:41:31 +0000 (15:41 +0000)]
[khmer] Remove indic_config->has_old_spec
Behdad Esfahbod [Fri, 5 Jan 2018 15:36:53 +0000 (15:36 +0000)]
[khmer] Remove Halant from Khmer shaper
Behdad Esfahbod [Fri, 5 Jan 2018 15:33:11 +0000 (15:33 +0000)]
[indic] Remove more Khmer-specific stuff from Indic shaper
No numbers changed.
Behdad Esfahbod [Fri, 5 Jan 2018 15:08:28 +0000 (15:08 +0000)]
[indic] Remove main Khmer stuff
Behdad Esfahbod [Fri, 5 Jan 2018 14:54:31 +0000 (14:54 +0000)]
[khmer] Split off Khmer shaper from Indic
Towards fixing https://github.com/harfbuzz/harfbuzz/issues/667
The Khmer spec is different enough from other Indic ones to require
its own grammar.
No change in functionality. Test numbers are:
BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%)
DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%)
GUJARATI: 366355 out of 366457 tests passed. 102 failed (0.0278341%)
GURMUKHI: 60729 out of 60747 tests passed. 18 failed (0.0296311%)
KANNADA: 951300 out of 951913 tests passed. 613 failed (0.0643966%)
KHMER: 299071 out of 299124 tests passed. 53 failed (0.0177184%)
MALAYALAM: 1048136 out of 1048334 tests passed. 198 failed (0.0188871%)
ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%)
SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%)
TAMIL: 1091754 out of 1091754 tests passed. 0 failed (0%)
TELUGU: 970555 out of 970573 tests passed. 18 failed (0.
00185457%)
Behdad Esfahbod [Fri, 5 Jan 2018 14:01:37 +0000 (14:01 +0000)]
[ot] Short-circuit base instance advance variation
Behdad Esfahbod [Fri, 5 Jan 2018 13:20:21 +0000 (13:20 +0000)]
[ot] Fix VariationStore evaluation algorithm
Ouch! Missing coords should still be evaluated as coord=0, which
most of the time results in a factor of 0. We were skipping these,
which was equivalent to a factor of 1.
Fixes https://github.com/harfbuzz/harfbuzz/issues/652
Behdad Esfahbod [Fri, 5 Jan 2018 13:17:02 +0000 (13:17 +0000)]
Minor
Behdad Esfahbod [Fri, 5 Jan 2018 13:06:25 +0000 (13:06 +0000)]
[ft] If there's no variations set, don't set them on hb-font
Behdad Esfahbod [Fri, 5 Jan 2018 12:55:39 +0000 (12:55 +0000)]
Add test font for previous commit
Behdad Esfahbod [Fri, 5 Jan 2018 12:50:22 +0000 (12:50 +0000)]
Merge remote-tracking branch 'fdo/master'
Behdad Esfahbod [Fri, 5 Jan 2018 12:46:12 +0000 (12:46 +0000)]
Improve CGJ skipping logic
Previously we made CGJ unskippable. Now, if CGJ did NOT prevent
any reordering, allow skipping over it. To make this work we
had to make changes to the Arabic mark reordering algorithm
implementation to renumber moved MCM marks. See comments.
Fixes https://github.com/harfbuzz/harfbuzz/issues/554
Ebrahim Byagowi [Fri, 5 Jan 2018 09:12:20 +0000 (12:42 +0330)]
Improve tests (#679)
Behdad Esfahbod [Thu, 4 Jan 2018 16:06:25 +0000 (16:06 +0000)]
Minor
Bruce Mitchener [Thu, 4 Jan 2018 11:40:10 +0000 (18:40 +0700)]
atomics: Favor compiler primitives over macOS APIs. (#676)
In macOS 10.12, the `OSMemoryBarrier` and related APIs were deprecated
in favor of using `std::atomic`. On the way to supporting `std::atomic`,
we can favor using the "Intel primitives" which are also available on
macOS.
Bruce Mitchener [Thu, 4 Jan 2018 11:37:35 +0000 (18:37 +0700)]
[cmake] Colorize output when using cmake + ninja. (#674)
Due to how ninja runs clang and gcc, it doesn't colorize the output
like make does. This forces color output in this situation.
Ebrahim Byagowi [Thu, 4 Jan 2018 06:41:34 +0000 (10:11 +0330)]
[cmake] Run src/ tests (#675)
Behdad Esfahbod [Wed, 3 Jan 2018 14:27:34 +0000 (14:27 +0000)]
[use] Simplify more
Behdad Esfahbod [Wed, 3 Jan 2018 14:24:44 +0000 (14:24 +0000)]
[use] Simplify
Fixes https://github.com/harfbuzz/harfbuzz/pull/661
Behdad Esfahbod [Wed, 3 Jan 2018 14:22:07 +0000 (14:22 +0000)]
[use] Fix Brahmi Number Joiner 1107F
Fixes https://github.com/harfbuzz/harfbuzz/pull/660
Behdad Esfahbod [Wed, 3 Jan 2018 12:46:29 +0000 (12:46 +0000)]
[util] Add TODO item
Ebrahim Byagowi [Tue, 2 Jan 2018 20:22:12 +0000 (23:52 +0330)]
Fix make check issue on out-of-tree builds and test it (#672)
Bruce Mitchener [Tue, 2 Jan 2018 18:23:23 +0000 (01:23 +0700)]
Fix typos.
Bruce Mitchener [Tue, 2 Jan 2018 17:15:18 +0000 (00:15 +0700)]
Improve Markdown usage in BUILD.md.
Romain Ouabdelkader [Thu, 21 Dec 2017 13:39:34 +0000 (14:39 +0100)]
link with CoreFoundation when using CoreText
Ebrahim Byagowi [Mon, 1 Jan 2018 07:47:51 +0000 (11:17 +0330)]
[cmake] Run rest of the tests on Windows (#668)
Ebrahim Byagowi [Fri, 29 Dec 2017 19:43:29 +0000 (23:13 +0330)]
[cmake] Run fuzzing and shaping tests (#666)
Ebrahim Byagowi [Mon, 25 Dec 2017 18:31:28 +0000 (22:01 +0330)]
[cmake] Use GNUInstallDirs values (#665)
Behdad Esfahbod [Sun, 24 Dec 2017 22:53:32 +0000 (17:53 -0500)]
Add Coverity badge
Ebrahim Byagowi [Sun, 24 Dec 2017 22:25:48 +0000 (01:55 +0330)]
[cmake] Enable cmake tests on distribution and test it (#664)
David Corbett [Wed, 22 Nov 2017 21:32:52 +0000 (16:32 -0500)]
Forbid Batak killers after vowel signs
Ebrahim Byagowi [Sun, 24 Dec 2017 22:02:46 +0000 (01:32 +0330)]
[ci] Add -Wno-attributes to djgpp, add alpine, format (#663)
Behdad Esfahbod [Sun, 24 Dec 2017 21:05:07 +0000 (16:05 -0500)]
[use] Allow ZWJ before/after Halant
https://github.com/harfbuzz/harfbuzz/issues/542#issuecomment-
353169729
Behdad Esfahbod [Wed, 20 Dec 2017 18:19:33 +0000 (13:19 -0500)]
Minor
Ebrahim Byagowi [Thu, 21 Dec 2017 16:45:37 +0000 (20:15 +0330)]
[ci] Add a DOS/djgpp compiler (#659)
Behdad Esfahbod [Wed, 20 Dec 2017 17:09:00 +0000 (12:09 -0500)]
1.7.4
Volker H. Simonis [Tue, 19 Dec 2017 10:33:25 +0000 (11:33 +0100)]
HarfBuzz 1.7.1 and later don't compile on AIX with xlC (#655)
Behdad Esfahbod [Tue, 19 Dec 2017 19:48:26 +0000 (14:48 -0500)]
[set] Handle nil set in add_range() / add_sorted_array()
Fixes https://github.com/harfbuzz/harfbuzz/issues/657
Behdad Esfahbod [Mon, 18 Dec 2017 14:18:51 +0000 (09:18 -0500)]
1.7.3
Behdad Esfahbod [Sun, 17 Dec 2017 17:32:33 +0000 (12:32 -0500)]
[coretext] In hb_coretext_font_create() set ptem
Otherwise setting the CTFont was ineffective as it would have been
recreated anyway unless font size was set to 18 CSS points.
Behdad Esfahbod [Sat, 16 Dec 2017 16:49:39 +0000 (11:49 -0500)]
[set] In add_sorted_array(), bail if data is not sorted
Behdad Esfahbod [Sat, 16 Dec 2017 16:11:18 +0000 (11:11 -0500)]
[collect_glyphs] Bail if input data looks like garbage
Specificaly, when a range or sorted array has unexpected order, we take that as
font data being garbage and bail out. This fixes significant slowdown on a bad
version of Chandas font which has a 600KB GPOS with garbage inside.
Later on, I like to add a maximum-work counter for collect_glyphs to protect
against malicious fonts as well.
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=794896
Behdad Esfahbod [Sat, 16 Dec 2017 16:36:16 +0000 (11:36 -0500)]
[set] Optimize add_array() / add_sorted_array()
Does page lookup as needed.
Behdad Esfahbod [Sat, 16 Dec 2017 16:07:37 +0000 (11:07 -0500)]
[collect_glyphs] handle ClassDef better
Behdad Esfahbod [Sat, 16 Dec 2017 14:18:07 +0000 (06:18 -0800)]
[collect_glyphs] In PairPosFornat2 do not collect classDef1
The coverage already covered that.
Behdad Esfahbod [Sat, 16 Dec 2017 14:12:06 +0000 (06:12 -0800)]
More work towards improving collect_glyphs() against bad input
The three "XXXXX"'s should be switched to false. Doing that separately for ease
of bisecting...
Behdad Esfahbod [Fri, 15 Dec 2017 03:33:55 +0000 (19:33 -0800)]
[set] Add add_sorted_array()
Not optimized to use sortedness yet. Also start putting in place infra
to faster reject bad data.
A version of Chandas.ttf found on some Chrome bots has 660kb of GPOS,
mostly junk. That is causing 48 million of set->add() calls in
collect_glyphs(), which is insane.
In the upcoming commits, I'll be speeding that up by optimizing
add_sorted_array(), while also reducing work by rejecting out-of-sort
arrays quickly and propagate the rejection.
Part of https://bugs.chromium.org/p/chromium/issues/detail?id=794896
Behdad Esfahbod [Fri, 15 Dec 2017 03:04:55 +0000 (19:04 -0800)]
[set] Reduce number of preallocated pages from 8 to 1
Now that pagesize is 8192, this feels better.