Commit 25d43d7a authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

usp10: Cache the script with the feature so that in caches with multiple scripts…

usp10: Cache the script with the feature so that in caches with multiple scripts we do not fetch the wrong feature from the cache.
parent 9097226a
......@@ -1094,11 +1094,16 @@ static const char* get_opentype_script(HDC hdc, SCRIPT_ANALYSIS *psa, ScriptCach
static LPCVOID load_GSUB_feature(HDC hdc, SCRIPT_ANALYSIS *psa, ScriptCache *psc, const char* feat)
{
const GSUB_Feature *feature;
const char* script;
int i;
script = get_opentype_script(hdc,psa,psc,FALSE);
for (i = 0; i < psc->feature_count; i++)
if (strncmp(psc->features[i].tag,feat,4)==0)
{
if (strncmp(psc->features[i].tag,feat,4)==0 && strncmp(psc->features[i].script,script,4)==0)
return psc->features[i].feature;
}
feature = NULL;
......@@ -1146,6 +1151,7 @@ static LPCVOID load_GSUB_feature(HDC hdc, SCRIPT_ANALYSIS *psa, ScriptCache *psc
psc->features = HeapAlloc(GetProcessHeap(), 0, psc->feature_count * sizeof(LoadedFeature));
lstrcpynA(psc->features[psc->feature_count - 1].tag, feat, 5);
lstrcpynA(psc->features[psc->feature_count - 1].script, script, 5);
psc->features[psc->feature_count - 1].feature = feature;
return feature;
}
......
......@@ -82,7 +82,8 @@
#define GLYPH_MAX 65536
typedef struct {
char tag[4];
char tag[5];
char script[5];
LPCVOID feature;
} LoadedFeature;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment