Henri Verbeet
30e8768d00
usp10: Validate substition record sequence indices in GSUB_apply_ContextSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-21 13:58:13 +02:00
Henri Verbeet
ebe75cb66c
usp10: Simplify the "sr_2" assignments in GSUB_apply_ContextSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-21 13:58:12 +02:00
Henri Verbeet
6c13170b95
usp10: Range check glyph counts in GSUB_apply_ContextSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-21 13:58:12 +02:00
Henri Verbeet
c5619beb77
usp10: Validate positioning record sequence indices in GPOS_apply_ContextPos().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:19 +02:00
Henri Verbeet
82d36ba63f
usp10: Simplify the "pr_2" assignment in GPOS_apply_ContextPos().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:17 +02:00
Henri Verbeet
1b02c1ac50
usp10: Range check glyph counts in GPOS_apply_ContextPos().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:15 +02:00
Henri Verbeet
d1ca880ec4
usp10: Validate substition record sequence indices in GSUB_apply_ChainContextSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:14 +02:00
Henri Verbeet
34a9400a89
usp10: Validate positioning record sequence indices in GPOS_apply_ChainContextPos().
...
The issue is somewhat theoretical, since in reasonbale fonts the indices
should always be valid, and in fact are fairly likely to be 0. On the other
hand, web fonts exist.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:10 +02:00
Henri Verbeet
9694aeb06d
usp10: Avoid special handling if the substitution count is 0 in GSUB_apply_ChainContextSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-06 19:00:34 +02:00
Henri Verbeet
f7b943edbc
usp10: Range check glyph counts in GSUB_apply_ChainContextSubst().
...
Like in GPOS_apply_ChainContextPos().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-06 19:00:32 +02:00
Henri Verbeet
24943fe5e2
usp10: Simplify the chaining context table assignments in GSUB_apply_ChainContextSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-06 19:00:30 +02:00
Henri Verbeet
02316e6613
usp10: Rename the chaining context tables in GSUB_apply_ChainContextSubst() to something more descriptive.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-06 19:00:28 +02:00
Henri Verbeet
0389768568
usp10: Return early if the number of positioning operations is 0 in GPOS_apply_ChainContextPos().
...
This preserves the current logic, but I wonder if we're not supposed to always
return "input_count". Returning 1 seems questionable if we matched more input
glyphs than that, and so does including the lookahead count.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-05 16:39:54 +02:00
Henri Verbeet
7dfe9b9c94
usp10: Range check glyph counts in GPOS_apply_ChainContextPos().
...
I.e., avoid accessing outside the "glyphs" array. If we're particularly
unlucky we may actually get a match against data outside the array.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-05 16:39:54 +02:00
Henri Verbeet
f6c0146499
usp10: Simplify the chaining context table assignments in GPOS_apply_ChainContextPos().
...
And avoid some endian conversions in the process.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-05 16:39:54 +02:00
Henri Verbeet
fb3ea0ae05
usp10: Rename the chaining context tables in GPOS_apply_ChainContextPos() to something more descriptive.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-05 16:39:54 +02:00
Nikolay Sivov
04e5466e12
usp10: Handle invalid arguments in ScriptIsComplex().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-03 19:34:27 +02:00
Jacek Caban
4553871614
usp10: Check if corresponding headers are present before accessing their feature lists in _initialize_feature_cache.
...
Based on feedback from Henri, fixes regression from commit
63bcfa3354
.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-31 17:08:08 +02:00
Henri Verbeet
63bcfa3354
usp10: Get rid of the code duplication between GSUB_initialize_feature_cache() and GPOS_expand_feature_cache().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 16:04:13 +02:00
Henri Verbeet
9b0f3f1bac
usp10: Get rid of some code duplication in GPOS_expand_feature_cache().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 16:04:13 +02:00
Henri Verbeet
0ffd5b45ea
usp10: Double the languages array size when growing it in GPOS_expand_language_cache().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 16:04:13 +02:00
Henri Verbeet
218be443b6
usp10: Double the scripts array size when growing it in GPOS_expand_script_cache().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 16:03:16 +02:00
Henri Verbeet
9a15753d40
usp10: Introduce a helper function to lookup a language in a LoadedScript structure.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 14:33:57 +02:00
Henri Verbeet
2a0ffc9852
usp10: Introduce a helper function to lookup a script in the script cache.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-24 12:44:54 +01:00
Henri Verbeet
213d3588a7
usp10: Avoid LPVOID.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-24 12:44:52 +01:00
Henri Verbeet
1403087954
usp10: Avoid LPCVOID.
...
And cleanup a few style issues along the way.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-24 12:44:50 +01:00
Henri Verbeet
a204e589b5
usp10: Avoid LPWSTR.
...
And cleanup a few style issues along the way.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-24 12:44:48 +01:00
Henri Verbeet
cdd47c3dc3
usp10: Avoid LPCWSTR.
...
And cleanup some style issues along the way.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-23 15:13:42 +01:00
Henri Verbeet
af617aacca
usp10: Avoid LPBYTE.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-23 15:13:40 +01:00
Henri Verbeet
34c2f74518
usp10: Avoid LPWORD.
...
And cleanup a style issue along the way.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-23 15:13:38 +01:00
Henri Verbeet
ab8ec605b8
usp10: Avoid LPPOINT.
...
And cleanup some style issues along the way.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-23 15:13:35 +01:00
Henri Verbeet
ba66b626eb
usp10: Avoid LPOUTLINETEXTMETRICW.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-20 13:22:45 +01:00
Henri Verbeet
df21247491
usp10: Make the script cache parameter to get_opentype_script() const.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-20 13:22:43 +01:00
Henri Verbeet
c8f87ad3ed
usp10: Make the script cache parameter to GPOS_apply_MarkToBase() const.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-20 13:22:41 +01:00
Henri Verbeet
cd9db34e51
usp10: Pass const metrics to GPOS_convert_design_units_to_device().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-20 13:22:40 +01:00
Henri Verbeet
6e2161670d
usp10/tests: Explicitly skip tests when required fonts are not available.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-20 13:22:38 +01:00
Nikolay Sivov
2cc730b4ad
usp10/tests: Fix a buffer leak (Valgrind).
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-14 22:07:36 +01:00
Henri Verbeet
c3dc9edc25
usp10: Use heap_free() instead of HeapFree().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-10 23:21:26 +01:00
Henri Verbeet
6a0e5bb79d
usp10: Use heap_alloc() instead of HeapAlloc().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-10 23:21:26 +01:00
Henri Verbeet
77e5a2fba9
usp10: Use heap_alloc_zero() instead of HeapAlloc() with HEAP_ZERO_MEMORY.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-10 23:21:26 +01:00
Henri Verbeet
3c704c2c16
usp10: Use bsearch() to lookup the script range in get_char_script().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-08 15:31:05 +01:00
Henri Verbeet
a523b46d0b
usp10: Introduce an enumeration for script types.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-08 15:31:03 +01:00
Henri Verbeet
502d23986c
usp10: Do not fall back to presentation form B if the contextual feature exists in ContextualShape_Arabic().
...
E.g., the base form of 'ا' may be the same as the isolated form, in which case
the "isol" feature may not have a substitution for it. At the same time, while
the presentation form B glyph may look the same or similar as the base form,
it may have a different glyph ID. This can break e.g.
GSUB_LOOKUP_CONTEXT_CHAINED substitutions because of the unexpected glyph ID.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-08 15:31:01 +01:00
Henri Verbeet
9db12225f4
usp10/tests: Add shaping tests for fLogicalOrder and fRTL.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-06 19:49:16 +01:00
Henri Verbeet
f13dea5684
usp10: Properly determine the glyph run direction when shaping Script_Arabic.
...
In particular, if fLogicalOrder and fRTL are both set, the glyph order is
swapped compared to the character order. In all other cases it's the same.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-06 19:49:16 +01:00
Henri Verbeet
c94a5fd28c
usp10: Take the script direction into account when applying OpenType features.
...
As opposed to just looking at the run direction.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-06 19:49:16 +01:00
Henri Verbeet
badb0a7530
usp10/tests: Add a ligature and diacritic to the syrc shaping test.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-06 19:49:15 +01:00
Henri Verbeet
04cd6029ea
usp10/tests: Add a latn shaping test with ligatures.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-06 19:49:15 +01:00
Henri Verbeet
1727dd4156
usp10: Use USP10_FindGlyphInLogClust() in UpdateClusters().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-01 15:56:58 +01:00
Henri Verbeet
bab506e1cd
usp10: Use memmove() in GSUB_apply_LigatureSubst().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-01 15:56:56 +01:00