changeset 10377:2dfb4ef6c76d

8056276: Fontmanager feature improvements Reviewed-by: srl, bae, mschoene
author prr
date Thu, 11 Sep 2014 10:27:31 -0700
parents d9bd92184434
children c7cc5f27a499
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	Thu Sep 11 10:27:25 2014 -0700
+++ b/src/share/native/sun/font/layout/CursiveAttachmentSubtables.cpp	Thu Sep 11 10:27:31 2014 -0700
@@ -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	Thu Sep 11 10:27:25 2014 -0700
+++ b/src/share/native/sun/font/layout/Features.cpp	Thu Sep 11 10:27:31 2014 -0700
@@ -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	Thu Sep 11 10:27:25 2014 -0700
+++ b/src/share/native/sun/font/layout/LigatureSubstSubtables.cpp	Thu Sep 11 10:27:31 2014 -0700
@@ -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	Thu Sep 11 10:27:25 2014 -0700
+++ b/src/share/native/sun/font/layout/MultipleSubstSubtables.cpp	Thu Sep 11 10:27:31 2014 -0700
@@ -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;