mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 12:19:49 +00:00
usp10: Cache the script with the feature so that in caches with multiple scripts we do not fetch the wrong feature from the cache.
This commit is contained in:
parent
9097226a3c
commit
25d43d7a09
2 changed files with 9 additions and 2 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue