687 lines
17 KiB
C#
687 lines
17 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Globalization;
|
|
using System.Reflection;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Mono.Globalization.Unicode
|
|
{
|
|
// Token: 0x02000085 RID: 133
|
|
internal class MSCompatUnicodeTable
|
|
{
|
|
// Token: 0x06000798 RID: 1944 RVA: 0x00018168 File Offset: 0x00016368
|
|
unsafe static MSCompatUnicodeTable()
|
|
{
|
|
IntPtr intPtr = MSCompatUnicodeTable.GetResource("collation.core.bin");
|
|
if (intPtr == IntPtr.Zero)
|
|
{
|
|
return;
|
|
}
|
|
byte* ptr = (byte*)(void*)intPtr;
|
|
intPtr = MSCompatUnicodeTable.GetResource("collation.tailoring.bin");
|
|
if (intPtr == IntPtr.Zero)
|
|
{
|
|
return;
|
|
}
|
|
byte* ptr2 = (byte*)(void*)intPtr;
|
|
if (ptr == null || ptr2 == null)
|
|
{
|
|
return;
|
|
}
|
|
if (*ptr != 3 || *ptr2 != 3)
|
|
{
|
|
return;
|
|
}
|
|
uint num = 1U;
|
|
uint num2 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.ignorableFlags = ptr + num;
|
|
num += num2;
|
|
num2 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.categories = ptr + num;
|
|
num += num2;
|
|
num2 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.level1 = ptr + num;
|
|
num += num2;
|
|
num2 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.level2 = ptr + num;
|
|
num += num2;
|
|
num2 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.level3 = ptr + num;
|
|
num += num2;
|
|
num = 1U;
|
|
uint num3 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr2, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.tailoringInfos = new TailoringInfo[num3];
|
|
int num4 = 0;
|
|
while ((long)num4 < (long)((ulong)num3))
|
|
{
|
|
int num5 = (int)MSCompatUnicodeTable.UInt32FromBytePtr(ptr2, num);
|
|
num += 4U;
|
|
int num6 = (int)MSCompatUnicodeTable.UInt32FromBytePtr(ptr2, num);
|
|
num += 4U;
|
|
int num7 = (int)MSCompatUnicodeTable.UInt32FromBytePtr(ptr2, num);
|
|
num += 4U;
|
|
TailoringInfo tailoringInfo = new TailoringInfo(num5, num6, num7, ptr2[(UIntPtr)(num++)] != 0);
|
|
MSCompatUnicodeTable.tailoringInfos[num4] = tailoringInfo;
|
|
num4++;
|
|
}
|
|
num += 2U;
|
|
num3 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr2, num);
|
|
num += 4U;
|
|
MSCompatUnicodeTable.tailoringArr = new char[num3];
|
|
int num8 = 0;
|
|
while ((long)num8 < (long)((ulong)num3))
|
|
{
|
|
MSCompatUnicodeTable.tailoringArr[num8] = (char)((int)ptr2[num] + ((int)ptr2[num + 1U] << 8));
|
|
num8++;
|
|
num += 2U;
|
|
}
|
|
MSCompatUnicodeTable.isReady = true;
|
|
}
|
|
|
|
// Token: 0x06000799 RID: 1945 RVA: 0x0001834C File Offset: 0x0001654C
|
|
public static TailoringInfo GetTailoringInfo(int lcid)
|
|
{
|
|
for (int i = 0; i < MSCompatUnicodeTable.tailoringInfos.Length; i++)
|
|
{
|
|
if (MSCompatUnicodeTable.tailoringInfos[i].LCID == lcid)
|
|
{
|
|
return MSCompatUnicodeTable.tailoringInfos[i];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x0600079A RID: 1946 RVA: 0x0001838C File Offset: 0x0001658C
|
|
public unsafe static void BuildTailoringTables(CultureInfo culture, TailoringInfo t, ref Contraction[] contractions, ref Level2Map[] diacriticals)
|
|
{
|
|
ArrayList arrayList = new ArrayList();
|
|
ArrayList arrayList2 = new ArrayList();
|
|
fixed (char* ptr = (ref MSCompatUnicodeTable.tailoringArr != null && MSCompatUnicodeTable.tailoringArr.Length != 0 ? ref MSCompatUnicodeTable.tailoringArr[0] : ref *null))
|
|
{
|
|
int i = t.TailoringIndex;
|
|
int num = i + t.TailoringCount;
|
|
while (i < num)
|
|
{
|
|
int num2 = i + 1;
|
|
switch (ptr[i])
|
|
{
|
|
case '\u0001':
|
|
{
|
|
i++;
|
|
while (ptr[num2] != '\0')
|
|
{
|
|
num2++;
|
|
}
|
|
char[] array = new char[num2 - i];
|
|
Marshal.Copy((IntPtr)((void*)(ptr + i)), array, 0, num2 - i);
|
|
byte[] array2 = new byte[4];
|
|
for (int j = 0; j < 4; j++)
|
|
{
|
|
array2[j] = (byte)ptr[num2 + 1 + j];
|
|
}
|
|
arrayList.Add(new Contraction(array, null, array2));
|
|
i = num2 + 6;
|
|
break;
|
|
}
|
|
case '\u0002':
|
|
arrayList2.Add(new Level2Map((byte)ptr[i + 1], (byte)ptr[i + 2]));
|
|
i += 3;
|
|
break;
|
|
case '\u0003':
|
|
{
|
|
i++;
|
|
while (ptr[num2] != '\0')
|
|
{
|
|
num2++;
|
|
}
|
|
char[] array = new char[num2 - i];
|
|
Marshal.Copy((IntPtr)((void*)(ptr + i)), array, 0, num2 - i);
|
|
num2++;
|
|
int num3 = num2;
|
|
while (ptr[num3] != '\0')
|
|
{
|
|
num3++;
|
|
}
|
|
string text = new string(ptr, num2, num3 - num2);
|
|
arrayList.Add(new Contraction(array, text, null));
|
|
i = num3 + 1;
|
|
break;
|
|
}
|
|
default:
|
|
throw new NotImplementedException(string.Format("Mono INTERNAL ERROR (Should not happen): Collation tailoring table is broken for culture {0} ({1}) at 0x{2:X}", culture.LCID, culture.Name, i));
|
|
}
|
|
}
|
|
}
|
|
arrayList.Sort(ContractionComparer.Instance);
|
|
arrayList2.Sort(Level2MapComparer.Instance);
|
|
contractions = arrayList.ToArray(typeof(Contraction)) as Contraction[];
|
|
diacriticals = arrayList2.ToArray(typeof(Level2Map)) as Level2Map[];
|
|
}
|
|
|
|
// Token: 0x0600079B RID: 1947 RVA: 0x000185BC File Offset: 0x000167BC
|
|
private unsafe static void SetCJKReferences(string name, ref CodePointIndexer cjkIndexer, ref byte* catTable, ref byte* lv1Table, ref CodePointIndexer lv2Indexer, ref byte* lv2Table)
|
|
{
|
|
switch (name)
|
|
{
|
|
case "zh-CHS":
|
|
catTable = MSCompatUnicodeTable.cjkCHScategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkCHSlv1;
|
|
cjkIndexer = MSCompatUnicodeTableUtil.CjkCHS;
|
|
break;
|
|
case "zh-CHT":
|
|
catTable = MSCompatUnicodeTable.cjkCHTcategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkCHTlv1;
|
|
cjkIndexer = MSCompatUnicodeTableUtil.Cjk;
|
|
break;
|
|
case "ja":
|
|
catTable = MSCompatUnicodeTable.cjkJAcategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkJAlv1;
|
|
cjkIndexer = MSCompatUnicodeTableUtil.Cjk;
|
|
break;
|
|
case "ko":
|
|
catTable = MSCompatUnicodeTable.cjkKOcategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkKOlv1;
|
|
lv2Table = MSCompatUnicodeTable.cjkKOlv2;
|
|
cjkIndexer = MSCompatUnicodeTableUtil.Cjk;
|
|
lv2Indexer = MSCompatUnicodeTableUtil.Cjk;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600079C RID: 1948 RVA: 0x000186C0 File Offset: 0x000168C0
|
|
public unsafe static byte Category(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.categories[MSCompatUnicodeTableUtil.Category.ToIndex(cp)];
|
|
}
|
|
|
|
// Token: 0x0600079D RID: 1949 RVA: 0x000186D4 File Offset: 0x000168D4
|
|
public unsafe static byte Level1(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.level1[MSCompatUnicodeTableUtil.Level1.ToIndex(cp)];
|
|
}
|
|
|
|
// Token: 0x0600079E RID: 1950 RVA: 0x000186E8 File Offset: 0x000168E8
|
|
public unsafe static byte Level2(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.level2[MSCompatUnicodeTableUtil.Level2.ToIndex(cp)];
|
|
}
|
|
|
|
// Token: 0x0600079F RID: 1951 RVA: 0x000186FC File Offset: 0x000168FC
|
|
public unsafe static byte Level3(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.level3[MSCompatUnicodeTableUtil.Level3.ToIndex(cp)];
|
|
}
|
|
|
|
// Token: 0x060007A0 RID: 1952 RVA: 0x00018710 File Offset: 0x00016910
|
|
public static bool IsSortable(string s)
|
|
{
|
|
foreach (char c in s)
|
|
{
|
|
if (!MSCompatUnicodeTable.IsSortable((int)c))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Token: 0x060007A1 RID: 1953 RVA: 0x0001874C File Offset: 0x0001694C
|
|
public static bool IsSortable(int cp)
|
|
{
|
|
return !MSCompatUnicodeTable.IsIgnorable(cp) || cp == 0 || cp == 1600 || cp == 65279 || (6155 <= cp && cp <= 6158) || (8204 <= cp && cp <= 8207) || (8234 <= cp && cp <= 8238) || (8298 <= cp && cp <= 8303) || (8204 <= cp && cp <= 8207) || (65529 <= cp && cp <= 65533);
|
|
}
|
|
|
|
// Token: 0x060007A2 RID: 1954 RVA: 0x00018818 File Offset: 0x00016A18
|
|
public static bool IsIgnorable(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.IsIgnorable(cp, 1);
|
|
}
|
|
|
|
// Token: 0x060007A3 RID: 1955 RVA: 0x00018824 File Offset: 0x00016A24
|
|
public unsafe static bool IsIgnorable(int cp, byte flag)
|
|
{
|
|
if (cp == 0)
|
|
{
|
|
return false;
|
|
}
|
|
if ((flag & 1) != 0)
|
|
{
|
|
UnicodeCategory unicodeCategory = char.GetUnicodeCategory((char)cp);
|
|
if (unicodeCategory == UnicodeCategory.OtherNotAssigned)
|
|
{
|
|
return true;
|
|
}
|
|
if (55424 <= cp && cp < 56192)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
int num = MSCompatUnicodeTableUtil.Ignorable.ToIndex(cp);
|
|
return num >= 0 && (MSCompatUnicodeTable.ignorableFlags[num] & flag) != 0;
|
|
}
|
|
|
|
// Token: 0x060007A4 RID: 1956 RVA: 0x00018894 File Offset: 0x00016A94
|
|
public static bool IsIgnorableSymbol(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.IsIgnorable(cp, 2);
|
|
}
|
|
|
|
// Token: 0x060007A5 RID: 1957 RVA: 0x000188A0 File Offset: 0x00016AA0
|
|
public static bool IsIgnorableNonSpacing(int cp)
|
|
{
|
|
return MSCompatUnicodeTable.IsIgnorable(cp, 4);
|
|
}
|
|
|
|
// Token: 0x060007A6 RID: 1958 RVA: 0x000188AC File Offset: 0x00016AAC
|
|
public static int ToKanaTypeInsensitive(int i)
|
|
{
|
|
return (12353 > i || i > 12436) ? i : (i + 96);
|
|
}
|
|
|
|
// Token: 0x060007A7 RID: 1959 RVA: 0x000188DC File Offset: 0x00016ADC
|
|
public static int ToWidthCompat(int i)
|
|
{
|
|
if (i < 8592)
|
|
{
|
|
return i;
|
|
}
|
|
if (i > 65280)
|
|
{
|
|
if (i <= 65374)
|
|
{
|
|
return i - 65280 + 32;
|
|
}
|
|
switch (i)
|
|
{
|
|
case 65504:
|
|
return 162;
|
|
case 65505:
|
|
return 163;
|
|
case 65506:
|
|
return 172;
|
|
case 65507:
|
|
return 175;
|
|
case 65508:
|
|
return 166;
|
|
case 65509:
|
|
return 165;
|
|
case 65510:
|
|
return 8361;
|
|
}
|
|
}
|
|
if (i > 13054)
|
|
{
|
|
return i;
|
|
}
|
|
if (i <= 8595)
|
|
{
|
|
return 56921 + i;
|
|
}
|
|
if (i < 9474)
|
|
{
|
|
return i;
|
|
}
|
|
if (i <= 9675)
|
|
{
|
|
if (i == 9474)
|
|
{
|
|
return 65512;
|
|
}
|
|
if (i == 9632)
|
|
{
|
|
return 65517;
|
|
}
|
|
if (i != 9675)
|
|
{
|
|
return i;
|
|
}
|
|
return 65518;
|
|
}
|
|
else
|
|
{
|
|
if (i < 12288)
|
|
{
|
|
return i;
|
|
}
|
|
if (i < 12593)
|
|
{
|
|
switch (i)
|
|
{
|
|
case 12288:
|
|
return 32;
|
|
case 12289:
|
|
return 65380;
|
|
case 12290:
|
|
return 65377;
|
|
default:
|
|
if (i == 12300)
|
|
{
|
|
return 65378;
|
|
}
|
|
if (i == 12301)
|
|
{
|
|
return 65379;
|
|
}
|
|
if (i != 12539)
|
|
{
|
|
return i;
|
|
}
|
|
return 65381;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (i < 12644)
|
|
{
|
|
return i - 12592 + 65440;
|
|
}
|
|
if (i == 12644)
|
|
{
|
|
return 65440;
|
|
}
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060007A8 RID: 1960 RVA: 0x00018A8C File Offset: 0x00016C8C
|
|
public static bool HasSpecialWeight(char c)
|
|
{
|
|
if (c < 'ぁ')
|
|
{
|
|
return false;
|
|
}
|
|
if ('ヲ' <= c && c < '゙')
|
|
{
|
|
return true;
|
|
}
|
|
if ('㌀' <= c)
|
|
{
|
|
return false;
|
|
}
|
|
if (c < 'ゝ')
|
|
{
|
|
return c < '\u3099';
|
|
}
|
|
if (c < '\u3100')
|
|
{
|
|
return c != '・';
|
|
}
|
|
return c >= '㋐' && c < '㋿';
|
|
}
|
|
|
|
// Token: 0x060007A9 RID: 1961 RVA: 0x00018B14 File Offset: 0x00016D14
|
|
public static byte GetJapaneseDashType(char c)
|
|
{
|
|
switch (c)
|
|
{
|
|
case 'ー':
|
|
return 5;
|
|
case 'ヽ':
|
|
case 'ヾ':
|
|
break;
|
|
default:
|
|
if (c != 'ゝ' && c != 'ゞ' && c != 'ー')
|
|
{
|
|
return 3;
|
|
}
|
|
break;
|
|
}
|
|
return 4;
|
|
}
|
|
|
|
// Token: 0x060007AA RID: 1962 RVA: 0x00018B68 File Offset: 0x00016D68
|
|
public static bool IsHalfWidthKana(char c)
|
|
{
|
|
return 'ヲ' <= c && c <= 'ン';
|
|
}
|
|
|
|
// Token: 0x060007AB RID: 1963 RVA: 0x00018B84 File Offset: 0x00016D84
|
|
public static bool IsHiragana(char c)
|
|
{
|
|
return 'ぁ' <= c && c <= 'ゔ';
|
|
}
|
|
|
|
// Token: 0x060007AC RID: 1964 RVA: 0x00018BA0 File Offset: 0x00016DA0
|
|
public static bool IsJapaneseSmallLetter(char c)
|
|
{
|
|
if ('ァ' <= c && c <= 'ッ')
|
|
{
|
|
return true;
|
|
}
|
|
if ('\u3040' < c && c < 'ヺ')
|
|
{
|
|
switch (c)
|
|
{
|
|
case 'ぁ':
|
|
case 'ぃ':
|
|
case 'ぅ':
|
|
case 'ぇ':
|
|
case 'ぉ':
|
|
break;
|
|
default:
|
|
switch (c)
|
|
{
|
|
case 'ァ':
|
|
case 'ィ':
|
|
case 'ゥ':
|
|
case 'ェ':
|
|
case 'ォ':
|
|
break;
|
|
default:
|
|
switch (c)
|
|
{
|
|
case 'ゃ':
|
|
case 'ゅ':
|
|
case 'ょ':
|
|
break;
|
|
default:
|
|
switch (c)
|
|
{
|
|
case 'ャ':
|
|
case 'ュ':
|
|
case 'ョ':
|
|
break;
|
|
default:
|
|
if (c != 'ヵ' && c != 'ヶ' && c != 'っ' && c != 'ゎ' && c != 'ッ' && c != 'ヮ')
|
|
{
|
|
return false;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x170000DC RID: 220
|
|
// (get) Token: 0x060007AD RID: 1965 RVA: 0x00018CC8 File Offset: 0x00016EC8
|
|
public static bool IsReady
|
|
{
|
|
get
|
|
{
|
|
return MSCompatUnicodeTable.isReady;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060007AE RID: 1966 RVA: 0x00018CD0 File Offset: 0x00016ED0
|
|
private static IntPtr GetResource(string name)
|
|
{
|
|
int num;
|
|
Module module;
|
|
return Assembly.GetExecutingAssembly().GetManifestResourceInternal(name, out num, out module);
|
|
}
|
|
|
|
// Token: 0x060007AF RID: 1967 RVA: 0x00018CEC File Offset: 0x00016EEC
|
|
private unsafe static uint UInt32FromBytePtr(byte* raw, uint idx)
|
|
{
|
|
return (uint)((int)raw[idx] + ((int)raw[idx + 1U] << 8) + ((int)raw[idx + 2U] << 16) + ((int)raw[idx + 3U] << 24));
|
|
}
|
|
|
|
// Token: 0x060007B0 RID: 1968 RVA: 0x00018D14 File Offset: 0x00016F14
|
|
public unsafe static void FillCJK(string culture, ref CodePointIndexer cjkIndexer, ref byte* catTable, ref byte* lv1Table, ref CodePointIndexer lv2Indexer, ref byte* lv2Table)
|
|
{
|
|
object obj = MSCompatUnicodeTable.forLock;
|
|
lock (obj)
|
|
{
|
|
MSCompatUnicodeTable.FillCJKCore(culture, ref cjkIndexer, ref catTable, ref lv1Table, ref lv2Indexer, ref lv2Table);
|
|
MSCompatUnicodeTable.SetCJKReferences(culture, ref cjkIndexer, ref catTable, ref lv1Table, ref lv2Indexer, ref lv2Table);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060007B1 RID: 1969 RVA: 0x00018D70 File Offset: 0x00016F70
|
|
private unsafe static void FillCJKCore(string culture, ref CodePointIndexer cjkIndexer, ref byte* catTable, ref byte* lv1Table, ref CodePointIndexer cjkLv2Indexer, ref byte* lv2Table)
|
|
{
|
|
if (!MSCompatUnicodeTable.IsReady)
|
|
{
|
|
return;
|
|
}
|
|
string text = null;
|
|
switch (culture)
|
|
{
|
|
case "zh-CHS":
|
|
text = "cjkCHS";
|
|
catTable = MSCompatUnicodeTable.cjkCHScategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkCHSlv1;
|
|
break;
|
|
case "zh-CHT":
|
|
text = "cjkCHT";
|
|
catTable = MSCompatUnicodeTable.cjkCHTcategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkCHTlv1;
|
|
break;
|
|
case "ja":
|
|
text = "cjkJA";
|
|
catTable = MSCompatUnicodeTable.cjkJAcategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkJAlv1;
|
|
break;
|
|
case "ko":
|
|
text = "cjkKO";
|
|
catTable = MSCompatUnicodeTable.cjkKOcategory;
|
|
lv1Table = MSCompatUnicodeTable.cjkKOlv1;
|
|
break;
|
|
}
|
|
if (text == null || lv1Table != 0)
|
|
{
|
|
return;
|
|
}
|
|
uint num2 = 0U;
|
|
string text2 = string.Format("collation.{0}.bin", text);
|
|
IntPtr intPtr = MSCompatUnicodeTable.GetResource(text2);
|
|
if (intPtr == IntPtr.Zero)
|
|
{
|
|
return;
|
|
}
|
|
byte* ptr = (byte*)(void*)intPtr;
|
|
num2 += 1U;
|
|
uint num3 = MSCompatUnicodeTable.UInt32FromBytePtr(ptr, num2);
|
|
num2 += 4U;
|
|
catTable = ptr + num2;
|
|
lv1Table = ptr + num2 + num3;
|
|
switch (culture)
|
|
{
|
|
case "zh-CHS":
|
|
MSCompatUnicodeTable.cjkCHScategory = catTable;
|
|
MSCompatUnicodeTable.cjkCHSlv1 = lv1Table;
|
|
break;
|
|
case "zh-CHT":
|
|
MSCompatUnicodeTable.cjkCHTcategory = catTable;
|
|
MSCompatUnicodeTable.cjkCHTlv1 = lv1Table;
|
|
break;
|
|
case "ja":
|
|
MSCompatUnicodeTable.cjkJAcategory = catTable;
|
|
MSCompatUnicodeTable.cjkJAlv1 = lv1Table;
|
|
break;
|
|
case "ko":
|
|
MSCompatUnicodeTable.cjkKOcategory = catTable;
|
|
MSCompatUnicodeTable.cjkKOlv1 = lv1Table;
|
|
break;
|
|
}
|
|
if (text != "cjkKO")
|
|
{
|
|
return;
|
|
}
|
|
intPtr = MSCompatUnicodeTable.GetResource("collation.cjkKOlv2.bin");
|
|
if (intPtr == IntPtr.Zero)
|
|
{
|
|
return;
|
|
}
|
|
ptr = (byte*)(void*)intPtr;
|
|
num2 = 5U;
|
|
MSCompatUnicodeTable.cjkKOlv2 = ptr + num2;
|
|
lv2Table = MSCompatUnicodeTable.cjkKOlv2;
|
|
}
|
|
|
|
// Token: 0x0400012A RID: 298
|
|
private const int ResourceVersionSize = 1;
|
|
|
|
// Token: 0x0400012B RID: 299
|
|
public static int MaxExpansionLength = 3;
|
|
|
|
// Token: 0x0400012C RID: 300
|
|
private unsafe static readonly byte* ignorableFlags;
|
|
|
|
// Token: 0x0400012D RID: 301
|
|
private unsafe static readonly byte* categories;
|
|
|
|
// Token: 0x0400012E RID: 302
|
|
private unsafe static readonly byte* level1;
|
|
|
|
// Token: 0x0400012F RID: 303
|
|
private unsafe static readonly byte* level2;
|
|
|
|
// Token: 0x04000130 RID: 304
|
|
private unsafe static readonly byte* level3;
|
|
|
|
// Token: 0x04000131 RID: 305
|
|
private unsafe static byte* cjkCHScategory;
|
|
|
|
// Token: 0x04000132 RID: 306
|
|
private unsafe static byte* cjkCHTcategory;
|
|
|
|
// Token: 0x04000133 RID: 307
|
|
private unsafe static byte* cjkJAcategory;
|
|
|
|
// Token: 0x04000134 RID: 308
|
|
private unsafe static byte* cjkKOcategory;
|
|
|
|
// Token: 0x04000135 RID: 309
|
|
private unsafe static byte* cjkCHSlv1;
|
|
|
|
// Token: 0x04000136 RID: 310
|
|
private unsafe static byte* cjkCHTlv1;
|
|
|
|
// Token: 0x04000137 RID: 311
|
|
private unsafe static byte* cjkJAlv1;
|
|
|
|
// Token: 0x04000138 RID: 312
|
|
private unsafe static byte* cjkKOlv1;
|
|
|
|
// Token: 0x04000139 RID: 313
|
|
private unsafe static byte* cjkKOlv2;
|
|
|
|
// Token: 0x0400013A RID: 314
|
|
private static readonly char[] tailoringArr;
|
|
|
|
// Token: 0x0400013B RID: 315
|
|
private static readonly TailoringInfo[] tailoringInfos;
|
|
|
|
// Token: 0x0400013C RID: 316
|
|
private static object forLock = new object();
|
|
|
|
// Token: 0x0400013D RID: 317
|
|
public static readonly bool isReady;
|
|
}
|
|
}
|