Behdad Esfahbod
fe5f9b1ae3
[aat] Fix ContextualSubtable sanitization
...
Fixes MORX-18, MORX-19, and MORX-22.
2018-02-04 12:36:54 -05:00
Bruce Mitchener
e8859fca3e
Enable use of atexit() on macOS and related platforms.
...
The atexit() man page indicates that this is expected to behave
in the expected way on unloading of shared libraries.
2018-02-03 19:20:40 -08:00
Bruce Mitchener
a89573770b
Use nullptr, not NULL.
2018-02-03 21:26:58 +02:00
David Corbett
ccb0367dae
Let VS1 follow U+1031 MYANMAR VOWEL SIGN E
2018-02-02 12:41:07 -08:00
punchcutter
c6dbf6e77c
Allow optional ZWJ in virama terminated cluster
2018-01-31 14:16:25 -08:00
Bruce Mitchener
dae20fb5a7
Use nullptr instead of 0.
2018-01-31 08:18:48 -08:00
Bruce Mitchener
90218fa93c
Fix typos.
2018-01-31 08:18:15 -08:00
Bruce Mitchener
148ca61075
[ot-layout] Fix nullptr dereference.
...
If the `calloc` for `gsub_accels` or `gpos_accels` fails, then the
unlikely branch afterwards can be taken, which frees up the
`hb_ot_layout_t`, but since those fields can now be `nullptr`, then
we don't want to dereference them.
2018-01-31 08:05:25 -08:00
Bruce Mitchener
0c66043a92
[coretext] Fix memory leaks.
...
In `reference_table`, if the data is empty and we return early,
we still need to release the data object.
In `hb_coretext_shape`, there two edge cases where an early
return should release the attributed string.
2018-01-31 08:04:15 -08:00
Behdad Esfahbod
e89df6e1ae
[aat] Limit number of DontAdvance transitions
...
Remove the faulty loop-detection logic. Use max-ops for breaking
out of infinite loops or heavy work.
https://twitter.com/behdadesfahbod/status/958065026262183936
2018-01-30 11:01:18 -08:00
Ebrahim Byagowi
55cae0d72e
[test] Use 'otool -L' where ldd doesn't exist (macOS) ( #732 )
2018-01-29 18:05:24 +03:30
David Corbett
2ec7dd1f6c
Fix Travis build on macOS ( #731 )
2018-01-29 02:18:28 +03:30
Behdad Esfahbod
12757b6929
Misc warning fixes
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/712
2018-01-26 18:14:05 -08:00
bungeman
85be365ed9
Use KernSubTableFormat2::rightClassTable
...
Issue originally reported at http://cppfiles.com/chromium.txt .
This fixes what appears to be a copy - paste issue which causes both
KernSubTableFormat2::rightClassTable and the 'right' argument to
KernSubTableFormat2::get_kerning to go unused.
2018-01-26 15:20:18 -08:00
Bruce Mitchener
19a93fcf19
Fix typos.
2018-01-21 10:33:54 -08:00
Behdad Esfahbod
51ce3828e6
[aat] Fix Ligature matching
...
I hope... Makes "ffi" work with Zapfino. I'm not sure if doing it correctly though...
2018-01-19 18:37:58 -08:00
Behdad Esfahbod
bef509855c
[aat] Add TODO
2018-01-19 18:24:00 -08:00
Behdad Esfahbod
e6f283ed7d
[aat] Implement LigatureSubtable
...
We form the Zapfino ligature now. Yay! No further testing done.
2018-01-19 18:09:48 -08:00
Behdad Esfahbod
f07ce661a2
[aat] Embed a sanitizer context in hb_aat_apply_context_t
...
For run-time checking.
2018-01-19 16:52:01 -08:00
Behdad Esfahbod
046690a4df
[aat] Add hb_aat_apply_context_t
2018-01-19 16:40:13 -08:00
Behdad Esfahbod
fd03449094
Rename hb_apply_context_t to hb_ot_apply_context_t
2018-01-19 16:40:13 -08:00
Behdad Esfahbod
94b49beee9
Whitespace
2018-01-19 16:40:13 -08:00
Cosimo Lupo
c8f2a4f5b9
hb-common.cc: Hatran script is right-to-left ( #714 )
...
"Hatran is written from right to left horizontally"
http://www.unicode.org/L2/L2012/12312-n4324-hatran.pdf
This ancient script was added with Unicode 8.0.
Also this spreadsheet (referenced in an inline comment in the
source code) has it as RTL: http://goo.gl/x9ilM
2018-01-19 01:19:40 +03:30
Ebrahim Byagowi
00806149b9
Improve avoiding C++ linkage, definition creation and cmake tests ( #710 )
2018-01-19 01:12:31 +03:30
Behdad Esfahbod
461a605fde
[aat] Allocate set dynamically
2018-01-17 10:02:48 -08:00
Behdad Esfahbod
949f6af289
Disallow sanitize recursing into Extension subtables multiple times
...
Fixes https://oss-fuzz.com/v2/testcase-detail/5216838347653120
which is a stack overflow, not by way of infinite recursion, just
being deep. That's disallowed anyway, so catch it as it happens,
not afterwards.
2018-01-15 20:44:10 -05:00
Behdad Esfahbod
bcb6f1ae0a
Whitespace
2018-01-15 20:34:05 -05:00
Behdad Esfahbod
12fffce10e
[aat] Sanitize classTable in StateTable
2018-01-15 15:41:51 -05:00
Behdad Esfahbod
e6263c7142
[aat] Wire up table length to apply()
2018-01-15 15:37:55 -05:00
Behdad Esfahbod
679ae744d0
[aat] Towards implementing LigatureSubtable
2018-01-14 15:03:31 -05:00
Behdad Esfahbod
c9e12a2b9b
Fix set initializer
2018-01-13 17:05:12 +00:00
Behdad Esfahbod
9009b341c4
[aat] Fix some struct sizes
...
I hate it that with my compiler at least, it doesn't catch totally uncompilable
statements in templates if they are not used...
2018-01-12 12:04:53 +01:00
Behdad Esfahbod
57051b4f67
[aat] Flush rest of buffer if state machine failed
2018-01-12 11:42:25 +01:00
Behdad Esfahbod
25364c4f00
[aat] Fix symbol visibility
...
Not sure why only one of the bots sees this as visible...
2018-01-12 11:31:20 +01:00
Behdad Esfahbod
ee16b9d8d3
Revert accidental morx enablement
2018-01-12 11:28:09 +01:00
Behdad Esfahbod
cdfa801ff4
[aat] Tweak previous commit
2018-01-12 11:12:20 +01:00
Behdad Esfahbod
f7600228a4
[aat] Detect infinite-loops in state machine
2018-01-12 11:09:21 +01:00
Behdad Esfahbod
dd38db523a
[aat] Fix more builds
...
Maybe I should disable C++11 detection such that my compiler also catches
these. Doesn't look like we can switch to it for a while anyway...
2018-01-12 09:45:42 +01:00
Behdad Esfahbod
72cb2b1f57
[aat] Fix builds
2018-01-12 09:38:55 +01:00
Ting-Wei Lan
e3a15d0c6d
Update _POSIX_C_SOURCE to the latest version
...
Defining _POSIX_C_SOURCE to an old version on FreeBSD can cause C99 to
be disabled in libc.
2018-01-12 09:19:41 +01:00
Behdad Esfahbod
c70d58f97d
[aat] Port RearrangementSubtable to StateTableDriver
2018-01-12 00:08:22 +01:00
Behdad Esfahbod
117cfe7bb7
[aat] Add StateTableDriver and convert ContextualSubtable to it
2018-01-12 00:01:36 +01:00
Behdad Esfahbod
1f1c85a54a
[aat] Remove 'mort' support
...
It's dead, Jim!
2018-01-11 22:43:57 +01:00
Behdad Esfahbod
7e2fed6d73
[aat] Allow DontAdvance
...
Apparently CoreText does allow these. To be done: detect infinite
loops.
Fixes MORX-12 test.
2018-01-11 19:25:21 +01:00
Behdad Esfahbod
17f01aff91
[aat] Sanitize ContextualSubtable
2018-01-11 18:54:49 +01:00
Behdad Esfahbod
9b82aa19d8
More warning fixes
2018-01-11 18:19:42 +01:00
Behdad Esfahbod
680cbc2eb3
[aat] Sanitize StateTable
2018-01-11 18:15:53 +01:00
Behdad Esfahbod
0e3b3379a0
[aat] Actually fix d887f93148
2018-01-11 18:01:10 +01:00
Behdad Esfahbod
3f291ffd5a
[buffer] Fix compiler warnings
...
line 323: Warning: info hides hb_buffer_t::info
...
2018-01-11 17:57:46 +01:00
Behdad Esfahbod
d887f93148
[aat] Make bots happy
...
Don't know why this is not caught by my compiler. Looks like clang catches it
while gcc doesn't.
In file included from ../src/hb-aat-layout-morx-table.hh:31:
../src/hb-aat-layout-common-private.hh:523:30: error: no member named 'static_size' in 'AAT::ContextualSubtable<AAT::MorxTypes>::EntryData'
DEFINE_SIZE_STATIC (4 + T::static_size);
~~~^
2018-01-11 17:41:34 +01:00
Behdad Esfahbod
f6be730994
[aat] In NoncontextualSubtable, handle MarkLast with end-of-line transition
...
Fixes MORX-11 test.
2018-01-11 15:23:24 +01:00
Behdad Esfahbod
f9be673814
[aat] Implement ContextualSubtable
...
Tested with Zapfino and text "2nd". Sascha will create tests later.
2018-01-11 15:15:36 +01:00
Behdad Esfahbod
335a9c1fe4
[aat] Towards implementing ContextualSubtable
2018-01-11 15:15:36 +01:00
Behdad Esfahbod
62348f647f
[aat] Implement end-of-text in state machine
...
Passes MORX-10 test now.
2018-01-11 15:15:36 +01:00
Behdad Esfahbod
9adbd938fa
Minor
2018-01-11 15:15:36 +01:00
Behdad Esfahbod
94644d7ea4
[aat] Generate finegrained unsafe-to-break in state-machine!
...
Neato.
2018-01-11 11:49:07 +01:00
Behdad Esfahbod
994eb7744c
[buffer] Fix crash
2018-01-11 11:37:12 +01:00
Behdad Esfahbod
7c32e01d04
Minor
2018-01-11 10:47:31 +01:00
Behdad Esfahbod
14b4d84eef
[aat] Fix RearrangementSubtable action
2018-01-11 10:43:30 +01:00
Behdad Esfahbod
800e4ae802
[aat] Mark state-machine-based lookup as completely unsafe-to-break
...
To be improved later.
2018-01-11 10:43:30 +01:00
Behdad Esfahbod
ca42d96129
[aat] Implement RearrangementSubtable
2018-01-11 10:43:30 +01:00
Ebrahim Byagowi
5dbbd0fdb9
Move the #define of _GNU_SOURCE to the top of hb-private.hh ( #697 )
...
This fixes the build on Cygwin.
2018-01-11 12:33:22 +03:30
Behdad Esfahbod
80fd574320
[aat] Add Class subtable thingy
...
From old 'mort' table.
2018-01-10 13:58:41 +01:00
Khaled Hosny
0b22da9541
Improve HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES docs
...
Add the note about absolute glyph positions from the commit message.
2018-01-10 07:12:07 +02:00
Behdad Esfahbod
188ee6e5ee
Calculate anchor positions in float, then round
...
Hoping to reduce rounding error, to make tests happier...
No luck.
2018-01-10 05:13:47 +01:00
Behdad Esfahbod
7cdd6ab068
Round, instead of floor, when applying variations
...
Hoping this would fix remaining text-rendering-tests failures,
but so far no luck.
2018-01-10 04:44:33 +01:00
Behdad Esfahbod
3b1e97f364
Add HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES
...
New API:
HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES
hb-shape / hb-view --remove-default-ignorables
One more text-rendering-tests test passing. Eleven failing.
2018-01-10 03:36:03 +01:00
Behdad Esfahbod
6b19178ee3
Prefix int types with HB
...
Such a headache that Windows defines UINT8, ...; Just prefix it.
2018-01-10 03:07:30 +01:00
Behdad Esfahbod
81e321c802
[aat] Try fixing VC bots
...
c:\projects\harfbuzz\src\hb-aat-layout-common-private.hh(51): error C2872: 'UINT16': ambiguous symbol [C:\projects\harfbuzz\build\harfbuzz.vcxproj]
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\shared\basetsd.h(80): note: could be 'unsigned short UINT16'
c:\projects\harfbuzz\src\hb-open-type-private.hh(648): note: or 'OT::UINT16'
2018-01-10 02:56:29 +01:00
Behdad Esfahbod
0ed69c9462
Disable processing of morx table in ot shaper
...
So I can merge this to master...
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
5f94b4cc39
[kern] Mark unsafe-to-break
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
71fd6325b6
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
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
748b989a1f
[aat/morx] Implement NoncontextualSubtables
...
Also makes hb-ot-shape call morx for now instead of GSUB... Just for testing.
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
4cf3ab1d81
Minor
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
470fe5b603
[aat] Implement Lookup table
...
Untested, but compiles.
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
4646a80a87
Minor
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
7c7cb42d81
[aat] Update previous commits for rebase on master
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
a0175e75bc
[aat] Start implementing common table formats
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
c71b55a223
[aat] Start implementing Apple AAT morx table
2018-01-10 02:50:49 +01:00
Behdad Esfahbod
0473d95e27
[ft] Use FT_Done_MM_Var() if available
2018-01-08 10:07:46 +00:00
Behdad Esfahbod
66d7beff96
[khmer] Relax!
...
Apparently we don't use OT_A either.
2018-01-05 18:10:25 +00:00
Behdad Esfahbod
db0207baff
[khmer] Drop another joiner
2018-01-05 18:06:00 +00:00
Behdad Esfahbod
90affe831f
[khmer] Shuffle
2018-01-05 18:04:56 +00:00
Behdad Esfahbod
65795e3ca2
[khmer] Simplify grammar some more
...
Numbers down (from 38):
KHMER: 299090 out of 299124 tests passed. 34 failed (0.0113665%)
2018-01-05 18:03:00 +00:00
Behdad Esfahbod
e13ee93731
[khmer] Clean
2018-01-05 18:01:01 +00:00
Behdad Esfahbod
a71c7eb2ca
[khmer] Limit number of joiners
2018-01-05 17:59:43 +00:00
Behdad Esfahbod
574e42e1cf
[khmer] Relax number of consonants / matras allowed
...
New numbers (down from 39):
KHMER: 299086 out of 299124 tests passed. 38 failed (0.0127038%)
2018-01-05 17:58:02 +00:00
Behdad Esfahbod
80c870bcda
[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%)
2018-01-05 17:54:52 +00:00
Behdad Esfahbod
9bd486c480
[khmer] Drop some more joiners
2018-01-05 17:47:35 +00:00
Behdad Esfahbod
5278265853
[khmer] Drop some more
2018-01-05 17:46:49 +00:00
Behdad Esfahbod
efefd87f33
[khmer] Drop some more grammar
2018-01-05 17:45:48 +00:00
Behdad Esfahbod
82e6bf8e0c
[khmer] Drop some more from grammar
2018-01-05 17:44:18 +00:00
Behdad Esfahbod
957e8ea8a9
[khmer] Drop final_halant_group
2018-01-05 17:43:31 +00:00
Behdad Esfahbod
bbfdbbdc5e
Minor
2018-01-05 17:34:26 +00:00
Behdad Esfahbod
f6df251521
[indic] Remove unused OT_VD category
2018-01-05 17:27:48 +00:00
Behdad Esfahbod
e6618f3bdf
[khmer] Shave off some more from the grammar
2018-01-05 17:27:42 +00:00
Behdad Esfahbod
014494d5c0
[khmer] Remove unused symbol clusters
2018-01-05 17:18:12 +00:00
Behdad Esfahbod
bbac984b93
Minor
2018-01-05 17:15:31 +00:00
Behdad Esfahbod
185b68946a
[khmer] Remove medials from grammar
2018-01-05 17:14:27 +00:00
Behdad Esfahbod
c265dffdf6
[khmer] Better fix for dangling final Coeng
...
This is how 1471cfee3b
should have
been done.
2018-01-05 17:06:29 +00:00
Behdad Esfahbod
e3fdf1fc2f
[khmer] Remove reph/repha support from grammar
2018-01-05 17:05:53 +00:00
Behdad Esfahbod
0d3a274de1
[khmer] Remove forced_rakar from grammar
...
Used by Sinhala only.
2018-01-05 17:01:37 +00:00
Behdad Esfahbod
1471cfee3b
[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%)
2018-01-05 16:34:20 +00:00
Behdad Esfahbod
9eaf077ded
[khmer] Remove some more unused code
2018-01-05 16:28:00 +00:00
Behdad Esfahbod
bfad6ab897
[khmer] Remove features not used by Khmer
2018-01-05 16:13:09 +00:00
Behdad Esfahbod
92a99ce084
[khmer] Remove rphf feature
2018-01-05 16:08:44 +00:00
Behdad Esfahbod
238b90e77c
[khmer] Remove non-Khmer matra positioning code
2018-01-05 16:06:53 +00:00
Behdad Esfahbod
f8553c898a
[khmer] Remove indic_config_t
2018-01-05 16:04:02 +00:00
Behdad Esfahbod
a119a8bce5
[khmer] Remove indic_config->reph_mode
2018-01-05 16:02:55 +00:00
Behdad Esfahbod
c135324af1
[khmer] Remove indic_config->reph_pos
2018-01-05 16:02:55 +00:00
Behdad Esfahbod
ffcd6c7efd
[khmer] Remove indic_config->base_pos
2018-01-05 15:50:05 +00:00
Behdad Esfahbod
0c91638d48
[khmer] Remove other scripts
2018-01-05 15:45:30 +00:00
Behdad Esfahbod
4c0199c573
[khmer] Remove indic_config->script
2018-01-05 15:43:48 +00:00
Behdad Esfahbod
9b135d9524
[khmer] Remove indic_config->virama
2018-01-05 15:43:11 +00:00
Behdad Esfahbod
7eb3ac29d3
[khmer] Remove indic_config->has_old_spec
2018-01-05 15:41:31 +00:00
Behdad Esfahbod
961ebf85f1
[khmer] Remove Halant from Khmer shaper
2018-01-05 15:36:53 +00:00
Behdad Esfahbod
9761f9d782
[indic] Remove more Khmer-specific stuff from Indic shaper
...
No numbers changed.
2018-01-05 15:33:11 +00:00
Behdad Esfahbod
0758953644
[indic] Remove main Khmer stuff
2018-01-05 15:08:28 +00:00
Behdad Esfahbod
dcf4d95fea
[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%)
2018-01-05 14:54:31 +00:00
Behdad Esfahbod
1e05ea79d0
[ot] Short-circuit base instance advance variation
2018-01-05 14:01:37 +00:00
Behdad Esfahbod
54b2b93722
[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
2018-01-05 13:20:21 +00:00
Behdad Esfahbod
a3afdd1e08
Minor
2018-01-05 13:17:02 +00:00
Behdad Esfahbod
cb43bdbc2f
[ft] If there's no variations set, don't set them on hb-font
2018-01-05 13:06:25 +00:00
Behdad Esfahbod
127bcc6ece
Merge remote-tracking branch 'fdo/master'
2018-01-05 12:50:22 +00:00
Behdad Esfahbod
8c0d1916a4
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
2018-01-05 12:48:19 +00:00
Ebrahim Byagowi
72bec1cd09
Improve tests ( #679 )
2018-01-05 12:42:20 +03:30
Behdad Esfahbod
293e443529
Minor
2018-01-04 16:06:25 +00:00
Bruce Mitchener
8a0952db7e
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.
2018-01-04 15:10:10 +03:30
Ebrahim Byagowi
5ed26fc5bd
[cmake] Run src/ tests ( #675 )
2018-01-04 10:11:34 +03:30
Behdad Esfahbod
f8daeef4c4
[use] Simplify more
2018-01-03 14:27:34 +00:00
Behdad Esfahbod
877d15e73c
[use] Simplify
...
Fixes https://github.com/harfbuzz/harfbuzz/pull/661
2018-01-03 14:24:44 +00:00
Behdad Esfahbod
308f419215
[use] Fix Brahmi Number Joiner 1107F
...
Fixes https://github.com/harfbuzz/harfbuzz/pull/660
2018-01-03 14:22:07 +00:00
Bruce Mitchener
85ec6d3443
Fix typos.
2018-01-02 13:26:44 -05:00
David Corbett
7bfdf1a941
Forbid Batak killers after vowel signs
2017-12-24 14:21:22 -08:00
Behdad Esfahbod
72ecaae0ad
[use] Allow ZWJ before/after Halant
...
https://github.com/harfbuzz/harfbuzz/issues/542#issuecomment-353169729
2017-12-24 16:05:07 -05:00
Behdad Esfahbod
bc92245b68
Minor
2017-12-24 15:54:58 -05:00
Volker H. Simonis
a9432bde7e
HarfBuzz 1.7.1 and later don't compile on AIX with xlC ( #655 )
2017-12-19 20:22:24 -05:00
Behdad Esfahbod
2fe5f885b6
[set] Handle nil set in add_range() / add_sorted_array()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/657
2017-12-19 14:48:26 -05:00
Behdad Esfahbod
1245395a60
[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.
2017-12-17 12:33:08 -05:00
Behdad Esfahbod
493a005d95
[set] In add_sorted_array(), bail if data is not sorted
2017-12-16 11:49:39 -05:00
Behdad Esfahbod
a7bd6d7a4c
[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
2017-12-16 11:39:32 -05:00
Behdad Esfahbod
1ce7d6e215
[set] Optimize add_array() / add_sorted_array()
...
Does page lookup as needed.
2017-12-16 11:39:11 -05:00
Behdad Esfahbod
71e6adf1e2
[collect_glyphs] handle ClassDef better
2017-12-16 11:07:37 -05:00
Behdad Esfahbod
87cc5a65cb
[collect_glyphs] In PairPosFornat2 do not collect classDef1
...
The coverage already covered that.
2017-12-16 06:18:07 -08:00
Behdad Esfahbod
81f27df4d9
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...
2017-12-16 06:12:06 -08:00
Behdad Esfahbod
5d02572034
[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
2017-12-14 19:35:47 -08:00
Behdad Esfahbod
9d6511a734
[set] Reduce number of preallocated pages from 8 to 1
...
Now that pagesize is 8192, this feels better.
2017-12-14 19:07:17 -08:00
Behdad Esfahbod
ae2e2b068e
Fix partial tracing debug builds
2017-12-14 19:07:17 -08:00
Behdad Esfahbod
9daa88cd79
Minor
2017-12-14 19:07:17 -08:00
Behdad Esfahbod
f424a34223
[set] Change pagesize from 512 bits to 8192 bits
...
Fixes perf regression on some heavy fonts in Chrome's FT+HB
interaction.
See:
https://bugs.chromium.org/p/chromium/issues/detail?id=782220
More work to be done:
https://bugs.chromium.org/p/chromium/issues/detail?id=794896
2017-12-14 13:30:38 -08:00