Commit Graph

4524 Commits

Author SHA1 Message Date
Garret Rieger
d008b62887 Merge remote-tracking branch 'upstream/master' into fixed 2018-02-14 10:38:52 -08:00
Garret Rieger
89f17e3965 [subset] capitalize dsig. 2018-02-14 10:19:50 -08:00
Garret Rieger
df6d780355 [subset] Extract maxp subsetting into hb-ot-maxp-table. 2018-02-14 10:19:50 -08:00
Garret Rieger
343dfe8965 [subset] white and add inline in hb-ot-cmap-table. 2018-02-14 10:19:50 -08:00
Garret Rieger
24904383df [subset] Correct usFirstCharIndex and usLastCharIndex in OS2 table when subsetting. 2018-02-14 10:19:50 -08:00
Ebrahim Byagowi
109314cb55
Another attempt on fixing the tests on Travis (#788) 2018-02-14 21:05:11 +03:30
Behdad Esfahbod
694eaf6367 [set] Add backwards iterator
New API:
- hb_set_previous()
- hb_set_previous_range()
2018-02-14 01:00:10 -08:00
Behdad Esfahbod
fe3bc524bd [set] Allow starting iteration from a non-member of the set 2018-02-13 23:51:45 -08:00
Behdad Esfahbod
a989f3edec Add hb_blob_copy_writable_or_fail()
New API:
- hb_blob_copy_writable_or_fail()
2018-02-13 22:12:36 -08:00
Behdad Esfahbod
9046e92442 [subset] Rename constructor to hb_subset_input_create_or_fail()
To signify that unlike rest of library, returns nullptr on failure.
2018-02-13 22:07:12 -08:00
Behdad Esfahbod
507804479a [use] Add dump-use-data 2018-02-13 21:46:28 -08:00
Behdad Esfahbod
15ba4fbe01 [khmer] Add dump-khmer-data 2018-02-13 21:41:51 -08:00
Behdad Esfahbod
effddd03bd [myanmar] Add dump-myanmar-data 2018-02-13 21:38:15 -08:00
Behdad Esfahbod
c0e45b60a0 [indic] Rename print-indic-table to dump-indic-data
Makes more sense given what this prints, err, dumps.
2018-02-13 21:25:16 -08:00
Behdad Esfahbod
9b878bd216 [indic] Explicitly number indic_position_t
So it's easier to cross-reference from output of print-indic-table.
2018-02-13 21:22:47 -08:00
Behdad Esfahbod
8634846a0a More tweaking linker and linker flags 2018-02-13 21:18:00 -08:00
Behdad Esfahbod
d830d3d244 [indic] Share some copy/pasta code 2018-02-13 19:01:03 -08:00
Behdad Esfahbod
397ed53e55 [indic] Add print-indic-table 2018-02-13 18:54:26 -08:00
Behdad Esfahbod
fd0bde6325 [subset] Fix loca offsets
Was writing source font's offsets. Ouch.
2018-02-13 16:35:30 -08:00
Behdad Esfahbod
aeed082e28 Another tweak at libstdc++ things
To fix this warning:

cc1: warning: command line option ‘-fno-threadsafe-statics’ is valid for C++/ObjC++ but not for C
2018-02-13 14:02:59 -08:00
Behdad Esfahbod
c7d7c9898e [aat] Minor 2018-02-13 14:00:14 -08:00
Behdad Esfahbod
2dbfeecf96 Minor 2018-02-13 13:59:39 -08:00
Behdad Esfahbod
d5b33f2fe1 [subset] hb_subset_input_t changes 2018-02-13 13:55:10 -08:00
Behdad Esfahbod
28e63a1287 Disable threadsafe static's for all libraries
Even in libharfbuzz-subset, we still will handle our own threadsafety
for statics.
2018-02-13 13:50:21 -08:00
Behdad Esfahbod
b969a82e30 Pass no-libstdc++ flags only to libraries suppressing it 2018-02-12 20:51:26 -08:00
Behdad Esfahbod
97a2f03200 [subset] Allocate bulk memory with malloc(), not calloc()
We use calloc() to allocate simple structs and set them to zero.
For bulk memory, use malloc() that doesn't zero.
2018-02-12 18:51:10 -08:00
Behdad Esfahbod
96f1f52ea3 Use hb_face_get_upem() instead of face->get_upem()
Such that hmtx accelerator can be used from libharfbuzz-subset.
2018-02-12 18:49:38 -08:00
Behdad Esfahbod
3d66f441cc [subset] Remove unreachable code
sanitizer.sanitize never return nullptr.
2018-02-12 18:43:42 -08:00
Behdad Esfahbod
42040a273f Allow libharfbuzz-subset to link to libstdc++
We want to use it instead of reinventing hashmap...

Also, don't change linker for ICU since libicu also uses libstdc++.
2018-02-12 18:41:36 -08:00
Ebrahim Byagowi
4af3c5e258 Move linker specifying to a better place 2018-02-12 18:39:42 -08:00
Rod Sheeter
d1a4d5616f output format 12 as enc 10 to match how Roboto did it 2018-02-12 16:25:32 -08:00
Rod Sheeter
afb1da3a18 auto-completed the wrong gids_to_retain 2018-02-12 14:37:47 -08:00
Rod Sheeter
1330edc4fe Use functions to get new gids. Avoid 0; fonttools drops it from cmap. 2018-02-12 14:29:23 -08:00
Garret Rieger
e8318188c0 [subset] Fix loca generation, was previously writing the original glyph starting offset. 2018-02-12 11:38:28 -08:00
Khaled Hosny
0b94d590d9 Rename --with-stdcpp → --with-libstdc++
Also improve wording a bit and fix make check in --with-libstdc++=yes.
2018-02-12 12:37:41 -07:00
Rod Sheeter
a5713bc2cb we love all our groups 2018-02-12 11:30:57 -08:00
Rod Sheeter
692f86e569 drop GDEF, GPOS, GSUB, and dsig 2018-02-12 11:30:57 -08:00
Garret Rieger
83e1ef9215 [subset] Set the new number of glyphs in maxp. 2018-02-12 11:22:50 -08:00
Garret Rieger
427f9e4b90 Don't force loca version to long. 2018-02-12 11:18:28 -08:00
Garret Rieger
5df080bf15 Destroy the subset plan at the end of subsetting. 2018-02-12 10:15:59 -08:00
Rod Sheeter
0301e5be28 Build a working cmap format 12 2018-02-12 10:12:11 -08:00
Rod Sheeter
ebd31d376d subset for real 2018-02-12 10:10:08 -08:00
Rod Sheeter
62c7d677e8 C-style comments 2018-02-12 10:09:35 -08:00
Ebrahim Byagowi
91f0d51f05
Fix symbol exporting issue on msys2 and bringing all the bots (#781) 2018-02-12 17:20:12 +03:30
Ebrahim Byagowi
133e17fe23
Minor 2018-02-12 15:24:22 +03:30
Ebrahim Byagowi
16f5b53eec
Minor, don't skip the whole test when one .def file not found 2018-02-12 15:18:13 +03:30
Ebrahim Byagowi
a9b650d384
Apply check-defs.sh to -icu and -subset, toward mingw fix (#780) 2018-02-12 15:10:13 +03:30
Ebrahim Byagowi
2efc896550
Add --with-stdcpp for ossfuzzer and mupdf use (#770) 2018-02-12 12:00:07 +03:30
Behdad Esfahbod
7747bdb11b Remove linker selection from hb-ucdn
Since this is a convenience library, it's not actually linked. Or so I think.
Hoping this might fix this Appveyor failure:

https://ci.appveyor.com/project/harfbuzz/harfbuzz/build/job/9884jyb5vryja9pw

Making all in hb-ucdn
make[4]: Entering directory '/c/projects/harfbuzz/src/hb-ucdn'
  CC       libhb_ucdn_la-ucdn.lo
  GEN      libhb-ucdn.la
/bin/sh: libhb_ucdn_la-ucdn.lo: command not found
make[4]: *** [Makefile:404: libhb-ucdn.la] Error 127
make[4]: Leaving directory '/c/projects/harfbuzz/src/hb-ucdn'
make[3]: *** [Makefile:2548: all-recursive] Error 1
make[3]: Leaving directory '/c/projects/harfbuzz/src'
make[2]: *** [Makefile:1382: all] Error 2
make[2]: Leaving directory '/c/projects/harfbuzz/src'
make[1]: *** [Makefile:486: all-recursive] Error 1
make[1]: Leaving directory '/c/projects/harfbuzz'
make: *** [Makefile:418: all] Error 2
2018-02-11 19:12:52 -08:00
Behdad Esfahbod
90d1c740c3 Add MSVC to no-visibility list 2018-02-11 19:08:59 -08:00
Behdad Esfahbod
0db6c6f214 Add Sun compiler to no-visibility as well
Fixes https://github.com/harfbuzz/harfbuzz/pull/776
2018-02-11 18:29:01 -08:00
Behdad Esfahbod
dde6448379 Another try at fixing multiple-defintion of NullPool
This one might do it...
2018-02-11 18:24:22 -08:00
Behdad Esfahbod
41906cd5ef [subset] Another fixup
I broke this in c31fcf4c58
2018-02-11 19:46:06 -06:00
Behdad Esfahbod
cd32177a32 Try at fixing multiple-definition of NullPool
If we don't have visibility, make NullPool static.
2018-02-11 19:36:00 -06:00
Behdad Esfahbod
3d421ce307 [subset] Use auto_array_t where it does make sense
Better fix for https://github.com/harfbuzz/harfbuzz/pull/775
2018-02-11 19:01:44 -06:00
Behdad Esfahbod
9aa2eb61e6 Minor 2018-02-11 19:00:49 -06:00
Ebrahim Byagowi
c8d4c2e32f
Initialize bad_indices on hb-subset (#775) 2018-02-11 13:15:44 +03:30
Ebrahim Byagowi
5845e5ca3b
fix gobject compile issue (#773) 2018-02-11 12:03:33 +03:30
Behdad Esfahbod
9b5af3ec7f [gpos] Adjust mark attachment heuristic
Hopefully it...
fixes https://github.com/harfbuzz/harfbuzz/issues/740
2018-02-10 21:50:44 -06:00
Behdad Esfahbod
7039803b51 Fix djgpp bot 2018-02-10 15:47:50 -06:00
Behdad Esfahbod
cdab20df1e Minor 2018-02-10 15:45:17 -06:00
Ebrahim Byagowi
203b647530 Favor use of static instead HB_INTERNAL 2018-02-10 15:44:09 -06:00
Behdad Esfahbod
43314ff4c0 More fixes
test-subset-glyf still failing. No idea why :(
2018-02-10 15:40:03 -06:00
Behdad Esfahbod
a981d798ea Fix more build issues
Hopefully most bots come back with this...
2018-02-10 15:19:27 -06:00
Ebrahim Byagowi
6c4ca6135a
Hide more symbols of hb-subset (#771) 2018-02-11 00:42:06 +03:30
Behdad Esfahbod
c31fcf4c58 [subset] Replace auto_array with prealloced_array
auto_array has constructor/destructor. Cannot be used in POD object, as the clang
bots all noticed...
2018-02-10 14:20:10 -06:00
Behdad Esfahbod
931d67900e Fix some other bots 2018-02-10 14:11:16 -06:00
Behdad Esfahbod
bfa871634c Minor 2018-02-10 14:06:53 -06:00
Ebrahim Byagowi
844f48ea9a
Fix symbol exporting and libstdc++ linkage of hb-subset (#769) 2018-02-10 23:13:12 +03:30
Behdad Esfahbod
91519c6a5b [aat] Add buffer messages 2018-02-10 13:35:17 -06:00
Behdad Esfahbod
af274507c4 Minor 2018-02-10 13:25:49 -06:00
Behdad Esfahbod
570d523761 [subset] Merge remote-tracking branch 'googlefonts/master' 2018-02-10 13:24:22 -06:00
Behdad Esfahbod
71130a20fa Replace Supplier.advance with Supplier::operator+= 2018-02-10 13:15:57 -06:00
Ebrahim Byagowi
ad575a5f47
Fix cast warnings on clang (#768) 2018-02-10 19:50:11 +03:30
Garret Rieger
d18decd201 In glyf subsetting add suport for writing out a short loca table when possible. 2018-02-09 18:41:21 -08:00
Rod Sheeter
9275bd03ea First pass at building a cmap 2018-02-09 17:40:52 -08:00
Garret Rieger
d2170d1478 Check for failures from add table. 2018-02-09 17:27:23 -08:00
Rod Sheeter
4816064c0e add missing return 2018-02-09 17:14:37 -08:00
Garret Rieger
0089443756 Keep a second set of glyph ids in subset plan which is sorted by glyph id and always has gid 0 2018-02-09 16:22:09 -08:00
Garret Rieger
3bc81558d8 Formatting for hb-subset-plan. 2018-02-09 16:06:33 -08:00
Behdad Esfahbod
8cef3a6199 Try fixing build with Sun Studio
Trying to fix:
https://circleci.com/gh/harfbuzz/harfbuzz/6635

Also part of:
https://github.com/harfbuzz/harfbuzz/issues/630
2018-02-09 16:04:23 -06:00
Garret Rieger
86aa4b3ba7 Return empty face on hb_subset failure instead of null. Plus some minor cleanups for _add_head_and_set_loca_version 2018-02-09 13:54:43 -08:00
Behdad Esfahbod
d45f240e4e Typo 2018-02-09 15:51:45 -06:00
Behdad Esfahbod
3b7aa651b4 [docs] Improve UNSAFE_TO_BREAK docs 2018-02-09 15:43:20 -06:00
bungeman
671f0a7733 Documentation for HB_GLYPH_FLAG_UNSAFE_TO_BREAK.
HB_GLYPH_FLAG_UNSAFE_TO_BREAK means that the glyph with this flag is somehow affected by the previous logical glyph (the previous index in the buffer if ltr and the next index if the buffer is rtl). If these two glyphs are separated by a break (line or otherwise) then the underlying text should be re-shaped on both sides up to corresponding position in the text of some glyph not marked with this flag.
2018-02-09 15:39:45 -06:00
Garret Rieger
1582eabee6 Update head table with loca format selected by glyf+loca subsetting. 2018-02-09 12:52:08 -08:00
Garret Rieger
335bbaa66f Remove uneeded code in hb-subset. 2018-02-09 10:55:15 -08:00
Rod Sheeter
1cd98d05e0 Create the groups for a cmap format12. Does not yet build the actual table. 2018-02-08 19:39:57 -08:00
Rod Sheeter
59c658c8d5 capture codepoints sorted so we can use them for cmap later. one day we will have a map 2018-02-08 19:22:47 -08:00
Rod Sheeter
5cca0c07af fix comment 2018-02-08 19:05:46 -08:00
Rod Sheeter
a19138e668 comment the serialization of table 2018-02-08 19:04:06 -08:00
Garret Rieger
5a34114f96 Add an extra entry to the end of the loca table to identify the end of the last glyph's data. 2018-02-08 18:32:24 -08:00
Garret Rieger
aac7d96212 Apply per table subsetting while building the new face in hb_subset. 2018-02-08 18:18:16 -08:00
Behdad Esfahbod
9682ef135f Minor fixups 2018-02-08 17:35:57 -06:00
Garret Rieger
42234424a0 Fix include gaurds and include order in hb-subset-glyf and hb-subset-plan 2018-02-08 17:31:11 -06:00
Garret Rieger
8e9fd6f1ab Implement basic loca (long version only) subsetting. 2018-02-08 17:31:11 -06:00
Garret Rieger
f9c665fed1 Update interface to hb-subset-glyf to subset glyf and loca. 2018-02-08 17:31:11 -06:00
Garret Rieger
217ed5e3c8 Cleanups in hb-subset-glyf and hb-subset-plan. 2018-02-08 17:31:11 -06:00
Rod Sheeter
13193a9b97 move to the hb_face_t dest pattern 2018-02-08 17:31:11 -06:00
Rod Sheeter
0859a00669 sketch a subset<T> and call it for cmap. Add subset to cmap, albeit not working even for the msot basic case just yet 2018-02-08 17:31:11 -06:00
Behdad Esfahbod
c1ab95dd90 Fix overflow in space fallback shaping
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=657466
2018-02-08 17:22:07 -06:00
Behdad Esfahbod
b220b5a444 Avoid undefined-behavior in fallback mark positioning
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5584
2018-02-08 17:14:52 -06:00
Behdad Esfahbod
3b68a03a1c [fuzzer] Minor 2018-02-08 17:00:37 -06:00
Behdad Esfahbod
5021ba2a21 [aat] Minor 2018-02-08 15:11:28 -06:00
Behdad Esfahbod
77ad8b5c8b TODO 2018-02-07 21:54:33 -06:00
Behdad Esfahbod
941bbd9f25 [subset] Fix thinko 2018-02-07 21:49:01 -06:00
Behdad Esfahbod
931f8b7eb5 Fix another thinko 2018-02-07 21:42:03 -06:00
Behdad Esfahbod
39b86695cf [subset] Fix thinko 2018-02-07 21:37:03 -06:00
Behdad Esfahbod
eeffabc875 Build 2018-02-07 21:34:05 -06:00
Behdad Esfahbod
c479a59988 [subset] Assemble font 2018-02-07 21:26:04 -06:00
Behdad Esfahbod
34ac3548b7 [set] Respect stride
Ouch!
2018-02-07 18:07:45 -06:00
Behdad Esfahbod
577becaf7b [subset] Fixup 2018-02-07 17:38:40 -06:00
Behdad Esfahbod
c9acab3cfb Whitespace 2018-02-07 17:28:43 -06:00
Behdad Esfahbod
7fd0b61dee [subset] Create new face and copy all tables to it
test-subset fails now because subset-face does not know how to compile itself.
2018-02-07 17:28:43 -06:00
Garret Rieger
4e1abe2ce0 Refactor subset glyf to remove multiple calls to glyf.fini() 2018-02-07 17:28:43 -06:00
Garret Rieger
0a5d1440f8 Add implementation of glyf subsetting. 2018-02-07 17:28:43 -06:00
Garret Rieger
05d65baa1b Extract glyf offset calculation into it's own method. 2018-02-07 17:28:43 -06:00
Behdad Esfahbod
6d7c6e19dc Fix two undefined-behavior issues
Fixes https://github.com/harfbuzz/harfbuzz/issues/761
Fixes https://github.com/harfbuzz/harfbuzz/issues/762
2018-02-07 14:09:56 -06:00
Behdad Esfahbod
b87cbe2bec Try fixing build for platforms that have no visibility attributes 2018-02-07 14:11:26 -05:00
Behdad Esfahbod
6804b61d2e [subset] Add hb_subset_face
It's a hb_face_t that has add_table() and in the future knows how to
compile itself into a font blob.
2018-02-07 13:47:35 -05:00
Behdad Esfahbod
af02812fc5 [subset] Change hb_subset API to remove hb_subset_face_t 2018-02-07 13:07:46 -05:00
Behdad Esfahbod
2da0d87e76 Remove NullPool visibility hack
We keep a separate private NullPool in libharfbuzz-subset.so
This can fire back later since now there are two separate null objects,
and comparisons to the null pool can be confused.  Something to deal
with when it comes up. Ouch!
2018-02-07 12:44:35 -05:00
Rod Sheeter
b95aa204ee glyph ids to retain should most likely keep the glyph id not the codepoint 2018-02-07 12:41:21 -05:00
Rod Sheeter
91428713bd Remove \ns leftover from fprintf 2018-02-07 12:41:21 -05:00
Rod Sheeter
eb485bb9e9 Horrid hack to assign new gids. Use DEBUG_MSG over fprintf 2018-02-07 12:41:21 -05:00
Rod Sheeter
8b80cbb1dd Add a subset debug category 2018-02-07 12:41:21 -05:00
Behdad Esfahbod
ee433d36fa [aat] Set debug lookup_index 2018-02-07 12:41:21 -05:00
Rod Sheeter
38df1ec8e0 TEMPORARY: remove HB_INTERNAL from null pool so subset builds again 2018-02-07 12:41:21 -05:00
Garret Rieger
53aa0e9542 Add an instance of glyf::accelerator_t to hb-subset-glyf. 2018-02-07 12:41:21 -05:00
Rod Sheeter
ef62dfed3f add back assert_pod 2018-02-07 12:41:21 -05:00
Rod Sheeter
d0ce3c66e2 Resolve codepoints:glyph ids. Does not compile; undefined reference to OT::_hb_NullPool 2018-02-07 12:41:21 -05:00
Garret Rieger
6a45e5df24 Add skeleton of hb-subset-glyf, call if from hb_subset(...) 2018-02-07 12:41:21 -05:00
Garret Rieger
31ec3c2ec4 Create a subset plan in hb_subset. 2018-02-07 12:41:21 -05:00
Garret Rieger
25e9173fe8 Make hb-subset-plan private. 2018-02-07 12:41:21 -05:00
Garret Rieger
af46a4da5a Move definition of hb_subset_input into hb-subset-private.hh. 2018-02-07 12:41:21 -05:00
Garret Rieger
7481f0ce21 Add codepoints to subset input. 2018-02-07 12:41:21 -05:00
Garret Rieger
1cfe650f02 Add a basic sketch of hb-subset-plan. 2018-02-07 12:41:21 -05:00
Behdad Esfahbod
126ffdbe95 [aat] Fix debug compile 2018-02-07 12:26:57 -05:00
Behdad Esfahbod
2971e9da49 [aat] Adjust unsafe-to-break logic some more
I believe I'm happy with it now.
2018-02-06 11:48:04 -05:00
Behdad Esfahbod
f49256d80f [aat] Simplify unsafe-to-break logic 2018-02-06 11:39:36 -05:00
Behdad Esfahbod
cc1e0840ba [buffer] Tweak diff re glyph_flags again
We expect the buffer to have no flags that the reference doesn't...
Meh. Makes MORX tests pass now. Need to better define the behavior.
2018-02-06 10:20:48 -05:00
Ebrahim Byagowi
d49ae5154e Fix hb-buffer logic error 2018-02-06 10:13:11 -05:00
Behdad Esfahbod
f41b92134a Fix fallthrough compiler warning with gcc >= 7
Fixes https://github.com/harfbuzz/harfbuzz/issues/755
2018-02-05 19:51:09 -05:00
Behdad Esfahbod
0ff007daaa [subset] Minor 2018-02-05 19:36:38 -05:00
Behdad Esfahbod
ae39fc8171 [subset] Build hb-subset into separate libharfbuzz-subset.so 2018-02-04 20:18:52 -05:00
Behdad Esfahbod
257022b178
Merge pull request #745 from googlefonts/master
Interface for hb_subset, skeleton for the hb-subset cli, and basic testing rigging.
2018-02-04 20:01:35 -05:00
Behdad Esfahbod
54e6efadd6 [aat] Fix unsafe-to-break
At any position, if state is not zero, mark unsafe-to-break before,
unless we can reason it safe.

At any position, if there's an action entry for end-of-text, mark
unsafe to break.

Also changes buffer diff impl to allow for flag differences as long
as the buffer glyph flags are superset of reference glyph flags.

With this, all MORX tests pass.
2018-02-04 17:18:54 -05:00
Garret Rieger
f83a43b561 Add CMake configuration for all of the new subsetting code. 2018-02-04 12:57:34 -08:00
Garret Rieger
34fa7b3ad2 Whitespace 2018-02-04 12:57:34 -08:00
Garret Rieger
8c3a672737 Get test-subset to pass. 2018-02-04 12:57:34 -08:00
Garret Rieger
74d39ed263 Attach add a hb_face_t to hb_subset_face_t. 2018-02-04 12:57:34 -08:00
Garret Rieger
a2965f2ea5 Add a basic implementation of hb-subset to enable compilation of test-subset. 2018-02-04 12:57:33 -08:00
Garret Rieger
cf403e1a53 Add hb-subset.h to hb.h 2018-02-04 12:57:33 -08:00
Garret Rieger
c02573516c Fix typo in hb-subset.h 2018-02-04 12:57:33 -08:00
Rod Sheeter
9ccb8366f6 Start to sketch APIs for subsetting 2018-02-04 12:57:33 -08:00
Behdad Esfahbod
89b1906d99 [aat] More adjustment to ContextualSubtable
See comment.

With this, MORX-20 passes if I turn --verify off.  Our unsafe-to-break
logic is currently broken in presence of end-of-text actions.  That's,
ugh, extra work to fix.  Let me try...
2018-02-04 14:45:02 -05:00
Behdad Esfahbod
8be596f0b7 [aat] In ContextualSubstitute, apply end-of-text action to last glyph 2018-02-04 14:40:17 -05:00
Behdad Esfahbod
c0b1c7eb2e [aat] Remove unneeded check 2018-02-04 14:19:41 -05:00
Behdad Esfahbod
aed32589af [aat] In ContextualSubtable, mark mark after substituting mark
Fixes MORX-21.
2018-02-04 12:36:54 -05:00
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