private void ReadScriptRecord(TagAndLocation tagLoc) { openTypeReader.rf.Seek(tagLoc.location); int locationDefaultLanguage = openTypeReader.rf.ReadUnsignedShort(); if (locationDefaultLanguage > 0) { locationDefaultLanguage += tagLoc.location; } TagAndLocation[] tagsLocs = openTypeReader.ReadTagAndLocations(tagLoc.location); ScriptRecord srec = new ScriptRecord(); srec.tag = tagLoc.tag; srec.languages = new LanguageRecord[tagsLocs.Length]; for (int k = 0; k < tagsLocs.Length; ++k) { srec.languages[k] = ReadLanguageRecord(tagsLocs[k]); } if (locationDefaultLanguage > 0) { TagAndLocation t = new TagAndLocation(); t.tag = ""; t.location = locationDefaultLanguage; srec.defaultLanguage = ReadLanguageRecord(t); } records.Add(srec); }
public OpenTypeScript(OpenTypeFontTableReader openTypeReader, int locationScriptTable) { this.openTypeReader = openTypeReader; records = new List <ScriptRecord>(); openTypeReader.rf.Seek(locationScriptTable); TagAndLocation[] tagsLocs = openTypeReader.ReadTagAndLocations(locationScriptTable); foreach (TagAndLocation tagLoc in tagsLocs) { ReadScriptRecord(tagLoc); } }
public OpenTypeFeature(OpenTypeFontTableReader openTypeReader, int locationFeatureTable) { this.openTypeReader = openTypeReader; records = new List <FeatureRecord>(); openTypeReader.rf.Seek(locationFeatureTable); TagAndLocation[] tagsLocs = openTypeReader.ReadTagAndLocations(locationFeatureTable); foreach (TagAndLocation tagLoc in tagsLocs) { // +2 don't use FeatureParams openTypeReader.rf.Seek(tagLoc.location + 2L); int lookupCount = openTypeReader.rf.ReadUnsignedShort(); FeatureRecord rec = new FeatureRecord(); rec.tag = tagLoc.tag; rec.lookups = openTypeReader.ReadUShortArray(lookupCount); records.Add(rec); } }