ICU-10684 merge in Layout updates
Upstream: http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/rev/9d29c19f1de1 X-SVN-Rev: 38142
This commit is contained in:
parent
32af290668
commit
3ff0ac77ad
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved
|
* (C) Copyright IBM Corp. and others 1998-2015 - All Rights Reserved
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ le_uint32 LookupProcessor::applySingleLookup(le_uint16 lookupTableIndex, GlyphIt
|
|||||||
le_int32 LookupProcessor::selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success)
|
le_int32 LookupProcessor::selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success)
|
||||||
{
|
{
|
||||||
le_uint16 lookupCount = featureTable.isValid()? SWAPW(featureTable->lookupCount) : 0;
|
le_uint16 lookupCount = featureTable.isValid()? SWAPW(featureTable->lookupCount) : 0;
|
||||||
le_int32 store = order;
|
le_int32 store = (le_uint32)order;
|
||||||
|
|
||||||
LEReferenceToArrayOf<le_uint16> lookupListIndexArray(featureTable, success, featureTable->lookupListIndexArray, lookupCount);
|
LEReferenceToArrayOf<le_uint16> lookupListIndexArray(featureTable, success, featureTable->lookupListIndexArray, lookupCount);
|
||||||
|
|
||||||
@ -122,6 +122,9 @@ le_int32 LookupProcessor::selectLookups(const LEReferenceTo<FeatureTable> &featu
|
|||||||
if (lookupListIndex >= lookupSelectCount) {
|
if (lookupListIndex >= lookupSelectCount) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (store >= lookupOrderCount) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
lookupSelectArray[lookupListIndex] |= featureMask;
|
lookupSelectArray[lookupListIndex] |= featureMask;
|
||||||
lookupOrderArray[store++] = lookupListIndex;
|
lookupOrderArray[store++] = lookupListIndex;
|
||||||
@ -220,7 +223,7 @@ LookupProcessor::LookupProcessor(const LETableReference &baseAddress,
|
|||||||
|
|
||||||
if (requiredFeatureIndex != 0xFFFF) {
|
if (requiredFeatureIndex != 0xFFFF) {
|
||||||
requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success);
|
requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success);
|
||||||
featureReferences += SWAPW(featureTable->lookupCount);
|
featureReferences += SWAPW(requiredFeatureTable->lookupCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);
|
lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);
|
||||||
@ -228,6 +231,7 @@ LookupProcessor::LookupProcessor(const LETableReference &baseAddress,
|
|||||||
success = LE_MEMORY_ALLOCATION_ERROR;
|
success = LE_MEMORY_ALLOCATION_ERROR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
lookupOrderCount = featureReferences;
|
||||||
|
|
||||||
for (le_int32 f = 0; f < featureMapCount; f += 1) {
|
for (le_int32 f = 0; f < featureMapCount; f += 1) {
|
||||||
FeatureMap fm = featureMap[f];
|
FeatureMap fm = featureMap[f];
|
||||||
|
Loading…
Reference in New Issue
Block a user