void initWesternEncoding( byte[] ustrdata ) throws NegativeArraySizeException
	{
		// get the row, col and ixfe information
		cch = ByteTools.readShort( ustrdata[0], ustrdata[1] );
		int dlen = cch + 0;
		grbit = ustrdata[2];
		offer = 3;

		// is is double byte stream?
		if( (grbit & 0x1) == 0x1 )
		{
			dlen *= 2;
			fHighByte = true;
		}
		else
		{
			fHighByte = false;
		}

		// handle data being greater than the length of the bytes
		if( (dlen + offer) > ustrdata.length )
		{
			dlen = ustrdata.length - offer;
		}

		// is rich text?  does it have formatting runs?
		if( (grbit & 0x8) == 0x8 )
		{
			fRichSt = true;
		}

		if( fRichSt )
		{
			formatrunnum[0] = ustrdata[3];
			formatrunnum[1] = ustrdata[4];
			numformattingruns = ByteTools.readShort( formatrunnum[0], formatrunnum[1] );
			offer = 5;
			formatlen = (ustrdata.length - dlen) - offer;
			formattingarray = new byte[formatlen];
			System.arraycopy( ustrdata, dlen + offer, formattingarray, 0, formatlen );
		}
		stringarray = new byte[dlen + 0];
		try
		{
			System.arraycopy( ustrdata, offer, stringarray, 0, dlen );
		}
		catch( Exception e )
		{
			log.error( "Problem Parsing Western Unicodestring.  len:" + dlen + " rich:" + fRichSt + ".  " + e, e );
		}
	}