Commit Graph

9723 Commits

Author SHA1 Message Date
Khaled Hosny
0954c8f7a0 [ft] Prefer symbol cmap subtable if found (#1948)
Similar to commit d304d60e4d for ot-font.
2019-09-01 10:09:07 -05:00
Ebrahim Byagowi
4375858792
[editorconfig] Treat Ragel files also as C sources 2019-09-01 15:13:05 +04:30
Ebrahim Byagowi
d80a3ea983
[cff] Implement in-house power of 10
A minimal power only for natural numbers exponents of ten, for portability.

Found the idea in Tcl/Tk but wrote it myself after weeks and it turned out
being a different implementation, reverse direction, constexpr, etc.
2019-09-01 14:05:16 +04:30
Ebrahim Byagowi
f441a7c008 Don't allow reference blob be accessed using empty tag in hb_face_reference_table (#1947) 2019-08-31 16:48:09 -05:00
Behdad Esfahbod
c9eb913f4c [iter] Simplify hb_chop() 2019-08-31 15:21:02 -05:00
Behdad Esfahbod
67ec9fa9e4 [iter] Add hb_chop() 2019-08-31 14:51:49 -05:00
Behdad Esfahbod
5828d8e83c [iter] Add hb_take() specialization for arrays 2019-08-31 14:36:44 -05:00
Behdad Esfahbod
398b296f3b [iter] Add hb_len() 2019-08-31 12:44:24 -05:00
Behdad Esfahbod
875131d478 [iter] Add hb_take() 2019-08-31 12:42:52 -05:00
Behdad Esfahbod
1f88dae9f5 [iter] Make iota() accept invokable for increasing to next item 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
3bc86fb237 [algs] Fix hb_inc/dec signature 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
b1378d8a21 [iter] Add hb_repeat() 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
966a18b92a [iter] Remove some && 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
de45775c37 [iter] Use hb_ridentity instead of lazy + 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
ce4d63beec [iter] Separate hb_iota implementation from hb_range 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
814dc3cbe5 [iter] Rename
Moving towards making iota useful for non-integers.
2019-08-31 12:24:56 -05:00
Behdad Esfahbod
2d5643aed4 [algs] Add hb_inc() and hb_dec()) 2019-08-31 12:24:56 -05:00
Behdad Esfahbod
7eafe94705 Revert "[array] Add chop()"
This reverts commit 545fe9d9f0.

Breaks gcc 4.8 and MSVC all versions.

Will add hb_chop() that works on all iterators instead.
2019-08-31 12:24:56 -05:00
Ebrahim Byagowi
28c8dcb53f
[subset] minor 2019-08-31 12:27:14 +04:30
Behdad Esfahbod
545fe9d9f0 [array] Add chop()
Takes n, and returns iterator of iterators that contain up to
n items each.  Basically cuts the array into subarrays of size n.
The last sub-array might contain fewer.

