Index: fop-core/src/main/java/org/apache/fop/complexscripts/fonts/OTFAdvancedTypographicTableReader.java
===================================================================
--- fop-core/src/main/java/org/apache/fop/complexscripts/fonts/OTFAdvancedTypographicTableReader.java	(revision 1850878)
+++ fop-core/src/main/java/org/apache/fop/complexscripts/fonts/OTFAdvancedTypographicTableReader.java	(working copy)
@@ -3336,7 +3336,12 @@
             msca[i] = readCoverageTable(tableTag + " mark set coverage[" + i + "]", subtableOffset + mso[i]);
         }
         // create combined class table from per-class coverage tables
-        GlyphClassTable ct = GlyphClassTable.createClassTable(Arrays.asList(msca));
+        GlyphClassTable ct = null;
+        try {
+            ct = GlyphClassTable.createClassTable(Arrays.asList(msca));
+        } catch (UnsupportedOperationException uoe) {
+            log.debug(uoe.getMessage(), uoe);
+        }
         // store results
         seMapping = ct;
         // extract subtable
@@ -3580,15 +3585,17 @@
     }
 
     private void constructLookupsLanguage(Map lookups, String st, String lt, Map<String, Object> languages) {
+        if (languages != null) {
         Object[] lp = (Object[]) languages.get(lt);
-        if (lp != null) {
-            assert lp.length == 2;
-            if (lp[0] != null) {                      // required feature id
-                constructLookupsFeature(lookups, st, lt, (String) lp[0]);
+            if (lp != null) {
+                assert lp.length == 2;
+                if (lp[0] != null) {                      // required feature id
+                    constructLookupsFeature(lookups, st, lt, (String) lp[0]);
+                }
+                if (lp[1] != null) {                      // non-required features ids
+                    constructLookupsFeatures(lookups, st, lt, (List) lp[1]);
+                }
             }
-            if (lp[1] != null) {                      // non-required features ids
-                constructLookupsFeatures(lookups, st, lt, (List) lp[1]);
-            }
         }
     }
 
