Behdad Esfahbod [Tue, 31 Jul 2018 18:45:32 +0000 (11:45 -0700)]
[khmer] Rewrite most of shaper to better follow spec
Khmer spec has only one reordering phase, and only simple prebase
matra and Coeng-Ro reordering. Implement that. Specifically,
this was done to address recognizing different orders of the matra
and Coeng-Ro sequence. That said, some combinations are now
reordered differently from Uniscribe. Not clear if that's intended
or a bug in Uniscribe. The following two sequences render the same
in Uniscribe whereas we reorder them differently:
U+17A0,U+17D2,U+179A,U+17C2
U+17A0,U+17C2,U+17D2,U+179A
For that reason, our test suite numbers regressed slightly. Used
to be at 34 for fails, now at:
KHMER: 299080 out of 299124 tests passed. 44 failed (0.0147096%)
But generally a good change, and removed lots of code.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1026
Behdad Esfahbod [Tue, 31 Jul 2018 08:27:04 +0000 (01:27 -0700)]
[shaper] Move code around
Behdad Esfahbod [Tue, 31 Jul 2018 08:15:04 +0000 (01:15 -0700)]
[shaper] Remove a macro
Behdad Esfahbod [Tue, 31 Jul 2018 08:02:31 +0000 (01:02 -0700)]
[atomic] Make pointer get op relaxed instead of acquire
We only use it before cmpexch, so relaxed is fine and faster for
common case.
Behdad Esfahbod [Tue, 31 Jul 2018 00:03:06 +0000 (17:03 -0700)]
[serialize] Increase stage count from 8 to 32
Indic shaper uses many stages. Now we are provably not limiting
functionality whereas the previous limit of 8 was assuming real-world
practices.
Behdad Esfahbod [Mon, 30 Jul 2018 23:59:41 +0000 (16:59 -0700)]
[serialize] Remove unused truncate() method
Garret Rieger [Fri, 27 Jul 2018 00:42:02 +0000 (17:42 -0700)]
[subset] During lookup collection remember the features we've already processed.
Behdad Esfahbod [Fri, 27 Jul 2018 21:55:29 +0000 (14:55 -0700)]
Minor
Behdad Esfahbod [Thu, 26 Jul 2018 00:37:38 +0000 (17:37 -0700)]
[serialize] Allocate for markFilteringSet
Behdad Esfahbod [Thu, 26 Jul 2018 00:22:05 +0000 (17:22 -0700)]
Minor
prrace [Fri, 27 Jul 2018 20:58:27 +0000 (13:58 -0700)]
Fix unlikely leaks
Behdad Esfahbod [Thu, 26 Jul 2018 00:07:17 +0000 (17:07 -0700)]
Add hb-iter-private.hh
Unused so far.
Behdad Esfahbod [Wed, 25 Jul 2018 23:58:47 +0000 (16:58 -0700)]
Move some code from hb-open-type-private.hh to hb-machinery-private.hh
Behdad Esfahbod [Wed, 25 Jul 2018 23:01:37 +0000 (16:01 -0700)]
[closure] Allocate out set on the stack
Behdad Esfahbod [Wed, 25 Jul 2018 21:30:07 +0000 (14:30 -0700)]
Fix compile
Behdad Esfahbod [Wed, 25 Jul 2018 01:00:14 +0000 (18:00 -0700)]
[coretext] Add note
Garret Rieger [Wed, 25 Jul 2018 20:39:17 +0000 (13:39 -0700)]
[subset] Only used reachable lookups for gsub closure.
Behdad Esfahbod [Tue, 24 Jul 2018 16:43:27 +0000 (09:43 -0700)]
[closure] Separate in and out glyphs
Fixes https://github.com/harfbuzz/harfbuzz/issues/1107
Garret Rieger [Mon, 23 Jul 2018 22:37:18 +0000 (15:37 -0700)]
[subset] Limit the iterations of the closure algorithm.
Prevents O(n^2) run times.
Behdad Esfahbod [Mon, 23 Jul 2018 22:01:39 +0000 (15:01 -0700)]
Fix visibility on mingw32
Should fix bots again.
Behdad Esfahbod [Mon, 23 Jul 2018 21:44:10 +0000 (14:44 -0700)]
Fix infinite loop in loading num_glyphs within sanitizer
Behdad Esfahbod [Mon, 23 Jul 2018 20:24:26 +0000 (13:24 -0700)]
One more visibility trick
Should fix Windows build again.
Behdad Esfahbod [Mon, 23 Jul 2018 19:00:02 +0000 (12:00 -0700)]
One more
Behdad Esfahbod [Mon, 23 Jul 2018 18:57:45 +0000 (11:57 -0700)]
Remove unnecessary OT:: namespace specifiers
Behdad Esfahbod [Mon, 23 Jul 2018 18:46:46 +0000 (11:46 -0700)]
Set num glyphs on sanitizer reference_table()
Move out-of-class definitions of two methods to hb-static so they
are accessible in libharfbuzz-subset.
Behdad Esfahbod [Mon, 23 Jul 2018 05:50:58 +0000 (22:50 -0700)]
Remove Sanitizer<>
Behdad Esfahbod [Mon, 23 Jul 2018 05:49:26 +0000 (22:49 -0700)]
Port rest of code away from Sanitizer<>
Behdad Esfahbod [Mon, 23 Jul 2018 05:47:19 +0000 (22:47 -0700)]
Port dump-emoji away from Sanitizer<>
Behdad Esfahbod [Mon, 23 Jul 2018 05:45:26 +0000 (22:45 -0700)]
.
Behdad Esfahbod [Mon, 23 Jul 2018 05:44:22 +0000 (22:44 -0700)]
Minor
Behdad Esfahbod [Mon, 23 Jul 2018 05:40:56 +0000 (22:40 -0700)]
Port sbix off of Sanitizer<>
Behdad Esfahbod [Mon, 23 Jul 2018 05:40:32 +0000 (22:40 -0700)]
Port more off of Sanitizer<>
Behdad Esfahbod [Mon, 23 Jul 2018 05:24:31 +0000 (22:24 -0700)]
Add sanitizer reference_table, also fix clang build
Clang is being really peculiar. Fix with:
- inline hb_blob_t *sanitize (hb_blob_t *blob) { return c->sanitize<Type> (blob); }
+ inline hb_blob_t *sanitize (hb_blob_t *blob) { return c[0].template/*clang idiosyncrasy*/sanitize_blob<Type> (blob); }
David Corbett [Fri, 13 Apr 2018 22:45:37 +0000 (18:45 -0400)]
Order Chakma split vowels in accordance with NFC
Fixes #1105.
Ebrahim Byagowi [Sat, 21 Jul 2018 16:44:48 +0000 (21:14 +0430)]
Add a new API, hb_ot_layout_get_feature_name_ids (#976)
This new API returns cvXX and ssXX related NameId, things like
featUiLabelNameId, featUiTooltipTextNameId, sampleTextNameId, ... of cvXX
and UINameId of ssXX, in a unified way.
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.
Ebrahim Byagowi [Tue, 17 Jul 2018 18:59:16 +0000 (23:29 +0430)]
Remove dump-fon (#1100)
It had interesting stuffs like EXE parsing and
big-endian parsers but added in an attempt to find
a solution for #681 which later found not related.
Ebrahim Byagowi [Tue, 17 Jul 2018 18:02:37 +0000 (22:32 +0430)]
Remove AAT's gcid/fmtx (#1099)
We are not going to use them, at least in the foreseeable future
Behdad Esfahbod [Tue, 17 Jul 2018 17:17:59 +0000 (19:17 +0200)]
Fix hb_face_count() sanitize referencing
Behdad Esfahbod [Tue, 17 Jul 2018 17:09:03 +0000 (19:09 +0200)]
Remove TODO that is not gonna be done
Previously the idea was to cache sanitize results externally (think,
in Fontconfig) and avoid resanitizing every time. That's, not a good
idea.
Behdad Esfahbod [Tue, 17 Jul 2018 16:45:25 +0000 (18:45 +0200)]
Move sanitizer code around a bit
Behdad Esfahbod [Tue, 17 Jul 2018 16:14:45 +0000 (18:14 +0200)]
[aat] Update for blob changes
Also, uncomment code again, just "if (0)" it out, so it doesn't get stale again.
Behdad Esfahbod [Tue, 17 Jul 2018 11:20:40 +0000 (13:20 +0200)]
1.8.4
Behdad Esfahbod [Tue, 17 Jul 2018 08:57:01 +0000 (10:57 +0200)]
Reland "Implement C++11-style GCC builtin atomic ops"
Fixed the crasher in it.
Behdad Esfahbod [Tue, 17 Jul 2018 08:59:19 +0000 (10:59 +0200)]
Minor
Behdad Esfahbod [Tue, 17 Jul 2018 08:50:01 +0000 (10:50 +0200)]
Revert "Implement C++11-style GCC builtin atomic ops"
This reverts commit
21fa170f0bfb0109c506ed17f5aff8b062564ffa.
Is crashing. Oops.
Behdad Esfahbod [Mon, 16 Jul 2018 15:58:02 +0000 (17:58 +0200)]
Implement C++11-style GCC builtin atomic ops
Hopefully fixes bots.
Behdad Esfahbod [Mon, 16 Jul 2018 13:44:58 +0000 (15:44 +0200)]
Relax C++11 atomic ops memory order to acquire-release
Behdad Esfahbod [Mon, 16 Jul 2018 13:41:09 +0000 (15:41 +0200)]
Implement C++11 <atomic> operations
Fixes https://github.com/harfbuzz/harfbuzz/issues/345
Cosimo Lupo [Mon, 16 Jul 2018 12:42:43 +0000 (14:42 +0200)]
Merge pull request #1094 from anthrotype/fix-appveyor-msys2
appveyor.yml: try updating msys2 to fix failing mingw-w64-x86_64 build
Cosimo Lupo [Mon, 16 Jul 2018 12:14:42 +0000 (14:14 +0200)]
appveyor.yml: try only updating msys2 core, not the rest of the packages
maybe it'll get a bit faster
Cosimo Lupo [Mon, 16 Jul 2018 10:57:27 +0000 (12:57 +0200)]
appveyor.yml: pass --needed option to pacman
so it won't attempt reinstalling packages which are already installed
Cosimo Lupo [Mon, 16 Jul 2018 10:41:59 +0000 (12:41 +0200)]
appveyor.yml: try updating msys2 to fix failing mingw-w64-x86_64 build
https://github.com/harfbuzz/harfbuzz/pull/1093#issuecomment-
405201903
https://ci.appveyor.com/project/harfbuzz/harfbuzz/build/job/ky7lao1ii1bi7ew4#L71
Behdad Esfahbod [Wed, 11 Jul 2018 15:27:23 +0000 (17:27 +0200)]
Move _hb_alignof later again
It uses constexpr...
Behdad Esfahbod [Wed, 11 Jul 2018 15:23:53 +0000 (17:23 +0200)]
Make hb_vector_t 8 bytes smaller
Behdad Esfahbod [Wed, 11 Jul 2018 15:00:59 +0000 (17:00 +0200)]
Align NullPool and CrapPool to HB_VECTOR_SIZE
Behdad Esfahbod [Wed, 11 Jul 2018 15:00:13 +0000 (17:00 +0200)]
Fix return type of alignof() fallback
Behdad Esfahbod [Wed, 11 Jul 2018 14:44:21 +0000 (16:44 +0200)]
Minor
Behdad Esfahbod [Wed, 11 Jul 2018 13:27:37 +0000 (15:27 +0200)]
Minor
Behdad Esfahbod [Wed, 11 Jul 2018 13:27:13 +0000 (15:27 +0200)]
1.8.3
Behdad Esfahbod [Tue, 10 Jul 2018 14:34:31 +0000 (16:34 +0200)]
Fix shift
Behdad Esfahbod [Tue, 10 Jul 2018 14:05:03 +0000 (16:05 +0200)]
Put back include dependencies
Behdad Esfahbod [Tue, 10 Jul 2018 14:03:31 +0000 (16:03 +0200)]
Move more stuff from hb-private.hh to hb-dsalgs.hh
Behdad Esfahbod [Tue, 10 Jul 2018 13:49:05 +0000 (15:49 +0200)]
Move more stuff to hb-dsalgs.hh
Behdad Esfahbod [Tue, 10 Jul 2018 13:23:08 +0000 (15:23 +0200)]
Move hb_bytes_t to hb-dsalgs.hh
Behdad Esfahbod [Tue, 10 Jul 2018 12:42:10 +0000 (14:42 +0200)]
Remove hb_auto_array_t
Behdad Esfahbod [Tue, 10 Jul 2018 12:41:04 +0000 (14:41 +0200)]
Include more basic internal headers from hb-private.hh
Behdad Esfahbod [Tue, 10 Jul 2018 12:12:37 +0000 (14:12 +0200)]
Minor renamings of internal inline functions
Behdad Esfahbod [Tue, 10 Jul 2018 12:05:00 +0000 (14:05 +0200)]
Move hb_vector_t and hb_lockable_set_t to hb-dsalgs.hh
Behdad Esfahbod [Tue, 10 Jul 2018 12:03:58 +0000 (14:03 +0200)]
Move hb_stable_sort to hb-dsalgs.hh
Also, include hb-dsalgs.hh from end of hb-pricate.hh
Behdad Esfahbod [Tue, 10 Jul 2018 12:01:39 +0000 (14:01 +0200)]
Minor
Behdad Esfahbod [Tue, 10 Jul 2018 11:47:41 +0000 (13:47 +0200)]
Fix syntax
Oops.
Behdad Esfahbod [Tue, 10 Jul 2018 11:17:27 +0000 (13:17 +0200)]
Add posix_memalign() fallback
Behdad Esfahbod [Tue, 10 Jul 2018 11:16:52 +0000 (13:16 +0200)]
Always compile (but not use) alignof() and round() fallback codes
Catches compile-errors in them better.
Behdad Esfahbod [Tue, 10 Jul 2018 11:03:42 +0000 (13:03 +0200)]
Fix alignof impl
Behdad Esfahbod [Tue, 10 Jul 2018 10:58:13 +0000 (12:58 +0200)]
Add fallback implementation for constexpr and alignof
Behdad Esfahbod [Tue, 10 Jul 2018 10:51:29 +0000 (12:51 +0200)]
Minor
Cosimo Lupo [Mon, 9 Jul 2018 18:24:22 +0000 (20:24 +0200)]
Merge pull request #1091 from anthrotype/fix-gen-def-py
gen-def.py: pass headers as arguments so that msys2 can convert posix paths
Cosimo Lupo [Mon, 9 Jul 2018 17:54:23 +0000 (18:54 +0100)]
CMakeLists.txt: don't pass header args as single space-separated string
let python's parse command-line args as usual
Cosimo Lupo [Mon, 9 Jul 2018 17:48:20 +0000 (18:48 +0100)]
CMakeLists.txt: pass headers as arguments to gen-def.py; call using PYTHON_EXECUTABLE
Cosimo Lupo [Mon, 9 Jul 2018 17:26:44 +0000 (18:26 +0100)]
src/Makefile.am: pass headers to gen-def.py as arguments, not env vars
Cosimo Lupo [Mon, 9 Jul 2018 17:11:29 +0000 (18:11 +0100)]
gen-def.py: pass headers as arguments so that msys2 can convert posix paths
When one is not using the msys2 python, the header files that are passed in as environment
variable cannot be found.
https://ci.appveyor.com/project/fonttools/ttfautohint-py/build/1.0.65/job/rkremny4jjid9nl2#L803
This is because msys2 shell and make use POSIX paths (e.g. /c/Users/clupo/...)
whereas non-msys2 python.exe uses native Windows paths (e.g. C:\Users\clupo\...).
Msys2 will automatically convert command line arguments (but not environment variables) from
POSIX to Windows paths when calling a native win32 executable, so we pass the header paths
as arguments instead of environment variables.
This way the gen-def.py script can support both mingw python running in an MSYS2 shell, and
native win32 python.
David Corbett [Fri, 6 Jul 2018 19:47:03 +0000 (15:47 -0400)]
Do not enforce a native direction of LTR for Runic
Fixes #481
David Corbett [Sat, 7 Jul 2018 15:08:17 +0000 (11:08 -0400)]
Regenerate the USE table for Grantha and Bhaiksuki (#1090)
Completes #1037 and fixes #1035.
Behdad Esfahbod [Thu, 5 Jul 2018 09:34:13 +0000 (14:04 +0430)]
Disable vectorization
Disable vectorization for now. To correctly use them, we should
use posix_memalign() to allocate them. Otherwise, can cause
misaligned access.
https://bugs.chromium.org/p/chromium/issues/detail?id=860184
Behdad Esfahbod [Thu, 5 Jul 2018 09:33:48 +0000 (14:03 +0430)]
Fix warning
../../src/hb-ot-layout-gsubgpos-private.hh:391:18: warning: missed loop optimization, the loop counter may overflow [-Wunsafe-loop-optimizations]
Behdad Esfahbod [Thu, 5 Jul 2018 08:46:00 +0000 (13:16 +0430)]
Allow disabling vector_size use
Ebrahim Byagowi [Wed, 4 Jul 2018 11:03:39 +0000 (15:33 +0430)]
Use CreateFileW explicitly and pass wchar_t to it (#1087)
Behdad Esfahbod [Tue, 3 Jul 2018 09:59:25 +0000 (14:29 +0430)]
[indic] Adjust left-matra repositioning and Halant,ZWJ sequence
From the new code (first paragraph is from the OT Devanagari spec.):
/* o Reorder matras:
*
* If a pre-base matra character had been reordered before applying basic
* features, the glyph can be moved closer to the main consonant based on
* whether half-forms had been formed. Actual position for the matra is
* defined as “after last standalone halant glyph, after initial matra
* position and before the main consonant”. If ZWJ or ZWNJ follow this
* halant, position is moved after it.
*
* IMPLEMENTATION NOTES:
*
* It looks like the last sentence is wrong. Testing, with Windows 7 Uniscribe
* and Devanagari shows that the behavior is best described as:
*
* "If ZWJ follows this halant, matra is NOT repositioned after this halant.
* If ZWNJ follows this halant, position is moved after it."
*
* Test case, with Adobe Devanagari or Nirmala UI:
*
* U+091F,U+094D,U+200C,U+092F,U+093F
* (Matra moves to the middle, after ZWNJ.)
*
* U+091F,U+094D,U+200D,U+092F,U+093F
* (Matra does NOT move, stays to the left.)
Fixes https://github.com/harfbuzz/harfbuzz/issues/1070
Test case added with Adobe Devanagari.
Behdad Esfahbod [Tue, 3 Jul 2018 08:34:05 +0000 (13:04 +0430)]
Fix unused function '_hb_mapped_file_destroy' if no mmap
Behdad Esfahbod [Tue, 3 Jul 2018 08:13:59 +0000 (12:43 +0430)]
1.8.2
Behdad Esfahbod [Tue, 3 Jul 2018 08:08:21 +0000 (12:38 +0430)]
Disable .dfont code for now
The get_table imple was wrong, as table offsets in a dfont are
relative to the resource. We were treating them as relative to
the big blob itself. To be fixed.
Part of https://github.com/harfbuzz/harfbuzz/pull/1085
Ebrahim Byagowi [Sun, 1 Jul 2018 11:02:43 +0000 (15:32 +0430)]
Fix trak table apply logic
In collaboration with Behdad
Ebrahim Byagowi [Sun, 1 Jul 2018 10:02:00 +0000 (14:32 +0430)]
Support dfont font files (#949)
Ebrahim Byagowi [Sat, 30 Jun 2018 21:24:14 +0000 (01:54 +0430)]
Improve nommap naming and use C style comments on create_from_file (#1084)
Behdad Esfahbod [Sat, 30 Jun 2018 11:29:25 +0000 (15:59 +0430)]
Adjust MarkBasePos heuristic in presence of MultipleSubst
From the issue:
"In this font, the virama,ya first forms a ligature, then decomposes back to
virama,ya. This causes those two to be marked parts of a MultipleSubst
sequence. When attaching the matra, we look for the first of the MultipleSubst
sequence because that's where we attach to (because of eg #740). In this case,
the first glyph in the MultipleSubst sequence is a mark, so we skip it and
attach to the base char before it."
Font in question is Nirmala UI from Windows 10. Test sequence:
U+0926,U+094D,U+092F,U+0941
Fixes https://github.com/harfbuzz/harfbuzz/issues/1020
Behdad Esfahbod [Sat, 30 Jun 2018 07:58:03 +0000 (12:28 +0430)]
[indic] Tweak for old-spec Bengali and halant-ya-halant
Fixes https://github.com/harfbuzz/harfbuzz/issues/1073
punchcutter [Mon, 25 Jun 2018 05:54:57 +0000 (22:54 -0700)]
Rebase and update USE overrides for Bhaiksuki Gap Fillers and Grantha Anusvara
Behdad Esfahbod [Sat, 30 Jun 2018 04:46:54 +0000 (09:16 +0430)]
[khmer] Fix infinite-loop in cluster merging
Indic shaper already had this check. We removed it when forking
Khmer shaper by mistake.
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1464623
Ebrahim Byagowi [Thu, 28 Jun 2018 10:02:36 +0000 (14:32 +0430)]
armcc compatibility, don't use EINTR if doesn't exist
Fixes #1081
Ebrahim Byagowi [Thu, 28 Jun 2018 08:52:21 +0000 (13:22 +0430)]
Minor on hb_blob_create_from_file, reuse ferror result
Oops