public static StringBlock read(IntReader reader) throws IOException {
		ReadUtil.readCheckType(reader,CHUNK_TYPE);
		int chunkSize=reader.readInt();
		int stringCount=reader.readInt();
		int styleOffsetCount=reader.readInt();
		/*?*/reader.readInt();
		int stringsOffset=reader.readInt();
		int stylesOffset=reader.readInt();
		
		StringBlock block=new StringBlock();
		block.m_stringOffsets=reader.readIntArray(stringCount);
		if (styleOffsetCount!=0) {
			block.m_styleOffsets=reader.readIntArray(styleOffsetCount);
		}
		{
			int size=((stylesOffset==0)?chunkSize:stylesOffset)-stringsOffset;
			if ((size%4)!=0) {
				throw new IOException("String data size is not multiple of 4 ("+size+").");
			}
			block.m_strings=reader.readIntArray(size/4);
		}
		if (stylesOffset!=0) {
			int size=(chunkSize-stylesOffset);
			if ((size%4)!=0) {
				throw new IOException("Style data size is not multiple of 4 ("+size+").");
			}
			block.m_styles=reader.readIntArray(size/4);
		}
		
		block.s=new String[block.getCount()];
		for (int i=0;i!=block.getCount();++i) {
			block.s[i]=block.getRaw(i);
		}
		
		return block;	
	}