コード例 #1
0
        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);
        }
コード例 #2
0
        private LanguageRecord ReadLanguageRecord(TagAndLocation tagLoc)
        {
            LanguageRecord rec = new LanguageRecord();

            //skip lookup order
            openTypeReader.rf.Seek(tagLoc.location + 2);
            rec.featureRequired = openTypeReader.rf.ReadUnsignedShort();
            int count = openTypeReader.rf.ReadUnsignedShort();

            rec.features = openTypeReader.ReadUShortArray(count);
            rec.tag      = tagLoc.tag;
            return(rec);
        }
コード例 #3
0
        /// <exception cref="System.IO.IOException"/>
        protected internal virtual TagAndLocation[] ReadTagAndLocations(int baseLocation)
        {
            int count = rf.ReadUnsignedShort();

            TagAndLocation[] tagslLocs = new TagAndLocation[count];
            for (int k = 0; k < count; ++k)
            {
                TagAndLocation tl = new TagAndLocation();
                tl.tag       = rf.ReadString(4, "utf-8");
                tl.location  = rf.ReadUnsignedShort() + baseLocation;
                tagslLocs[k] = tl;
            }
            return(tagslLocs);
        }