changeset 8110:be61bf86aee9

8056276: Fontmanager feature improvements Reviewed-by: prr
author bae
date Tue, 07 Oct 2014 12:12:52 +0400
parents 45f30f5524d4
children 122ac65402e1
files src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp src/share/native/sun/font/layout/Features.cpp src/share/native/sun/font/layout/LigatureSubstSubtables.cpp src/share/native/sun/font/layout/MultipleSubstSubtables.cpp
diffstat 4 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp	Mon Oct 06 12:49:38 2014 -0700
+++ b/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp	Tue Oct 07 12:12:52 2014 +0400
@@ -45,6 +45,9 @@
     le_int32  coverageIndex = getGlyphCoverage(base, glyphID, success);
     le_uint16 eeCount       = SWAPW(entryExitCount);
 
+    LEReferenceToArrayOf<EntryExitRecord>
+        entryExitRecordsArrayRef(base, success, entryExitRecords, coverageIndex);
+
     if (coverageIndex < 0 || coverageIndex >= eeCount || LE_FAILURE(success)) {
         glyphIterator->setCursiveGlyph();
         return 0;
--- a/src/share/native/sun/font/layout/Features.cpp	Mon Oct 06 12:49:38 2014 -0700
+++ b/src/share/native/sun/font/layout/Features.cpp	Tue Oct 07 12:12:52 2014 +0400
@@ -40,6 +40,9 @@
 
 LEReferenceTo<FeatureTable> FeatureListTable::getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const
 {
+    LEReferenceToArrayOf<FeatureRecord>
+        featureRecordArrayRef(base, success, featureRecordArray, featureIndex);
+
   if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) {
     return LEReferenceTo<FeatureTable>();
   }
--- a/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp	Mon Oct 06 12:49:38 2014 -0700
+++ b/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp	Tue Oct 07 12:12:52 2014 +0400
@@ -64,6 +64,9 @@
             LEReferenceTo<LigatureTable>   ligTable(ligSetTable, success, ligTableOffset);
             if(LE_FAILURE(success)) { return 0; }
             le_uint16 compCount = SWAPW(ligTable->compCount) - 1;
+            LEReferenceToArrayOf<TTGlyphID>
+                componentArrayRef(base, success, ligTable->componentArray, compCount);
+            if (LE_FAILURE(success)) { return 0; }
             le_int32 startPosition = glyphIterator->getCurrStreamPosition();
             TTGlyphID ligGlyph = SWAPW(ligTable->ligGlyph);
             le_uint16 comp;
--- a/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp	Mon Oct 06 12:49:38 2014 -0700
+++ b/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp	Tue Oct 07 12:12:52 2014 +0400
@@ -61,6 +61,8 @@
 
     le_int32 coverageIndex = getGlyphCoverage(base, glyph, success);
     le_uint16 seqCount = SWAPW(sequenceCount);
+    LEReferenceToArrayOf<Offset>
+        sequenceTableOffsetArrayRef(base, success, sequenceTableOffsetArray, seqCount);
 
     if (LE_FAILURE(success)) {
         return 0;