Ideally this should become a generic iter tool, not array-specific,
so we can use it in GPOS to chop a value matrix into rows and elements.
2019-08-29 15:48:21 -07:00
Behdad Esfahbod
c72589f13f [iter] Change item_size to get_item_size()
By moving access to hb_static_size(Type) into a function instead of
a class-const, we can refer to iter types of incomplete types, which
come handy when a method of hb_array_t wants to return iterator
of hb_array_t.  That kind of stuff.   Next commit needs this to
build on clang...
2019-08-29 15:45:21 -07:00
Behdad Esfahbod
d58e248df6 [array] Add truncate() method 2019-08-29 15:23:48 -07:00
Behdad Esfahbod
a06edf1430 [array] Use injected class name more 2019-08-29 15:21:18 -07:00
Behdad Esfahbod
e0e0c8c109 Minor 2019-08-29 14:58:16 -07:00
qxliu76
0313ef86e3 bug fix in optimizing coverage table format (#1942)
We are comparing number of shorts, NOT number of bytes.
2019-08-29 14:09:05 -07:00
Behdad Esfahbod
38f95baf6b [subset] in SingleSubst subsetting, check for substitute in glyphset
That matches what fonttools does and allows for specifying exact
glyphset for subset.
2019-08-29 13:40:46 -07:00
Ebrahim Byagowi
499029644f
[gsub] Fix clang's semicolon complains 2019-08-29 15:09:39 +04:30
Ebrahim Byagowi
28620310b8
[test] Avoid alloca use as clang complain
Fixes https://circleci.com/gh/harfbuzz/harfbuzz/108171 complain
2019-08-29 14:55:54 +04:30
Ebrahim Byagowi
875985cd48
[subset] Don't allow malicious fonts to insert unlimited table headers
Fixes https://crbug.com/oss-fuzz/16810
2019-08-29 14:51:22 +04:30
Behdad Esfahbod
dc9222b1dd [subset] Implement AlternateSubst subsetting 2019-08-28 15:38:46 -07:00
Behdad Esfahbod
23681b6da4 Minor 2019-08-28 15:30:37 -07:00
Behdad Esfahbod
33c8e2303c [subset] Implement MultipleSubst subsetting 2019-08-28 15:25:55 -07:00
Behdad Esfahbod
5c43a7ba7e [GSUB] Use dagger in Ligature::intersects() 2019-08-28 15:10:38 -07:00
Behdad Esfahbod
b8c642c1f5 Minor 2019-08-28 15:06:45 -07:00
Behdad Esfahbod
dc2c9aa0c3 Rename 2019-08-28 15:05:49 -07:00
Behdad Esfahbod
bc5ef765a8 [subset] Subset ligature substitutes!
Test with:

$ ./hb-subset -o out.ttf NotoSansArabic-Regular.ttf --drop-tables=  سلام && ./hb-view out.ttf سلام
2019-08-28 14:52:13 -07:00
Behdad Esfahbod
42d887bd22 Beef up HeadlessArrayOf<>
Should be merged with ArrayOf...
https://github.com/harfbuzz/harfbuzz/issues/1937
2019-08-28 14:47:14 -07:00
Behdad Esfahbod
3ca809e362 Add ArrayOf::pop() 2019-08-28 13:49:35 -07:00
Behdad Esfahbod
307bd6d79f Add arithmetic operators to IntType<> 2019-08-28 13:49:17 -07:00
Behdad Esfahbod
2e1d00c85b [debug] Minor 2019-08-28 13:49:04 -07:00
Behdad Esfahbod
062cad5e28 Add ArrayOf::serialize_append 2019-08-28 13:48:55 -07:00
Adrian Wong
b66076812d Adjustments to the generated Indic table output (#1936)
* Add empty parentheses after print call

* Minor: newlines. Move #pragma pop down one; #endif up one

* Adjust #define ISC/IMC output

* Regenerate Indic table
2019-08-28 04:31:27 -07:00
Ebrahim Byagowi
4ef08dbce1 Use hb_bytes_t as<T> in hb_blob_t 2019-08-27 17:38:09 +04:30
Ebrahim Byagowi
dce42cef2b [glyf] Move GlyphHeader::from_bytes to hb_bytes_t, introduce .as<T> () 2019-08-27 17:38:09 +04:30
Ebrahim Byagowi
6e82d59b4f
[glyf] Revert the way indexToLocFormat is set 2019-08-27 12:33:42 +04:30
Ebrahim Byagowi
88e9db19d2
[subset] Remove subset table size assertion
As https://github.com/harfbuzz/harfbuzz/pull/1930#issuecomment-525036802
2019-08-27 02:44:26 +04:30
Ebrahim Byagowi
a0b4ac4dce Turn 8 spaces to tab across the project
According to the current code style of the project
2019-08-27 02:40:41 +04:30
Ebrahim Byagowi
269a120f13
[subset] Raise the bar in new vs old table size
https://crbug.com/oss-fuzz/16740

This is actually an interesting thing that {h,v}mtx allocates as
much as a font pretends to have glyphs but the solution is not
that obvious as regular fonts can have less than actually containing
metrics in their {h,v}mtx. This change raises the bar to consider this
hmtx 4 byte for every glyph case.

Initially we wanted to just find things allocating crazy amount of
memory but having the assert has led to interesting findings also
so let's don't remove the assert and see what we can find elsewhere.
2019-08-25 20:37:00 +04:30
Ebrahim Byagowi
2f8e823331
[glyf] minor 2019-08-25 12:37:40 +04:30
Ebrahim Byagowi
07e467a30e [glyf] Move GlyphHeader size checking to a static method 2019-08-25 01:10:37 +04:30