Slightly tweaked the variable length encoding used for code points.

This commit is contained in:
GoldenCrystal
2014-11-04 00:00:08 +01:00
parent ed1c5d7913
commit 058c89df29
3 changed files with 23 additions and 13 deletions
@@ -29,17 +29,23 @@ namespace System.Unicode.Builder
{
if (value < 0 || value > 0x40407F) throw new ArgumentOutOfRangeException("value");
if (value < 0x80) writer.Write((byte)value);
else if (value < 0x4080)
if (value < 0xA0) writer.Write((byte)value);
else if (value < 0x20A0)
{
value -= 0x80;
writer.Write((byte)((byte)(value >> 8) | 0x80));
value -= 0xA0;
writer.Write((byte)((byte)(value >> 8) | 0xA0));
writer.Write((byte)value);
}
else if (value < 0x40A0)
{
value -= 0x20A0;
writer.Write((byte)((byte)(value >> 8) | 0xC0));
writer.Write((byte)value);
}
else
{
value -= 0x4080;
writer.Write((byte)((byte)(value >> 16) | 0xC0));
value -= 0x40A0;
writer.Write((byte)((byte)(value >> 16) | 0xE0));
writer.Write((byte)(value >> 8));
writer.Write((byte)value);
}