Behdad Esfahbod
dc9bd29fea
[CBDT] Implement Format18 get_extens
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1327
2018-10-30 13:16:07 -07:00
Behdad Esfahbod
a2a7422aaf
[CBDT] Bound checks in reference_png
2018-10-30 13:14:56 -07:00
Khaled Hosny
0af3d176a6
[sbix] Fix memory leak in early return
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11210
2018-10-30 17:05:28 +02:00
Behdad Esfahbod
138f9e0f25
Minor
2018-10-30 01:31:13 -07:00
Ebrahim Byagowi
f7a08cd41d
Fix extra semicolon issues and test that on CI ( #1330 )
2018-10-30 11:29:09 +03:30
Behdad Esfahbod
7e998d193a
Fix spurious warning re uninitialized use
2018-10-30 00:52:22 -07:00
Behdad Esfahbod
b186274362
[set/map] Fix uninitialized memory
...
I keep forgetting that primitive types are NOT initialized during construction. :|
2018-10-29 23:21:14 -07:00
Behdad Esfahbod
4ef671f25f
[unicode] Fix a long-standing double-declaration warning
2018-10-29 22:46:19 -07:00
Behdad Esfahbod
166ae8b0aa
Remove now unused hb_auto_t<>
2018-10-29 22:40:37 -07:00
Behdad Esfahbod
56e0fd345c
Remove last use of hb_auto_t<>
2018-10-29 22:35:44 -07:00
Behdad Esfahbod
ca5e5a4979
Port Coverage::Iter off hb_auto_t<>
2018-10-29 22:30:21 -07:00
Behdad Esfahbod
3a4e5dd425
Remove a few unnecessary hb_auto_t<>'s
...
See a85641446c30247c4e948263f0f8c1147ed4efb9
2018-10-29 22:27:20 -07:00
Behdad Esfahbod
67a22f377d
[set/map/vector] Make constructable, but not copy or assignable
...
Disable copy/assign on them, as they shouldn't.
Make constructor / destructor call init_shallow/fini_shallow,
and make those idempotent. So, these three can be constructed
on stack now and no init/fini call is needed. As such,
hb_auto_t<> is not needed anymore. I'll remove that separately.
2018-10-29 22:23:22 -07:00
Behdad Esfahbod
ea0e51d1b1
Add HB_NO_CREATE_COPY_ASSIGN
2018-10-29 16:00:23 -07:00
Behdad Esfahbod
5b563640b2
Remove HB_DISALLOW_COPY_AND_ASSIGN from hb_ot_shape_planner_t
...
It was arbitrary that this struct had it and not dozens of others.
2018-10-29 15:58:44 -07:00
Behdad Esfahbod
14b353c185
One more iteration
2018-10-29 15:29:13 -07:00
Behdad Esfahbod
c7c5df9ffd
Try fixing older bots
...
Older C++ doesn't allow struct-with-constructor in union.
2018-10-29 15:16:52 -07:00
Behdad Esfahbod
be87959a67
[cmap] Minor
2018-10-29 15:16:38 -07:00
Behdad Esfahbod
35d410f2ba
Remove ASSERT_POD
...
Newer compilers / language allows structs with constructor in union.
So, this was not actually testing anything. Indeed, the recent
change in DISALLOW_COPY *is* making some of our types non-POD.
That broke some bots.
Just remove this since it wasn't doing much, and I'd rather have
DISALLOW_COPY.
2018-10-29 14:45:44 -07:00
Behdad Esfahbod
6f0454e176
Fix extra-semicolon warnings
2018-10-29 13:51:15 -07:00
Behdad Esfahbod
a256a92b3f
Make Array types uncopyable-unassignable
...
Finally! Catches hard-to-find errors like this:
- const SortedArrayOf<SVGDocumentIndexEntry> docs = this+svgDocEntries;
+ const SortedArrayOf<SVGDocumentIndexEntry> &docs = this+svgDocEntries;
We implement this for our array types. This, in turn, trickles down
into all types that embed the arrays. So, as long as we define all
open-ended structs in terms of Array types (all can be done using
UnsizedArrayOf), this achieves the goal of making uncopyable all
structs that are variable-sized. Yay!
2018-10-29 11:40:21 -07:00
Behdad Esfahbod
31cc1f74b7
[svg] Minor
2018-10-29 11:14:37 -07:00
Behdad Esfahbod
1366bb9760
Fix g-i warnings
2018-10-29 11:01:25 -07:00
Ebrahim Byagowi
ae802c2c6e
[test-ot-color] Minor
2018-10-29 13:42:14 +03:30
Ebrahim Byagowi
7170e35096
Rename deprecated symbols list file name and clean it up ( #1328 )
2018-10-29 13:11:01 +03:30
Ebrahim Byagowi
9c692e5b8d
[test-ot-color] Use public APIs on the tool
2018-10-29 12:22:39 +03:30
Ebrahim Byagowi
fb525f8943
Rename dump-emoji to test-ot-color
2018-10-29 11:40:06 +03:30
Ebrahim Byagowi
81bcf47e9e
Revive dump-emoji
2018-10-29 11:40:06 +03:30
Ebrahim Byagowi
f10252b4b6
[svg] Fix incorrect array referencing
2018-10-29 10:29:58 +03:30
Behdad Esfahbod
5eb251aab0
[cbdt] Implement strike selection logic
2018-10-28 23:16:13 -07:00
Behdad Esfahbod
98bddbc8ef
[sbix] Minor
2018-10-28 23:14:15 -07:00
Behdad Esfahbod
8cffee0577
[cbdt] Simplify more
2018-10-28 23:07:59 -07:00
Behdad Esfahbod
574579d376
[color] Rename get_strike() to choose_strike()
2018-10-28 23:04:37 -07:00
Behdad Esfahbod
e2ba96da4c
[cbdt] Refactor get_strike()
2018-10-28 23:01:57 -07:00
Behdad Esfahbod
6983cca9c8
[cbdt] Minor
2018-10-28 22:46:18 -07:00
Behdad Esfahbod
e998fb9fbf
[color] Round extents when scaling
2018-10-28 22:45:53 -07:00
Ebrahim Byagowi
c929ccfcea
[ot-color/png] Consider strike ppem on scaling
2018-10-28 22:40:40 -07:00
Behdad Esfahbod
a8c9facf7a
[svg] Cosmetic
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
9c1460e568
[svg] Use SortedArrayOf.bsearch
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
18dd6363a5
[svg] Minor
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
4876c938a2
[sbix] Comment
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
519fca1014
[color] Minor
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
e8ff27c208
Minor
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
6562172381
[sbix] Use LOffsetLArrayOf<>
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
a3ddd8067f
[sbix] Add get_strike
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
95524ed9bc
[sbix] Remove sbix_len
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
69e9846452
[sbix] Fix get_glyph_blob() on Null object
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
4e0ee2af09
[sbix] Simplify ppem access
...
If struct members are simple and needed publicly, we make them public.
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
6ac9a4eaa3
[sbix] Simplify glyph_length calc
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
0730d62385
[sbix] Check glyph data end is in range
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
b76dc03108
[sbix] Reduce code
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
50fb02a219
[sbix] Check glyph id before looking into unsafe array
...
That 'Z' at end of imageOffsetsZ is a reminder that you should check...
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
a8cb9c73da
[sbix] Simplify 'dupe' handling logic
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
d7eb534e59
[sbix] Check offsets before proceeding
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
c8380bd3e4
[color] Remove more dump-emoji cruft
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
68f2c832c8
Remove dump-emoji
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
b46de42b3a
[sbix] Fix order of parameters
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
a91cda72ab
[sbix] Remove redundant parameter
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
c712005f55
[sbix] Add get_strike()
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
400bc3f030
[sbix] Remove a couple of extra checks
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
3770282c83
[sbix] Rename sbix_table to table in accelerator
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
7346841807
[cbdt] Rename reference_blob_for_glyph() to reference_png()
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
1f33b8525d
[sbix] Rename ugly reference_blob_for_glyph() to reference_png()
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
946b534419
[sbix] Fix uninitialized variables
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
01c7d53fb7
[sbix] Select best strike based on ppem
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
f9f26bff4c
[sbix] Move code around. Add get_extents()
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
48bc3039cb
[sbix] Check blob length against PNG header leangth
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
d3ec31a57c
[ot-color] More on PNGHeader fields
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
35fa3d3260
[ot-color] Apply Behdad comment
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
307d61867a
[ot-color] Make PNGHeader reading actually work
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
632e9af862
[ot-color] Implement PNGHeader and test it, it doesn't work however
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
38706a0746
[ot-color] Preparation for setting PNG width/height in extents
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
d6d6f3bc22
[docs] Add comment
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
3d4c1f6a41
[ot-color] Apply Behdad reviews
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
8ef0d2ef92
[ot-color] Apply Behdad comment
2018-10-28 18:33:10 -07:00
Ebrahim Byagowi
dbd419bede
[ot-color] Add public API for CBDT/sbix/SVG color Emojis
2018-10-28 18:33:10 -07:00
Behdad Esfahbod
6ce49a921a
[name] Change hb_name_id_t back to unsigned int
...
d941f66c75 (commitcomment-31076011)
2018-10-28 08:26:30 -07:00
Behdad Esfahbod
a4f4f5ba5f
[docs] Fix titles here as well
2018-10-28 08:23:36 -07:00
Behdad Esfahbod
213b6dd335
[name] Make sure hb_name_id_t is int-sized
...
d941f66c75 (commitcomment-31068905)
2018-10-27 18:36:24 -07:00
Behdad Esfahbod
1d40d72f29
[docs] Hook up hb-var
2018-10-27 05:01:01 -07:00
Behdad Esfahbod
80d9a427cf
[docs] Document remaining sections
2018-10-27 04:58:32 -07:00
Behdad Esfahbod
cf5fa57f00
[docs] Change section titles again
...
I think I like the uniform "hb-*" more.
2018-10-27 04:51:42 -07:00
Behdad Esfahbod
04981ee05d
[docs] More
2018-10-27 04:47:41 -07:00
Behdad Esfahbod
5dd86aa33b
[docs] Rename section titles to object names
...
More useful.
2018-10-27 04:47:41 -07:00
Behdad Esfahbod
524fb70216
[docs] More
2018-10-27 04:47:41 -07:00
Behdad Esfahbod
46072b7cb5
[ot] Fold hb-ot-tag.h into hb-ot-layout.h
2018-10-27 04:47:41 -07:00
Behdad Esfahbod
00cf4e5eb6
[docs] Fill in some sections
2018-10-27 04:47:41 -07:00
Behdad Esfahbod
55a19d73b4
Move HB_EXTERN
2018-10-27 04:47:41 -07:00
Ebrahim Byagowi
524e854c15
Merge pull request #1318 from ebraminio/png
...
Add a non-hooked _png _svg get emoji blob
2018-10-27 15:04:43 +03:30
Ebrahim Byagowi
8180c37df0
[ot-color] Remove _png and _svg public APIs
2018-10-27 14:54:08 +03:30
Ebrahim Byagowi
9aa6279a2d
[ot-color/png] Try to get image blob from sbix first options.aat is set
2018-10-27 14:24:58 +03:30
Ebrahim Byagowi
b42661ee91
[ot-color] Add some documentation
2018-10-27 14:15:38 +03:30
Behdad Esfahbod
4ee3c8272c
[docs] Fix hb_name_id_t
...
Yep, was not recognized without this patch!
2018-10-27 03:18:45 -07:00
Ebrahim Byagowi
9435fb24da
[ot-color/png] Implement CBDT part
2018-10-27 13:47:11 +03:30
Behdad Esfahbod
d941f66c75
[name] Make hb_name_id_t be the enum
...
This is like hb_script_t.
We had this exposed as unsigned int since 2.0.0 release in two APIs,
as well as hb_ot_layout_get_size_params() from earlier.
But since no one uses those (right?!), let's just fix this now.
2018-10-27 03:06:14 -07:00
Behdad Esfahbod
40496a54a0
[name] Move HB_NAME_ID_INVALID into the enum
...
Don't know how to document anonymous enum members.
2018-10-27 03:06:14 -07:00
Behdad Esfahbod
a8a55b9f89
[name] Move around
2018-10-27 03:06:14 -07:00
Behdad Esfahbod
3b7e5f1313
[name] Rename hb_ot_name_get_names() to hb_ot_name_list_names()
...
And swap return value positions, so can be annotated for gobject-introspectin.
2018-10-27 03:06:14 -07:00
Behdad Esfahbod
4025ad8043
Document new API
2018-10-27 03:06:14 -07:00
Ebrahim Byagowi
5e2a52f71a
[sbix] Remove dump method from sbix accelerator
2018-10-27 12:44:33 +03:30
Ebrahim Byagowi
0353ac6cde
Fix test-name-table on older bots
2018-10-27 12:24:53 +03:30
Ebrahim Byagowi
dc11a38107
[sbix] Set num_glyphs on accelerator
...
dump-emoji was broken without it
2018-10-27 12:15:25 +03:30
Ebrahim Byagowi
6a38fd68a8
[ot-color/png] sbix runtime memory check
2018-10-27 11:17:27 +03:30
Behdad Esfahbod
ca645accb9
Comment
2018-10-27 00:39:31 -07:00
Ebrahim Byagowi
265ad408ca
[ot-color/png] Implement sbix part
2018-10-27 10:43:46 +03:30
Behdad Esfahbod
7f5941e162
Remove stale comment
...
Ugliness was fixed in 30eab97a00
But yeah, my smell detector was working. Ugliness was buggy.
2018-10-27 00:06:48 -07:00
Behdad Esfahbod
e7400c0275
[docs] Hook up new symbols
2018-10-26 22:24:40 -07:00
Behdad Esfahbod
6aa019c4af
[morx] Fix merge_cluster to end at last ligature component
...
Don't assume current position was a component in the ligature.
2018-10-26 22:02:17 -07:00
Behdad Esfahbod
00ae4be6bf
[morx] Fix bailing out ligation at end-of-text
...
Check was after a move_to, which wouldn't work.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11147
2018-10-26 21:59:20 -07:00
Behdad Esfahbod
30eab97a00
Fix invalid memory read
...
Buffer might be relocated inside replace_glyphs().
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=895117
2018-10-26 21:54:40 -07:00
Behdad Esfahbod
79b2fa62ca
[indic] Fix infinite loop
...
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=863044
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
39bd07aed5
Fix bunch of unused parameter warnings
...
Show up with gcc -O0.
There's a few more but those are functions that need to be filled in.
Maybe this is a lost battle...
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
b2e1ec374c
[subset] Fix warning
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
337ea0b717
[fuzzing] Remove HB_NDEBUG
...
Not sure why it ever was added.
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
c965eeadbc
[name] Default to "en" if language is not specified
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
3fd6e5dbef
[name] Add pre-defined nameIDs
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
20d0171d20
[name] Fill out most missing language codes
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
622b014faf
[name] Skip enumerating names with unknown language
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
2c39f359e4
[utf] Remove unused typedef
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
ce81c74298
[utf] Fix ASCII
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
327546e633
[name] Hook up ltag table
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
dc9a5f88b4
[name] Do record sanitization at run-time
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
a53d301b1c
[name] Minor
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
c442fd9a10
[name] Add src/test-name-table tool to show all font names
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
7007bd9dff
[name] Rebuild language list, include missing entries
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
68f172101c
[name] Fix cmp for invalid language
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
888a65615c
[name] Fix nul-termination bug
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
9b532e2ed4
[name] Add language mapping
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
e2f9b65775
[name] Start adding language support
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
6db6bbe64b
[name] Remove unused cmp function
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
4668a05006
[name] Hook things up
...
Accept Mac Latin name entries as ASCII as well.
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
69f5da0629
[name] More
...
It assumes all names are encoded in UTF16-BE. Other than that, and not
listing languages correctly, it's *supposed* to work.
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
64334aff8c
[name] Fix check
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
5531bd068e
[name] Flesh out UTF-X to UTF-X conversion routines
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
84811a06a2
[name] Fix for rebase changes to hb_array_t
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
1046b1938b
[name] Some more
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
b4d4d1ea78
[name] Return full string length from API
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
8d304ef7f9
[utf] Add UTF16-BE and UTF32-BE
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
a826a8730f
[name] Hide internal details from public API
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
e7c595a9f0
[name] More
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
75cd8c86bd
[name] Add hb_ot_name_get_utf()
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
c783d36324
[name] Pre-allocate array
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
c2aa409537
[name] Start implementing hb_ot_name_get_utf16()
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
740cde8991
[name] Implement hb_bytes_t get_name()
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
c3425f2401
[name] Add hb-ot-name.cc for realz
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
90420ed8cb
[name] Implement hb_ot_name_get_names()
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
9a6c87c17d
[name] Finish accelerator sorting
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
2157e56b34
[name] Start implementing public API infrastructure
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
0bf93ec0fb
[name] Add public API declarations
2018-10-26 21:22:26 -07:00
Behdad Esfahbod
982c2f4a65
[indic/khmer/myanmar/use] Clarify clear_syllable
...
No logic change.
2018-10-26 15:40:45 -07:00
Ebrahim Byagowi
30f18039b3
[svg] Rename _svg_create_blob to _glyph_reference_blob_svg
2018-10-26 09:34:34 +03:30
Ebrahim Byagowi
5cb1ce8681
[svg] Collapse SVGDocumentIndex into SVG
2018-10-26 09:31:01 +03:30
Ebrahim Byagowi
4ceabb8c21
[svg] Hide start_glyph and end_glyph from API
2018-10-26 09:16:44 +03:30
Ebrahim Byagowi
c7a4e3dfb5
[svg] Add public API
...
* hb_ot_color_has_svg
* hb_ot_color_glyph_svg_create_blob
2018-10-26 09:16:44 +03:30
Behdad Esfahbod
e98af6d1ed
[layout] Try to speed up collect_lookups some more
...
Barely made a dent :(.
2018-10-25 22:25:29 -07:00
Behdad Esfahbod
eb44bfc864
[layout] Memoize collect_features
...
Fixes https://github.com/harfbuzz/harfbuzz/pull/1317
Fixes https://oss-fuzz.com/v2/testcase-detail/6543700493598720
2018-10-25 22:15:11 -07:00
Behdad Esfahbod
84098b1639
[layout] Remove unintentionally added code
2018-10-25 21:33:12 -07:00
Behdad Esfahbod
941600a9e0
[layout] Add hb_collect_features_context_t
...
Towards https://github.com/harfbuzz/harfbuzz/pull/1317
2018-10-25 21:26:56 -07:00
Behdad Esfahbod
c237cdfcc7
[lookup] Fold another function inline
2018-10-25 21:17:30 -07:00
Behdad Esfahbod
fe5520ddea
[layout] More prep work to memoize collect_features() work
2018-10-25 21:14:32 -07:00
Behdad Esfahbod
e8e67503ff
[lookup] More prep work for memoizing collect_features
...
https://github.com/harfbuzz/harfbuzz/pull/1317
2018-10-25 20:48:20 -07:00
Behdad Esfahbod
96828b97a8
[layout] Minor
...
We were returning the accelerator's lookup count. Returns table's.
They are the same except for OOM cases. Just shorter code.
2018-10-25 20:34:29 -07:00
Behdad Esfahbod
73449cd213
[layout] Fold one function inline
...
Preparation for fixing https://github.com/harfbuzz/harfbuzz/pull/1317
2018-10-25 20:32:05 -07:00
Behdad Esfahbod
ba5ca6a762
[morx] Use deleted-glyph, instead of actual deletion, in Ligation
...
Closer to what CoreText does.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1302
2018-10-25 17:46:07 -07:00
Behdad Esfahbod
5c272e3613
[morx] Remove deleted-glyph at the end of processing
2018-10-25 17:39:54 -07:00
Behdad Esfahbod
1bb8ed86d6
[aat] Minor
2018-10-25 17:33:48 -07:00
Behdad Esfahbod
102af615f1
[aat] Start adding support for DELETED-GLYPH
...
https://github.com/harfbuzz/harfbuzz/issues/1302
2018-10-25 17:29:32 -07:00
Behdad Esfahbod
955aa56b11
[vector] Make it act more like pointer
...
Add pointer cast operator and plus operator.
2018-10-25 16:50:38 -07:00
Behdad Esfahbod
8d55e2adef
[set] Minor
2018-10-25 16:37:53 -07:00
Behdad Esfahbod
64c32edfe1
[set] Make array access more explicit
...
Follow up on 94e421abbf
2018-10-25 16:35:36 -07:00
Behdad Esfahbod
21ede867df
Fix possible overflow in bsearch impls
...
From bungeman.
Fixes https://github.com/harfbuzz/harfbuzz/pull/1314
2018-10-25 13:19:58 -07:00
Ben Wagner
94e421abbf
Remove some use of Crap in hb-set.
...
When hb_set_t::page_for_insert needs to insert at the end of the page_map
it ends up evaluating '&page_map[i + 1]' which has hb_vector return an
lvalue of a Crap so that nothing can be moved to its address. This turns
into issues with ThreadSanitizer on Crap when two threads modify different
hb_set_t instances. This can be avoided by using '&page_map[i] + 1'
instead.
2018-10-25 11:42:20 -07:00
Behdad Esfahbod
ae9e8f292b
[vowel-constraints] Reset continuation on all dottedcircles
...
One of the was missed before. Not intentional.
2018-10-24 16:55:20 -07:00
Behdad Esfahbod
401cdf0792
[ot-font] Fix sign of ascent/descent
...
Some fonts, like msmincho, have positive number as descent
in vhea table. That's wrong. Just enforce sign on ascent/descent
when reading both horizontal and vertical metrics.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1248
2018-10-23 17:00:49 -07:00
Behdad Esfahbod
ba502dea1e
[morx] Fix cluster-merging when ligating
...
Only merge when actual ligature happened.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1305
2018-10-23 16:50:31 -07:00
Garret Rieger
aa5af8d041
Fix size calculation in DEFINE_SIZE_ARRAY_SIZED.
2018-10-23 16:04:21 -07:00
Behdad Esfahbod
f33ad6d692
[aat] Fix up previous commit and add files
2018-10-23 14:31:51 -07:00
Behdad Esfahbod
ffe3478448
[aat] Allow enabling/disabling features
...
Only works at entire-buffer range, not sub-ranges.
Test with:
$ hb-shape Zapfino.dfont Zapfino
[Z_a_p_f_i_n_o=0+2333]
$ hb-shape Zapfino.dfont Zapfino --features=-dlig
[Z=0+416|a=1@-21,0+264|p_f=2+433|i=4+181|n=5+261|o=6+250]
$ hb-shape Zapfino.dfont Zapfino --features=+dlig
[Z_a_p_f_i_n_o=0+2333]
Fixes https://github.com/harfbuzz/harfbuzz/issues/1303
2018-10-23 14:14:03 -07:00
Behdad Esfahbod
8be0e5fd45
[ot-map] Minor
2018-10-23 13:39:50 -07:00
Behdad Esfahbod
e8fccbc36b
Minor
2018-10-23 13:25:03 -07:00
Behdad Esfahbod
76324d95ca
Shift code around
2018-10-23 13:09:30 -07:00
Behdad Esfahbod
cf92d6579e
[trak] Allow disabling tracking for ranges of text
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1303
2018-10-23 03:10:56 -07:00
Behdad Esfahbod
8869436cb8
When parsing feature ranges, accept ';' instead of ':'
2018-10-23 03:07:48 -07:00
Ebrahim Byagowi
22ecefd88e
Make tracking optout possible using 'trak' ot feature
...
So '--features=-trak' or 'font-feature-settings: 'trak' 0;' can prevent
applying of tracking if used.
2018-10-23 02:57:55 -07:00
Behdad Esfahbod
6d40eb8372
Touch up on previous commit
...
https://github.com/harfbuzz/harfbuzz/pull/1273
2018-10-23 02:51:42 -07:00
David Corbett
205737acdc
[use] Prohibit visually ambiguous vowel sequences
2018-10-23 02:25:08 -07:00
Behdad Esfahbod
48ed598a35
[VORG] Hook up to hb-ot-font's v_origin
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/544
Test added with NotoSansCJK, eg. with U+FF38.
2018-10-23 02:21:27 -07:00
Behdad Esfahbod
097ecfd4a9
[VORG] Add get_y_origin()
...
Unhooked.
2018-10-23 02:09:42 -07:00
Behdad Esfahbod
6fb24d5e3e
[VORG] Add VORG table
...
Cherry-picked from cff-subset branch.
2018-10-23 01:59:43 -07:00
Behdad Esfahbod
531f9822b2
[morx] Add a few debug messages to Ligature chain
2018-10-23 01:32:08 -07:00
Behdad Esfahbod
0e5bcdef7f
[morx] Clear stack upon underflow when acting ligatures
2018-10-23 00:39:44 -07:00
Behdad Esfahbod
792071de40
[morx] Leave ligature on stack after ligating
...
Test with Apple Color Emoji.ttf of ~66MB and following sequence:
./hb-shape Apple\ Color\ Emoji-old.ttf --font-funcs=ot -u U+1F468,200d,U+1F469,200d,U+1F467,200d,1f466
Should form full family if matching works correctly. It first makes
family of three, then makes family of four out of that and the last
two characters.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1292
2018-10-22 23:38:34 -07:00
Behdad Esfahbod
8c78ced95b
Unbreak builds
2018-10-22 21:49:42 -07:00
Behdad Esfahbod
8d689f8a7b
Add hb_array<>() specialization for UnsizedArrayOf
...
Related https://github.com/harfbuzz/harfbuzz/issues/1301
2018-10-22 21:33:18 -07:00
Behdad Esfahbod
abfbba1911
Add hb_array<>()
...
Simplifies transient object creation.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1301
2018-10-22 21:27:45 -07:00
Behdad Esfahbod
17ffbc070f
[color] Use Index for colorIdx
...
Doesn't matter, but matches the description.
2018-10-22 21:22:25 -07:00
Behdad Esfahbod
07386ea410
Remove const and references when binding Null()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1299
Removes anomaly I was seeing in cpal table trying to use implicit Null(NameID).
2018-10-22 21:21:17 -07:00
Behdad Esfahbod
b18acab7bc
[color] Add HB_COLOR
...
Normally I would have added to_string / from_string like other types
have. But since we don't use hb_color_t much, I'm not going to do that.
Although, if we did, we could use it in hb-view to parse colors...
2018-10-22 18:20:57 -07:00
Behdad Esfahbod
228f96c9d0
[color] Finish reviewing / revamping CPAL
...
Now to hb_color_t.
2018-10-22 16:55:12 -07:00
Behdad Esfahbod
683fad0627
[color] Minor
2018-10-22 16:35:03 -07:00
Behdad Esfahbod
14474d2104
[color] Rely on CPALV1Tail Null object
2018-10-22 16:31:13 -07:00
Behdad Esfahbod
d7865107ea
Remove const from hb_array_t details
...
Will come in through <T> if desired.
2018-10-22 16:24:16 -07:00
Behdad Esfahbod
f3336580dd
[color] Use hb_array_t in CPAL
...
Doesn't work though, ouch :(. Need to figure out if it's unreasonable
to expect Null(T) inside hb_array_t<T> to see the later specialization
of Null for NameID.
2018-10-22 16:24:16 -07:00
Behdad Esfahbod
5ae18855d1
[color] Check for null CPAL arrays
...
We cannot use a nullable offset here though.
2018-10-22 16:24:16 -07:00
Behdad Esfahbod
69ab72e4aa
[color] More CPAL rename
2018-10-22 16:24:16 -07:00
Behdad Esfahbod
0befb06c46
[color] More CPAL rename
2018-10-22 16:24:16 -07:00
Behdad Esfahbod
3600d20603
[color] Rename vars in CPAL
2018-10-22 16:24:16 -07:00
Ebrahim Byagowi
0babf761c9
Adopt dump-emoji with latest unreleased APIs changes ( #1297 )
2018-10-23 01:33:45 +03:30
Behdad Esfahbod
7997144b5f
[color] Revamp palette API
2018-10-22 14:22:31 -07:00
Behdad Esfahbod
3bf91bd269
[color] Rewrite colr access
...
COLR table has one function: return layers for a glyph, and we expose exactly
that, so should just wire it through. Also use sub_array() for verifiable
safety.
Also, BaseGlyphRecord's null object is enough. We don't need to special-case
the not-found.
2018-10-22 14:21:23 -07:00
Behdad Esfahbod
1de17bdb80
[colr] Add hb_ot_color_layer_t
...
We never return parallel arrays from functions. That's inconvenient
and hard to bind.
2018-10-22 14:21:23 -07:00
Behdad Esfahbod
3b3668acc8
[color] Rename / reorder a bit
...
Implement has_data() for realz.
2018-10-22 14:21:23 -07:00
Behdad Esfahbod
9085a72deb
[cpal] Touch up palette flags
2018-10-22 13:03:29 -07:00
Behdad Esfahbod
ee11fae9d0
[color] Rename "gid" to "glyph"
...
We don't expose "gid" in API.
2018-10-22 13:03:29 -07:00
Behdad Esfahbod
228fa71bf9
[colr] Move sanitize
2018-10-22 13:03:29 -07:00
Ebrahim Byagowi
d440c8d3fb
Add chromacheck Emoji test fonts and minor preparations ( #1294 )
2018-10-22 22:07:59 +03:30
Behdad Esfahbod
b92b9d7e52
[colr] Move compare function into a static
...
Not sure if MSVC would be unhappy about this.
2018-10-22 10:17:31 +02:00
Behdad Esfahbod
b6b171732a
[colr] Minor
2018-10-22 10:17:31 +02:00
Behdad Esfahbod
a6ade3471e
[colr] Move sanitize() to right place
...
Sanitize always comes just before data member definitions, so
it's easy to cross-check.
2018-10-22 10:17:31 +02:00
Behdad Esfahbod
24adc15757
[colr] Touch up a bit
...
When a struct is plain old data with no references, etc, it's okay
to mark its members public.
2018-10-22 10:17:31 +02:00
Khaled Hosny
cc6e77ca98
[color] Fix documentation a bit
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
37ba2413c1
Minor
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
44f79b4bf8
Remove _palette_entry_count as can be done with _palette_colors
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
6795dcfc08
[test] Test hb_ot_color_has_{colr,cpal}_data
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
b8ee3a0ec8
[CPAL] Add palette entry and enable palette flag API
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
d4261b4bb6
Add API test for hb_ot_color_get_color_layers
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
456978d408
Address COLR/CPAL reviews and revive cpal_v1 tests
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
687f679b80
[color] Fix alpha channel value and adjust spaces
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
00e94ce24e
[dump-emoji] Formatting
2018-10-22 10:17:31 +02:00
Ebrahim Byagowi
e8a6f5b803
Add three macros for separating color channels
2018-10-22 10:17:31 +02:00
Khaled Hosny
d4e928b142
[color] Minimal API for COLR/CPAL
2018-10-22 10:17:31 +02:00
Behdad Esfahbod
1e39833ba8
[docs] Minor
2018-10-20 16:57:36 -07:00
Behdad Esfahbod
a5ad8c658d
[docs] More fixes
2018-10-20 16:52:55 -07:00
Behdad Esfahbod
314b1af74f
[docs] Fix warning
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1260
2018-10-20 16:49:16 -07:00
Behdad Esfahbod
b713c13977
[kerx] Implement tuple-kerning in Format0
2018-10-20 14:56:28 -07:00
Behdad Esfahbod
0a3b7a0fb0
2.0.2
2018-10-20 13:14:07 -07:00
Behdad Esfahbod
68b7050768
[kerx] Fix sanitize of KerxSubtableFormat2::array read
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11033
2018-10-20 12:20:57 -07:00
Behdad Esfahbod
00fdbca4f6
[aat] Fix LookupFormat10 sanitize
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11060
2018-10-20 12:20:57 -07:00
Ebrahim Byagowi
1e55e21dea
Merge pull request #1283 from khaledhosny/cygwin
...
Cygwin fixes and CI build
2018-10-20 07:45:46 +03:30
Behdad Esfahbod
7c2c8ac301
2.0.1
2018-10-19 19:39:58 -07:00
Bruce Mitchener
5a24ea15e0
Make more 'coords' params const.
2018-10-19 19:15:42 -07:00
Behdad Esfahbod
08b7172969
[font] Fix parallel funcs passing to eachover in infinite-loop
...
Fixes test just added.
2018-10-19 19:12:33 -07:00
Behdad Esfahbod
29d877518f
[kerx] Implement variation-kerning tables (without the variation part)
...
SFSNDisplay uses these. We just apply the default kern without
variations right now. But at least makes the default kern work.
2018-10-19 16:06:54 -07:00
Behdad Esfahbod
f7c0b4319c
[aat] Implement LookupFormat10
2018-10-19 15:23:49 -07:00
Khaled Hosny
30cbe6158d
Use O_BINARY instead of _O_BINARY
...
Cygwin does not seem to have the later
2018-10-19 22:46:40 +02:00
Behdad Esfahbod
79b6356155
[trak] Fix extrapolation at end side
2018-10-19 11:00:20 -07:00
Behdad Esfahbod
2352cc3539
[kerx] Whitespace
2018-10-19 10:17:02 -07:00
Ebrahim Byagowi
114f66dda6
Fix hb_map_is_empty logic
...
This needs reviewing
2018-10-19 20:23:36 +03:30
Ebrahim Byagowi
9df2fb1611
Add API tests for hb_map_t
2018-10-19 20:23:36 +03:30
Ebrahim Byagowi
c6eb5e852c
Don't report deprecated symbols as unused symbols
2018-10-19 20:23:36 +03:30
Bruce Mitchener
4594730f64
Remove redundant return at end of void-returning function.
2018-10-19 18:17:18 +02:00
Bruce Mitchener
8d1e479d1d
Use bool literals instead of 0/1.
2018-10-19 18:05:46 +02:00
Bruce Mitchener
257d0e5aa3
Fix typos.
2018-10-19 19:24:05 +03:30
Behdad Esfahbod
3d9a0306eb
2.0.0
2018-10-18 05:58:17 -07:00
Ebrahim Byagowi
03e144135b
[ubsan] Use unsigned int instead enum where needed ( #1270 )
...
Actually the check is right,
On -myanmar.hh, on that particular switch, OT_C is indic_category_t
but OT_D is myanmar_category_t so we are mixing the types in one variable.
And on -arabic.cc, step can goes one number higher than step_t enum in the
loop so we are actually using it as an unsinged int.
2018-10-18 11:06:37 +03:30
Behdad Esfahbod
f1ced9be37
More warning fix
...
Okay, let's see if the gods are happy now...
2018-10-17 23:06:53 -07:00
Behdad Esfahbod
40606abd0c
Fix build
2018-10-17 23:06:37 -07:00
Behdad Esfahbod
c406aca193
Fix warning
2018-10-17 22:58:43 -07:00
Behdad Esfahbod
270a37c324
Kick bots
2018-10-17 22:42:47 -07:00
Behdad Esfahbod
6da8ef3f9f
Fix some wierdness...
2018-10-17 22:37:34 -07:00
Behdad Esfahbod
83780308b4
[aat] Fix sanitize slowdown
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11034
2018-10-17 22:34:16 -07:00
Behdad Esfahbod
9e8a9b846e
[aat] Another try at fixing Lookup null objects...
...
Ugly as hell, and don't even understand why some bits are needed.
But the logic is sound.
2018-10-17 21:45:27 -07:00
Behdad Esfahbod
9d42d70269
[trak] Fix calc
...
We were getting the first track record always. Ie. this line:
if (trackTable[i].get_track_value () == 0.f)
{
- trackTableEntry = &trackTable[0];
+ trackTableEntry = &trackTable[i];
break;
}
The rest is cleanup.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1263 for the most part.
2018-10-17 17:55:47 -07:00
Behdad Esfahbod
2e7c716511
[buffer] Add an assert
...
See if it helps debugging https://bugs.chromium.org/p/chromium/issues/detail?id=895117
2018-10-16 18:35:03 -07:00
Behdad Esfahbod
25fe7e7e10
[aat] Comment
2018-10-16 18:22:54 -07:00
HinTak
26092bb3d1
"allow-none" annotation for "out" parameters
...
Fixes the following warnings:
hb-ot-tag.cc:330: Warning: HarfBuzz: invalid "allow-none" annotation: only valid for pointer types and out parameters
hb-ot-tag.cc:334: Warning: HarfBuzz: invalid "allow-none" annotation: only valid for pointer types and out parameters
2018-10-16 17:36:10 -07:00
HinTak
49bdb54427
typo in gobject annotation - "in/out" should be "inout"
...
"in/out" should be "inout"
2018-10-16 16:41:12 -07:00
Behdad Esfahbod
36f38ea703
[gpos] Protect mark attachment against out-of-bounds
...
Not sure how can happen, but does...
2018-10-16 16:24:03 -07:00
Behdad Esfahbod
12cbe195ae
[aat] Another non-null offset
2018-10-16 16:13:53 -07:00
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
Behdad Esfahbod
2137582c96
[morx] Reword ligation
...
Still fails MORX-41. Am talking to Sascha to better understand what CoreText
is doing.
2018-10-16 14:46:07 -07:00
Behdad Esfahbod
c53a25c657
[morx] Comment
2018-10-16 13:57:35 -07:00
Behdad Esfahbod
5eb7e7f646
Revert "[vector] Simplify Sort" and "More of the same"
...
This reverts commit de0b9a4664
.
This reverts commit 921f0e6ec7
.
Annnnd, revert. MSVC doesn't like it.
2018-10-16 13:33:14 -07:00
Behdad Esfahbod
661340c475
[kern] Scale kern pairs before applying
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1255
Fixes https://github.com/harfbuzz/harfbuzz/issues/1252
2018-10-16 13:24:29 -07:00
Behdad Esfahbod
de0b9a4664
[vector] More of the same
2018-10-16 13:01:27 -07:00
Behdad Esfahbod
921f0e6ec7
[vector] Simplify sort
...
Hopefully this fits fine with SFINAE with all our compilers.
2018-10-16 13:01:27 -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
4c27da7638
[CBDT] Fix more offsetting
...
Fixes https://oss-fuzz.com/v2/testcase-detail/5750379279548416
2018-10-15 19:46:45 -07:00
Behdad Esfahbod
0f85edb778
[morx] Another end-of-text corner case
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10990
2018-10-15 11:15:54 -07:00
Behdad Esfahbod
55d5ea666c
[kerx] Merge clusters in Ligature
2018-10-15 11:05:10 -07:00
Behdad Esfahbod
bb35725cd7
[kerx/morx] More end-of-text protection
2018-10-15 11:05:10 -07:00
Ebrahim Byagowi
8f3048a1f8
[dump-emoji] minor
2018-10-15 12:16:47 +03:30
Ebrahim Byagowi
27e095a613
[dump-emoji] better explaination of the usage
2018-10-15 01:41:49 -07:00
Behdad Esfahbod
8dc6296818
[ot-font] Implement TrueType v_origin
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/537
2018-10-15 01:09:05 -07:00
Behdad Esfahbod
6e07076fd0
[blob] Fix UBSan error
2018-10-14 22:22:45 -07:00
Behdad Esfahbod
fc812faaa9
[CBDT] Fix more offsetting issues
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/960
dump-emoji still segfaults. Needs debugging.
2018-10-14 21:32:25 -07:00
Behdad Esfahbod
6aee3bb87c
[CBDT] Fix offset handling
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/960
2018-10-14 21:08:42 -07:00
Behdad Esfahbod
da744c6b3e
[CBDT] More UnsizedArrayOf cleanup
2018-10-14 20:51:45 -07:00
Behdad Esfahbod
2995b4465b
[CBDT] Simplify sanitize
2018-10-14 20:37:57 -07:00
Behdad Esfahbod
1c76c8f6ff
[morx] Handle end-of-text conditions in Insertion
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10955
2018-10-14 19:39:31 -07:00
Behdad Esfahbod
60c1397673
[buffer] Fix output_glyph at end of buffer
...
Part of https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10955
2018-10-14 19:38:14 -07:00
Behdad Esfahbod
7efa38257b
[aat] More protection against buffer fail
2018-10-14 19:30:44 -07:00
Behdad Esfahbod
e1add2a275
[hmtx] Whitespace
2018-10-14 16:26:03 -07:00
Behdad Esfahbod
62376a7d98
Ignore signed-integer-overflow while kerning
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1247
2018-10-14 15:20:50 -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
44af1f93ee
[aat] Whitespace
2018-10-14 14:52:17 -07:00
Behdad Esfahbod
56b8dd17f6
[aat] Finish off massaging table
2018-10-13 19:03:33 -04:00
Behdad Esfahbod
e0c5e0d91b
[aat] WIP remove feature mapping here from hb-coretext
...
Need to map enum values to numerics since we don't have CoreText headers.
2018-10-13 18:46:52 -04:00
Behdad Esfahbod
cb05774913
[coretext] Prepare AAT feature mapping to be moved
2018-10-13 17:03:32 -04: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
ed2ee78136
[hangul] Fix use-after-free issue
...
out_info might have moved since we copied it's position into local
info var.
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=894937
2018-10-13 12:09:59 -04:00
Ebrahim Byagowi
63109432cf
Cosmetic and minor changes
2018-10-13 07:23:33 -04:00
Behdad Esfahbod
c0a6814b49
Touch up new API
...
New API:
+hb_ot_layout_feature_get_name_ids()
+hb_ot_layout_feature_get_characters()
2018-10-12 16:06:39 -04:00
Behdad Esfahbod
477bc9aafe
Add hb-ot-name.h
...
Actual name-fetching API to come later.
New API:
hb_name_id_t
HB_NAME_ID_INVALID
2018-10-12 16:06:39 -04:00
Ebrahim Byagowi
dc49bd8d81
Add two APIs for getting stylistic set labels
...
* hb_ot_layout_feature_get_characters
* hb_ot_layout_feature_get_name_ids
However HarfBuzz currently doesn't expose an API for retrieving the actual
information associated with NameId from the `name` table and that should be
done separately.
2018-10-12 16:06:39 -04:00
Behdad Esfahbod
e9f9c0d81c
[sanitize] Reorder condition to silence bogus gcc warning
...
Was givin a dozen of:
../../src/hb-machinery.hh: In member function ‘bool AAT::ankr::sanitize(hb_sanitize_context_t*) const’:
../../src/hb-machinery.hh:307:23: warning: missed loop optimization, the loop counter may overflow [-Wunsafe-loop-optimizations]
bool ok = --this->max_ops > 0 &&
~~~~~~~~~~~~~~~~~~~~~~
this->start <= p &&
~~~~~~~~~~~~~~~~~~~
p <= this->end &&
~~~~~~~~~~~~~~~^~
(unsigned int) (this->end - p) >= len;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I believe those are bogus, but this silences them and does not introduce
logic issues I believe.
2018-10-12 16:06:39 -04:00
Behdad Esfahbod
1a6b5ac6c3
Add HB_DEPRECATED_FOR and mark relevant symbols
2018-10-12 16:06:39 -04:00
Behdad Esfahbod
c9413d7bb5
[graphite] Add HB_DEPRECATED annotation
2018-10-12 16:06:39 -04:00
Behdad Esfahbod
68c86af187
Always compile deprecated symbols
...
We haven't been keeping this updated. So, while we don't expose the
symbols in the headers if HB_DISABLE_DEPRECATED is defined, we still
always build them.
2018-10-12 16:06:39 -04:00
David Corbett
c55100000b
Add missing colons to GObject annotations
2018-10-11 22:47:35 -04:00
David Corbett
1e816d62ef
Fix Indic script tags in Graphite
2018-10-11 20:51:08 -04:00
Behdad Esfahbod
bf8469be9a
Attach CursivePositioning backwards, not forward
...
This is how Uniscribe does it. So, adjust. This is only relevant
to fonts that apply cursive positioning from a contextual lookup.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1181
2018-10-11 20:45:40 -04:00
Behdad Esfahbod
bdb53ca24a
[myanmar] Implement Zawgyi shaper
...
Enabled if script tag 'Qaag' is passed to HarfBuzz. Disables mark
advance-zeroing and fallback mark-positioning.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1162
2018-10-11 20:20:29 -04:00
Behdad Esfahbod
00c5c4a79d
[myanmar] Shuffle
2018-10-11 20:15:31 -04:00
Behdad Esfahbod
ec8f493bf9
[graphite] Remove assert
2018-10-11 20:15:00 -04:00
Behdad Esfahbod
5646dcbd11
Minor
2018-10-11 19:39:07 -04:00
Behdad Esfahbod
654365dc89
Pass indic3 tags to USE shaper
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/539
2018-10-11 17:51:21 -04:00
David Corbett
28d091d045
Parse Indic3 tags
2018-10-11 17:44:13 -04:00
Behdad Esfahbod
2c824d3644
[aat] Fix two wrongs that made a right before!
...
Unfortunately our static asserts (DEFINE_SIZE_STATIC) don't actually
fail when used in templates, thanks to SFINAE. Le sighs.
Probably fixes https://oss-fuzz.com/v2/testcase-detail/5740171484463104
2018-10-11 16:43:05 -04:00
Behdad Esfahbod
e940530c97
[aat] Fix mul overflow
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10897
2018-10-11 15:56:17 -04:00
Behdad Esfahbod
0744a02cb1
[arabic] Update to latest UTR#53
...
From Lorna Evans: "That was a new character added to Unicode 11.0"
2018-10-11 15:14:18 -04:00
Behdad Esfahbod
4f9e36e8cf
[graphite] Remove deprecated symbol use
2018-10-11 14:32:59 -04:00
Behdad Esfahbod
da591f2a9d
Whitespace
2018-10-11 14:30:15 -04:00
Behdad Esfahbod
4d205f0462
[graphite] Fix deva/dev2 resolution
...
See https://github.com/harfbuzz/harfbuzz/pull/730#issuecomment-428277800
2018-10-11 14:25:48 -04:00
Behdad Esfahbod
8061664ad1
Add doc stubs for recently added API
...
Thanks to David Corbett who revamped our script and language processing
and implemented full BCP 47 support.
https://github.com/harfbuzz/harfbuzz/pull/730
New API:
+hb_ot_layout_table_select_script()
+hb_ot_layout_script_select_language()
+HB_OT_MAX_TAGS_PER_SCRIPT
+HB_OT_MAX_TAGS_PER_LANGUAGE
+hb_ot_tags_from_script_and_language()
+hb_ot_tags_to_script_and_language()
Deprecated API:
-hb_ot_layout_table_choose_script()
-hb_ot_layout_script_find_language()
-hb_ot_tags_from_script()
-hb_ot_tag_from_language()
2018-10-11 14:17:17 -04:00
Behdad Esfahbod
cf975ac653
Remove use of deprecated function
2018-10-11 14:07:44 -04:00
David Corbett
66790d64c7
Increase HB_OT_MAX_TAGS_PER_SCRIPT to 3
...
No script has 3 tags yet, but the plan is for the Indic scripts to each
get a third tag someday.
2018-10-11 13:54:28 -04:00
David Corbett
bca7a16938
Update language system tag registry to OT 1.8.3
2018-10-11 13:54:28 -04:00
David Corbett
7f1fbfe2e3
Add hb_ot_tags_to_script_and_language
2018-10-11 13:54:28 -04:00
David Corbett
3f8877473f
Switch on the first char of a complex language tag
...
This results in a tenfold speed-up for the common case of tags that are
not complex, in the sense of `hb_ot_tags_from_complex_language`.
2018-10-11 13:54:28 -04:00
David Corbett
a754d44195
Map Quechua languages to closest ones with tags
...
OpenType only officially maps four ISO 639 codes to Quechua languages,
but prior versions of HarfBuzz also mapped qu to 'QUZ '. Because qu is a
macrolanguage, the mapping now applies to all individual Quechua
languages. OpenType calls 'QUZ ' "Quechua", but it really corresponds to
Cusco Quechua, so the individual Quechua languages should not all
necessarily be mapped to it.
2018-10-11 13:54:28 -04:00
David Corbett
7c7cb2a989
Match extlang subtags
...
If the second subtag of a BCP 47 tag is three letters long, it denotes
an extended language. The tag converter ignores the language subtag and
uses the extended language instead.
There are some grandfathered exceptions, which are handled earlier.
2018-10-11 13:54:28 -04:00
David Corbett
2f1f961cc0
Autogenerate the BCP 47 to OpenType mappings
...
The new script, gen-tag-table.py, generates `ot_languages` automatically
from the [OpenType language system tag registry][ot] and the [IANA
Language Subtag Registry][bcp47] with some manual modifications. If an
OpenType tag maps to a BCP 47 macrolanguage, all the macrolanguage's
individual languages are mapped to the same OpenType tag, except for
individual languages with their own OpenType mappings. Deprecated
BCP 47 tags are canonicalized.
[ot]: https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
[bcp47]: https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
Some OpenType tags correspond to multiple ISO 639 codes. The mapping
from ISO 639 codes lists OpenType tags in priority order, such that more
specific or more likely tags appear first.
Some OpenType tags have no corresponding ISO 639 code in the registry so
their mappings use BCP 47 subtags besides the language. For example, any
BCP 47 tag with a fonipa variant subtag is mapped to 'IPPH', and 'IPPH'
is mapped back to und-fonipa.
Other OpenType tags have no corresponding ISO 639 code because it is not
clear what they are for. HarfBuzz just ignores these tags.
One such ignored tag is 'ZHP ' (Chinese Phonetic). It probably means
zh-Latn. However, it is used in Microsoft JhengHei and Microsoft YaHei
with the script tag 'hani', implying that it is not a romanization
scheme after all. It would be simple enough to add this mapping to
gen-tag-table.py once a definitive mapping is determined.
The manual modifications are mainly either obvious mappings that the
OpenType registry omits or mappings for compatibility with previous
versions of HarfBuzz. Some of the old mappings were discarded, though,
for homophonous language names. For example, OpenType maps 'KUI ' to
kxu; previous versions of HarfBuzz also mapped it to kvd, because kvd
and kxu both happen to be called "Kui".
gen-tag-table.py also generates a function to convert multi-subtag tags
like el-polyton and zh-HK to OpenType tags, replacing `ot_languages_zh`
and the hard-coded list of special cases in `hb_ot_tags_from_language`.
It also generates a function to convert OpenType tags to BCP 47,
replacing the hard-coded list of special cases in
`hb_ot_tag_to_language`.
2018-10-11 13:54:28 -04:00
David Corbett
2c7d4db7af
Deprecate obsolete functions
...
`hb_ot_tags` replaces `hb_ot_tags_from_script` and
`hb_ot_tag_from_language`.
`hb_ot_layout_table_select_script` replaces
`hb_ot_layout_table_choose_script`.
`hb_ot_layout_script_select_language` replaces
`hb_ot_layout_script_find_language`.
2018-10-11 13:54:28 -04:00
David Corbett
91067716f5
Refactor the selection of script and language tags
...
The old hb-ot-tag.cc functions, `hb_ot_tags_from_script` and
`hb_ot_tag_from_language`, are now wrappers around a new function:
`hb_ot_tags`. It converts a script and a language to arrays of script
tags and language tags. This will make it easier to add new script tags
to scripts, like 'dev3'. It also allows for language fallback chains;
nothing produces more than one language yet though.
Where the old functions return the default tags 'DFLT' and 'dflt',
`hb_ot_tags` returns an empty array. The caller is responsible for
using the default tag in that case.
The new function also adds a new private use subtag syntax for script
overrides: "x-hbscabcd" requests a script tag of 'abcd'.
The old hb-ot-layout.cc functions,`hb_ot_layout_table_choose_script` and
`hb_ot_layout_script_find_language` are now wrappers around the new
functions `hb_ot_layout_table_select_script` and
`hb_ot_layout_script_select_language`. They are essentially the same as
the old ones plus a tag count parameter.
Closes #495 .
2018-10-11 13:54:28 -04:00
David Corbett
a03f5f4dfb
Replace "ISO 639" with "BCP 47"
...
`hb_language_from_string` accepts not only ISO 639 but also BCP 47. Not
all ISO 639 codes are valid BCP 47 tags but the function does not accept
overlong language subtags anyway.
2018-10-11 13:54:28 -04:00
Behdad Esfahbod
0b9d60e1a1
[aat] Apply kerx if GPOS kern was not applied
...
Ned tells me this is what Apple does.
2018-10-11 13:26:58 -04:00
Behdad Esfahbod
b59a428af0
Minor
2018-10-11 13:24:17 -04:00
Behdad Esfahbod
04f72e8990
[trak] Implement extrapolation
...
This concludes trak, as well as AAT shaping support!
2018-10-11 11:25:07 -04:00
Behdad Esfahbod
d6a12dba6d
[trak] Fix, and hook up
...
Works beautifully! Test coming.
2018-10-11 11:10:06 -04:00
Behdad Esfahbod
3d7dea6dfd
[trak] Handle nSizes=0 and 1
2018-10-11 10:32:08 -04:00
Behdad Esfahbod
451f3de521
[trak] Fix counting
2018-10-11 10:30:32 -04:00
Behdad Esfahbod
a5be380cae
[trak] More
2018-10-11 10:29:02 -04:00
Behdad Esfahbod
d06c4a867f
[trak] Only adjust around first glyph
...
Assumes graphemes only have one base glyph.
2018-10-11 10:22:01 -04:00
Behdad Esfahbod
071a2cbcdd
[trak] Clean up
2018-10-11 10:18:46 -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
7bb4da7d95
[aat] Wire up 'ankr' table to apply context
2018-10-11 00:52:07 -04:00
Behdad Esfahbod
28f0367aab
[kerx] Flesh out Format4
...
Doesn't apply actions yet.
2018-10-11 00:46:12 -04:00
Behdad Esfahbod
947962a287
[ankr] Implement table access
2018-10-10 23:07:03 -04:00
Behdad Esfahbod
7281cb3eeb
[ankr] Start fixing
2018-10-10 22:56:52 -04:00
Behdad Esfahbod
34caadc5c7
Ugh. Re-enable accidentally disabled GPOS
2018-10-10 22:17:07 -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
504cb68fc9
Disable mark advance zeroing as well as mark fallback positioning if doing kerx
2018-10-10 21:29:46 -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
7fa69e92ca
Comment
2018-10-10 19:02:32 -04:00
Behdad Esfahbod
7e6e5bf614
Fix option string matching
2018-10-10 18:59:07 -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
38a7a8a89e
Allow HB_OPTIONS=aat to prefer AAT tables over OT
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/322
2018-10-10 17:44:46 -04:00
Behdad Esfahbod
44f09afd5b
[kerx] Skip variation subtables
2018-10-10 17:32:32 -04:00
Behdad Esfahbod
1e8fdd285f
Remove HAVE_OT
...
We never tested compiling without it. Just kill it. We always build
our own shaper.
2018-10-10 16:32:35 -04:00
Behdad Esfahbod
7727e73756
[kerx] Actually hook up, and fix crash
2018-10-10 13:24:51 -04:00
Behdad Esfahbod
b3390990f5
Add per-subtable set-digests
...
This speeds up Roboto shaping by ~10%. I was hoping for more.
Still, good defense against lookups with many subtables.
2018-10-10 12:13:25 -04:00
Behdad Esfahbod
e78549edfb
Move apply down into subtables accel
2018-10-10 11:54:48 -04:00
Behdad Esfahbod
78c09bf213
Move subtable array into lookup accel
2018-10-10 11:50:46 -04:00
Behdad Esfahbod
97e5913d5a
Move more code
2018-10-10 11:41:05 -04:00
Behdad Esfahbod
c8f2d9334c
Move code
...
In preparation to move add per-subtable set digests...
2018-10-10 11:36:28 -04:00
Behdad Esfahbod
a03850a356
Fix GPOS/kern interaction
...
Oops. Was checking for kern feature in GSUB, not GPOS.
2018-10-10 10:57:28 -04:00
Behdad Esfahbod
d1be805e78
More rewriting plan compile
...
Hopefully more clear.
2018-10-10 10:49:45 -04:00
Behdad Esfahbod
961ab46b24
More reshuffle plan compile
2018-10-10 10:42:10 -04:00
Behdad Esfahbod
2091b509e3
[kerx] Hook up to shaper
2018-10-10 10:41:08 -04:00
Behdad Esfahbod
8d00c39bfc
[kern] Minor
2018-10-10 10:19:07 -04:00
Behdad Esfahbod
e655fd38cf
Apply TT or fallback kerning when GPOS does not have kern feature
...
Previously we only did if there was no GPOS whatsoever. This applies
to Arial, Times New Roman, etc in Win7. Was not kerning before. It
is now.
2018-10-10 10:19:07 -04:00
Behdad Esfahbod
754cf440bf
Minor
2018-10-10 10:19:07 -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
54c9ecb92d
[morx] Use subtable range for embedded sanitizer here as well
2018-10-09 23:18:19 -04:00
Behdad Esfahbod
d35315cc02
[aat] Fixup recent commit
...
For 329f240108
max_ops is signed.
2018-10-09 23:17:32 -04:00
Behdad Esfahbod
948f59a13a
[kerx] Use subtable range for runtime checks
2018-10-09 23:07:47 -04:00
Behdad Esfahbod
329f240108
[aat] Set embedded sanitizer max ops really high
...
Since we consume it legitimately during shaping.
2018-10-09 23:03:20 -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
4df8eb200d
[kern] Use kern subtable length for sanitizing in the accelerator
2018-10-09 22:46:12 -04:00
Behdad Esfahbod
8bff1d2994
[kern] Minor
2018-10-09 22:39:31 -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
60318f8715
Minor
2018-10-09 22:25:53 -04:00
Behdad Esfahbod
210f899aca
[kern] Sanitize 4 bytes, not 2
2018-10-09 21:58:04 -04:00
Behdad Esfahbod
be2f148da4
[ft] Use mutex to lock access to FT_Face
...
Makes our FT-backed hb_font_t safe to use from multiple threads. Still,
the underlying FT_Face should NOT be used from other threads by client
or other libraries.
Maybe I add a lock()/unlock() public API ala PangoFT2 and cairo-ft.
Maybe not.
2018-10-09 16:24:50 -04:00
Behdad Esfahbod
d18c3c5861
[ft] Remove (probably) stale comment
2018-10-09 16:09:53 -04:00
Behdad Esfahbod
7003b601af
Minor
2018-10-09 15:55:26 -04:00
Behdad Esfahbod
07899435b8
Install ot-funcs on newly created funcs
...
**Finally**! Casual users can stop caring about font-funcs completely now,
like they haven't been needing to care re unicode-funcs for a few years.
2018-10-09 15:39:51 -04:00
Behdad Esfahbod
5515355367
[ot-font] Don't pre-load cmap table
...
Now that we have get_h_advances() and get_nominal_glyphs() implemented, the
overhead of doing a proper atomic load would be once per run, NOT once per
glyph. So, no need to pre-load the tables to avoid that overhead.
As such, hb_ot_font_set_funcs() has become really cheap. Can *finally* make
it be default font functions on all newly created fonts!
2018-10-09 15:12:09 -04:00
Behdad Esfahbod
ec84460e46
[ot/ft] Implement get_nominal_glyphs() callback
...
Some more measurable speedup. The recent commits' speedups are as follows:
Testing with Roboto, ****when disabling kern and liga****:
Before:
FT --features=-kern,-liga
user↦ 0m0.521s
OT --features=-liga,-kern
user↦ 0m0.568s
After:
FT --features=-liga,-kern
user↦ 0m0.428s
OT --features=-liga,-kern
user↦ 0m0.470s
So, 17% speedup.
Note that FT callbacks are faster than OT these days since we added an advance
cache to FT. I don't think the difference is enough to justify adding a cache
to OT.
When not disabling kern, the thing is three times slower, so the speedups
are three times less impressive... Still, 5% not bad for a codebase that I
otherwise thought is optimized out.
Note that, because of this and other optimiztions in our main shaper,
disabling kern and liga, the OT shaper is now *faster* than the fallback
shaper. So, that's my recommendation to clients that need the absolute
fastest...
2018-10-09 15:07:04 -04:00
Behdad Esfahbod
e883f52732
Call get_nominal_glyphs() for runs of simple clusters at a time
...
Even without FT or OT font funcs implementing get_nominal_glyphs(), there's measurable
speedup.
2018-10-09 14:50:57 -04:00
Behdad Esfahbod
8008bca83b
Whitespace
2018-10-09 14:43:03 -04:00
Behdad Esfahbod
30c114ffec
Avoid sort and recompose stages if all clusters simple
...
Even has measurable speedup...
2018-10-09 14:37:08 -04:00
Behdad Esfahbod
24382debe8
Rewrite main normalizer loop to isolate runs of simple clusters
2018-10-09 14:33:24 -04:00
Behdad Esfahbod
b5371f18ef
Inline decompose_cluster
...
Towards separating the common case into its own loop.
2018-10-09 14:12:59 -04:00
Behdad Esfahbod
b314c4e9ab
[font] Add get_nominal_glyphs() callback (note the plural)
...
Unused as of now. To be wired up to normalizer, which would remove
overhead and allow hb-ot-font initialization to become a no-op, so
we can enable it by default.
2018-10-09 09:43:44 -04:00
Behdad Esfahbod
ca6a317012
Minor
2018-10-09 09:43:44 -04:00
Chun-wei Fan
8e4ad1d7a0
builds: Fix and clean up MSVC DLL builds
...
Instead of passing a CFLAG/CXXFLAG to define HB_EXTERN, define it
directly in src/hb.hh as __declspec(dllexport) extern when we are
building HarfBuzz as DLLs on Visual Studio. Define HB_INTERNAL
as nothing without defining HB_NO_VISIBILITY when building HarfBuzz as
DLLs to avoid linker errors on Visual Studio builds.
Also "install" harfbuzz-subset.dll into $(PREFIX)\bin as the
hb-subset utility will depend on that DLL at runtime, when HarfBuzz is
built as DLLs. Since it consists of private APIs that are subject to
change, we do not install its headers nor .lib file.
2018-10-09 09:43:36 -04:00
Behdad Esfahbod
e640f3a6b1
Another old bot fix
2018-10-09 08:28:07 -04:00
Behdad Esfahbod
e4f27f368f
Try fixing older bots
2018-10-09 08:20:10 -04:00
Behdad Esfahbod
bee93e2697
Add const to get_*_advances API
...
Ouch!
2018-10-09 08:02:25 -04:00
Behdad Esfahbod
cc126f2817
Minor
2018-10-09 01:10:15 -04:00
Behdad Esfahbod
b2fbe55b82
[icu] Unbreak
2018-10-09 01:07:36 -04:00
Behdad Esfahbod
a52bc039c3
Properly remove deprecated stuff
2018-10-09 00:56:33 -04:00
Behdad Esfahbod
fc50916589
Remove deprecated decompose_compatibility stuff
2018-10-09 00:39:42 -04:00
Behdad Esfahbod
eed737f672
Remove deprecated eastasian_width
2018-10-09 00:37:10 -04:00
Behdad Esfahbod
47030b1855
[ft/ot] Remove implementation of deprecated kerning funcs
2018-10-09 00:30:45 -04:00
Behdad Esfahbod
977c8a8e5c
[kern] Minor
2018-10-09 00:22:08 -04:00
Behdad Esfahbod
ed5cfa42c7
[kern] Minor
2018-10-09 00:20:35 -04:00
Behdad Esfahbod
d219f899f4
Deprecate font kern API
2018-10-09 00:01:09 -04:00
Behdad Esfahbod
a51958819f
Apply TrueType/OpenType kern table when GPOS kern feature is not available
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/250
2018-10-08 23:57:45 -04:00
Behdad Esfahbod
09ad2613c8
Separate fallback kern vs mark positioning
2018-10-08 23:30:24 -04:00
Behdad Esfahbod
3c23ff9b7c
[kern] Add kerning driver to TT kern table
2018-10-08 23:26:26 -04:00
Behdad Esfahbod
683c3a9533
[kern] Abstract away kerning machine
2018-10-08 23:09:48 -04:00
Behdad Esfahbod
fb4f438381
Add HB_DEPRECATED
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1232
2018-10-08 22:44:16 -04:00
Behdad Esfahbod
80e3102b8a
[kerx] Process coverage flags
2018-10-08 22:41:08 -04:00
Behdad Esfahbod
26d7305da7
Deprecate decompose_compatibility stuff
2018-10-08 22:31:35 -04:00
Behdad Esfahbod
42b51eee54
Deprecate eastasian_width stuff
2018-10-08 22:26:39 -04:00
Behdad Esfahbod
286a45641f
Minor
2018-10-08 16:41:08 -04:00
Behdad Esfahbod
c0d3bf1baf
Minor
2018-10-08 16:32:44 -04:00
Behdad Esfahbod
1a5a3325a2
[kerx] Minor
2018-10-07 23:08:39 -04:00
Behdad Esfahbod
d62b4011cc
[kern] Shout less
2018-10-07 22:58:06 -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
4c3b19d52e
Support HBUINT32 BinSearchArrayOf
2018-10-07 22:30:42 -04:00