libmount
Version:
Standalone FAT12, FAT16, FAT32, VFAT implementation in JavaScript
709 lines (706 loc) • 11.5 kB
JavaScript
/**
* https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt
*/
import { Codepage } from "./codepage.mjs";
import { charmapCP1252 } from "./cp1252.mjs";
const wcTableBestfit1252 = {
0x0000: 0x00,
0x0001: 0x01,
0x0002: 0x02,
0x0003: 0x03,
0x0004: 0x04,
0x0005: 0x05,
0x0006: 0x06,
0x0007: 0x07,
0x0008: 0x08,
0x0009: 0x09,
0x000a: 0x0a,
0x000b: 0x0b,
0x000c: 0x0c,
0x000d: 0x0d,
0x000e: 0x0e,
0x000f: 0x0f,
0x0010: 0x10,
0x0011: 0x11,
0x0012: 0x12,
0x0013: 0x13,
0x0014: 0x14,
0x0015: 0x15,
0x0016: 0x16,
0x0017: 0x17,
0x0018: 0x18,
0x0019: 0x19,
0x001a: 0x1a,
0x001b: 0x1b,
0x001c: 0x1c,
0x001d: 0x1d,
0x001e: 0x1e,
0x001f: 0x1f,
0x0020: 0x20,
0x0021: 0x21,
0x0022: 0x22,
0x0023: 0x23,
0x0024: 0x24,
0x0025: 0x25,
0x0026: 0x26,
0x0027: 0x27,
0x0028: 0x28,
0x0029: 0x29,
0x002a: 0x2a,
0x002b: 0x2b,
0x002c: 0x2c,
0x002d: 0x2d,
0x002e: 0x2e,
0x002f: 0x2f,
0x0030: 0x30,
0x0031: 0x31,
0x0032: 0x32,
0x0033: 0x33,
0x0034: 0x34,
0x0035: 0x35,
0x0036: 0x36,
0x0037: 0x37,
0x0038: 0x38,
0x0039: 0x39,
0x003a: 0x3a,
0x003b: 0x3b,
0x003c: 0x3c,
0x003d: 0x3d,
0x003e: 0x3e,
0x003f: 0x3f,
0x0040: 0x40,
0x0041: 0x41,
0x0042: 0x42,
0x0043: 0x43,
0x0044: 0x44,
0x0045: 0x45,
0x0046: 0x46,
0x0047: 0x47,
0x0048: 0x48,
0x0049: 0x49,
0x004a: 0x4a,
0x004b: 0x4b,
0x004c: 0x4c,
0x004d: 0x4d,
0x004e: 0x4e,
0x004f: 0x4f,
0x0050: 0x50,
0x0051: 0x51,
0x0052: 0x52,
0x0053: 0x53,
0x0054: 0x54,
0x0055: 0x55,
0x0056: 0x56,
0x0057: 0x57,
0x0058: 0x58,
0x0059: 0x59,
0x005a: 0x5a,
0x005b: 0x5b,
0x005c: 0x5c,
0x005d: 0x5d,
0x005e: 0x5e,
0x005f: 0x5f,
0x0060: 0x60,
0x0061: 0x61,
0x0062: 0x62,
0x0063: 0x63,
0x0064: 0x64,
0x0065: 0x65,
0x0066: 0x66,
0x0067: 0x67,
0x0068: 0x68,
0x0069: 0x69,
0x006a: 0x6a,
0x006b: 0x6b,
0x006c: 0x6c,
0x006d: 0x6d,
0x006e: 0x6e,
0x006f: 0x6f,
0x0070: 0x70,
0x0071: 0x71,
0x0072: 0x72,
0x0073: 0x73,
0x0074: 0x74,
0x0075: 0x75,
0x0076: 0x76,
0x0077: 0x77,
0x0078: 0x78,
0x0079: 0x79,
0x007a: 0x7a,
0x007b: 0x7b,
0x007c: 0x7c,
0x007d: 0x7d,
0x007e: 0x7e,
0x007f: 0x7f,
0x0081: 0x81,
0x008d: 0x8d,
0x008f: 0x8f,
0x0090: 0x90,
0x009d: 0x9d,
0x00a0: 0xa0,
0x00a1: 0xa1,
0x00a2: 0xa2,
0x00a3: 0xa3,
0x00a4: 0xa4,
0x00a5: 0xa5,
0x00a6: 0xa6,
0x00a7: 0xa7,
0x00a8: 0xa8,
0x00a9: 0xa9,
0x00aa: 0xaa,
0x00ab: 0xab,
0x00ac: 0xac,
0x00ad: 0xad,
0x00ae: 0xae,
0x00af: 0xaf,
0x00b0: 0xb0,
0x00b1: 0xb1,
0x00b2: 0xb2,
0x00b3: 0xb3,
0x00b4: 0xb4,
0x00b5: 0xb5,
0x00b6: 0xb6,
0x00b7: 0xb7,
0x00b8: 0xb8,
0x00b9: 0xb9,
0x00ba: 0xba,
0x00bb: 0xbb,
0x00bc: 0xbc,
0x00bd: 0xbd,
0x00be: 0xbe,
0x00bf: 0xbf,
0x00c0: 0xc0,
0x00c1: 0xc1,
0x00c2: 0xc2,
0x00c3: 0xc3,
0x00c4: 0xc4,
0x00c5: 0xc5,
0x00c6: 0xc6,
0x00c7: 0xc7,
0x00c8: 0xc8,
0x00c9: 0xc9,
0x00ca: 0xca,
0x00cb: 0xcb,
0x00cc: 0xcc,
0x00cd: 0xcd,
0x00ce: 0xce,
0x00cf: 0xcf,
0x00d0: 0xd0,
0x00d1: 0xd1,
0x00d2: 0xd2,
0x00d3: 0xd3,
0x00d4: 0xd4,
0x00d5: 0xd5,
0x00d6: 0xd6,
0x00d7: 0xd7,
0x00d8: 0xd8,
0x00d9: 0xd9,
0x00da: 0xda,
0x00db: 0xdb,
0x00dc: 0xdc,
0x00dd: 0xdd,
0x00de: 0xde,
0x00df: 0xdf,
0x00e0: 0xe0,
0x00e1: 0xe1,
0x00e2: 0xe2,
0x00e3: 0xe3,
0x00e4: 0xe4,
0x00e5: 0xe5,
0x00e6: 0xe6,
0x00e7: 0xe7,
0x00e8: 0xe8,
0x00e9: 0xe9,
0x00ea: 0xea,
0x00eb: 0xeb,
0x00ec: 0xec,
0x00ed: 0xed,
0x00ee: 0xee,
0x00ef: 0xef,
0x00f0: 0xf0,
0x00f1: 0xf1,
0x00f2: 0xf2,
0x00f3: 0xf3,
0x00f4: 0xf4,
0x00f5: 0xf5,
0x00f6: 0xf6,
0x00f7: 0xf7,
0x00f8: 0xf8,
0x00f9: 0xf9,
0x00fa: 0xfa,
0x00fb: 0xfb,
0x00fc: 0xfc,
0x00fd: 0xfd,
0x00fe: 0xfe,
0x00ff: 0xff,
0x0100: 0x41,
0x0101: 0x61,
0x0102: 0x41,
0x0103: 0x61,
0x0104: 0x41,
0x0105: 0x61,
0x0106: 0x43,
0x0107: 0x63,
0x0108: 0x43,
0x0109: 0x63,
0x010a: 0x43,
0x010b: 0x63,
0x010c: 0x43,
0x010d: 0x63,
0x010e: 0x44,
0x010f: 0x64,
0x0110: 0xd0,
0x0111: 0x64,
0x0112: 0x45,
0x0113: 0x65,
0x0114: 0x45,
0x0115: 0x65,
0x0116: 0x45,
0x0117: 0x65,
0x0118: 0x45,
0x0119: 0x65,
0x011a: 0x45,
0x011b: 0x65,
0x011c: 0x47,
0x011d: 0x67,
0x011e: 0x47,
0x011f: 0x67,
0x0120: 0x47,
0x0121: 0x67,
0x0122: 0x47,
0x0123: 0x67,
0x0124: 0x48,
0x0125: 0x68,
0x0126: 0x48,
0x0127: 0x68,
0x0128: 0x49,
0x0129: 0x69,
0x012a: 0x49,
0x012b: 0x69,
0x012c: 0x49,
0x012d: 0x69,
0x012e: 0x49,
0x012f: 0x69,
0x0130: 0x49,
0x0131: 0x69,
0x0134: 0x4a,
0x0135: 0x6a,
0x0136: 0x4b,
0x0137: 0x6b,
0x0139: 0x4c,
0x013a: 0x6c,
0x013b: 0x4c,
0x013c: 0x6c,
0x013d: 0x4c,
0x013e: 0x6c,
0x0141: 0x4c,
0x0142: 0x6c,
0x0143: 0x4e,
0x0144: 0x6e,
0x0145: 0x4e,
0x0146: 0x6e,
0x0147: 0x4e,
0x0148: 0x6e,
0x014c: 0x4f,
0x014d: 0x6f,
0x014e: 0x4f,
0x014f: 0x6f,
0x0150: 0x4f,
0x0151: 0x6f,
0x0152: 0x8c,
0x0153: 0x9c,
0x0154: 0x52,
0x0155: 0x72,
0x0156: 0x52,
0x0157: 0x72,
0x0158: 0x52,
0x0159: 0x72,
0x015a: 0x53,
0x015b: 0x73,
0x015c: 0x53,
0x015d: 0x73,
0x015e: 0x53,
0x015f: 0x73,
0x0160: 0x8a,
0x0161: 0x9a,
0x0162: 0x54,
0x0163: 0x74,
0x0164: 0x54,
0x0165: 0x74,
0x0166: 0x54,
0x0167: 0x74,
0x0168: 0x55,
0x0169: 0x75,
0x016a: 0x55,
0x016b: 0x75,
0x016c: 0x55,
0x016d: 0x75,
0x016e: 0x55,
0x016f: 0x75,
0x0170: 0x55,
0x0171: 0x75,
0x0172: 0x55,
0x0173: 0x75,
0x0174: 0x57,
0x0175: 0x77,
0x0176: 0x59,
0x0177: 0x79,
0x0178: 0x9f,
0x0179: 0x5a,
0x017a: 0x7a,
0x017b: 0x5a,
0x017c: 0x7a,
0x017d: 0x8e,
0x017e: 0x9e,
0x0180: 0x62,
0x0189: 0xd0,
0x0191: 0x83,
0x0192: 0x83,
0x0197: 0x49,
0x019a: 0x6c,
0x019f: 0x4f,
0x01a0: 0x4f,
0x01a1: 0x6f,
0x01ab: 0x74,
0x01ae: 0x54,
0x01af: 0x55,
0x01b0: 0x75,
0x01b6: 0x7a,
0x01c0: 0x7c,
0x01c3: 0x21,
0x01cd: 0x41,
0x01ce: 0x61,
0x01cf: 0x49,
0x01d0: 0x69,
0x01d1: 0x4f,
0x01d2: 0x6f,
0x01d3: 0x55,
0x01d4: 0x75,
0x01d5: 0x55,
0x01d6: 0x75,
0x01d7: 0x55,
0x01d8: 0x75,
0x01d9: 0x55,
0x01da: 0x75,
0x01db: 0x55,
0x01dc: 0x75,
0x01de: 0x41,
0x01df: 0x61,
0x01e4: 0x47,
0x01e5: 0x67,
0x01e6: 0x47,
0x01e7: 0x67,
0x01e8: 0x4b,
0x01e9: 0x6b,
0x01ea: 0x4f,
0x01eb: 0x6f,
0x01ec: 0x4f,
0x01ed: 0x6f,
0x01f0: 0x6a,
0x0261: 0x67,
0x02b9: 0x27,
0x02ba: 0x22,
0x02bc: 0x27,
0x02c4: 0x5e,
0x02c6: 0x88,
0x02c8: 0x27,
0x02c9: 0xaf,
0x02ca: 0xb4,
0x02cb: 0x60,
0x02cd: 0x5f,
0x02da: 0xb0,
0x02dc: 0x98,
0x0300: 0x60,
0x0301: 0xb4,
0x0302: 0x5e,
0x0303: 0x7e,
0x0304: 0xaf,
0x0305: 0xaf,
0x0308: 0xa8,
0x030a: 0xb0,
0x030e: 0x22,
0x0327: 0xb8,
0x0331: 0x5f,
0x0332: 0x5f,
0x037e: 0x3b,
0x0393: 0x47,
0x0398: 0x54,
0x03a3: 0x53,
0x03a6: 0x46,
0x03a9: 0x4f,
0x03b1: 0x61,
0x03b2: 0xdf,
0x03b4: 0x64,
0x03b5: 0x65,
0x03bc: 0xb5,
0x03c0: 0x70,
0x03c3: 0x73,
0x03c4: 0x74,
0x03c6: 0x66,
0x04bb: 0x68,
0x0589: 0x3a,
0x066a: 0x25,
0x2000: 0x20,
0x2001: 0x20,
0x2002: 0x20,
0x2003: 0x20,
0x2004: 0x20,
0x2005: 0x20,
0x2006: 0x20,
0x2010: 0x2d,
0x2011: 0x2d,
0x2013: 0x96,
0x2014: 0x97,
0x2017: 0x3d,
0x2018: 0x91,
0x2019: 0x92,
0x201a: 0x82,
0x201c: 0x93,
0x201d: 0x94,
0x201e: 0x84,
0x2020: 0x86,
0x2021: 0x87,
0x2022: 0x95,
0x2024: 0xb7,
0x2026: 0x85,
0x2030: 0x89,
0x2032: 0x27,
0x2035: 0x60,
0x2039: 0x8b,
0x203a: 0x9b,
0x2044: 0x2f,
0x2070: 0xb0,
0x2074: 0x34,
0x2075: 0x35,
0x2076: 0x36,
0x2077: 0x37,
0x2078: 0x38,
0x207f: 0x6e,
0x2080: 0x30,
0x2081: 0x31,
0x2082: 0x32,
0x2083: 0x33,
0x2084: 0x34,
0x2085: 0x35,
0x2086: 0x36,
0x2087: 0x37,
0x2088: 0x38,
0x2089: 0x39,
0x20ac: 0x80,
0x20a1: 0xa2,
0x20a4: 0xa3,
0x20a7: 0x50,
0x2102: 0x43,
0x2107: 0x45,
0x210a: 0x67,
0x210b: 0x48,
0x210c: 0x48,
0x210d: 0x48,
0x210e: 0x68,
0x2110: 0x49,
0x2111: 0x49,
0x2112: 0x4c,
0x2113: 0x6c,
0x2115: 0x4e,
0x2118: 0x50,
0x2119: 0x50,
0x211a: 0x51,
0x211b: 0x52,
0x211c: 0x52,
0x211d: 0x52,
0x2122: 0x99,
0x2124: 0x5a,
0x2128: 0x5a,
0x212a: 0x4b,
0x212b: 0xc5,
0x212c: 0x42,
0x212d: 0x43,
0x212e: 0x65,
0x212f: 0x65,
0x2130: 0x45,
0x2131: 0x46,
0x2133: 0x4d,
0x2134: 0x6f,
0x2205: 0xd8,
0x2212: 0x2d,
0x2213: 0xb1,
0x2215: 0x2f,
0x2216: 0x5c,
0x2217: 0x2a,
0x2218: 0xb0,
0x2219: 0xb7,
0x221a: 0x76,
0x221e: 0x38,
0x2223: 0x7c,
0x2229: 0x6e,
0x2236: 0x3a,
0x223c: 0x7e,
0x2248: 0x98,
0x2261: 0x3d,
0x2264: 0x3d,
0x2265: 0x3d,
0x226a: 0xab,
0x226b: 0xbb,
0x22c5: 0xb7,
0x2302: 0xa6,
0x2303: 0x5e,
0x2310: 0xac,
0x2320: 0x28,
0x2321: 0x29,
0x2329: 0x3c,
0x232a: 0x3e,
0x2500: 0x2d,
0x2502: 0xa6,
0x250c: 0x2b,
0x2510: 0x2b,
0x2514: 0x2b,
0x2518: 0x2b,
0x251c: 0x2b,
0x2524: 0xa6,
0x252c: 0x2d,
0x2534: 0x2d,
0x253c: 0x2b,
0x2550: 0x2d,
0x2551: 0xa6,
0x2552: 0x2b,
0x2553: 0x2b,
0x2554: 0x2b,
0x2555: 0x2b,
0x2556: 0x2b,
0x2557: 0x2b,
0x2558: 0x2b,
0x2559: 0x2b,
0x255a: 0x2b,
0x255b: 0x2b,
0x255c: 0x2b,
0x255d: 0x2b,
0x255e: 0xa6,
0x255f: 0xa6,
0x2560: 0xa6,
0x2561: 0xa6,
0x2562: 0xa6,
0x2563: 0xa6,
0x2564: 0x2d,
0x2565: 0x2d,
0x2566: 0x2d,
0x2567: 0x2d,
0x2568: 0x2d,
0x2569: 0x2d,
0x256a: 0x2b,
0x256b: 0x2b,
0x256c: 0x2b,
0x2580: 0xaf,
0x2584: 0x5f,
0x2588: 0xa6,
0x258c: 0xa6,
0x2590: 0xa6,
0x2591: 0xa6,
0x2592: 0xa6,
0x2593: 0xa6,
0x25a0: 0xa6,
0x263c: 0xa4,
0x2758: 0x7c,
0x3000: 0x20,
0x3008: 0x3c,
0x3009: 0x3e,
0x300a: 0xab,
0x300b: 0xbb,
0x301a: 0x5b,
0x301b: 0x5d,
0x30fb: 0xb7,
0xff01: 0x21,
0xff02: 0x22,
0xff03: 0x23,
0xff04: 0x24,
0xff05: 0x25,
0xff06: 0x26,
0xff07: 0x27,
0xff08: 0x28,
0xff09: 0x29,
0xff0a: 0x2a,
0xff0b: 0x2b,
0xff0c: 0x2c,
0xff0d: 0x2d,
0xff0e: 0x2e,
0xff0f: 0x2f,
0xff10: 0x30,
0xff11: 0x31,
0xff12: 0x32,
0xff13: 0x33,
0xff14: 0x34,
0xff15: 0x35,
0xff16: 0x36,
0xff17: 0x37,
0xff18: 0x38,
0xff19: 0x39,
0xff1a: 0x3a,
0xff1b: 0x3b,
0xff1c: 0x3c,
0xff1d: 0x3d,
0xff1e: 0x3e,
0xff1f: 0x3f,
0xff20: 0x40,
0xff21: 0x41,
0xff22: 0x42,
0xff23: 0x43,
0xff24: 0x44,
0xff25: 0x45,
0xff26: 0x46,
0xff27: 0x47,
0xff28: 0x48,
0xff29: 0x49,
0xff2a: 0x4a,
0xff2b: 0x4b,
0xff2c: 0x4c,
0xff2d: 0x4d,
0xff2e: 0x4e,
0xff2f: 0x4f,
0xff30: 0x50,
0xff31: 0x51,
0xff32: 0x52,
0xff33: 0x53,
0xff34: 0x54,
0xff35: 0x55,
0xff36: 0x56,
0xff37: 0x57,
0xff38: 0x58,
0xff39: 0x59,
0xff3a: 0x5a,
0xff3b: 0x5b,
0xff3c: 0x5c,
0xff3d: 0x5d,
0xff3e: 0x5e,
0xff3f: 0x5f,
0xff40: 0x60,
0xff41: 0x61,
0xff42: 0x62,
0xff43: 0x63,
0xff44: 0x64,
0xff45: 0x65,
0xff46: 0x66,
0xff47: 0x67,
0xff48: 0x68,
0xff49: 0x69,
0xff4a: 0x6a,
0xff4b: 0x6b,
0xff4c: 0x6c,
0xff4d: 0x6d,
0xff4e: 0x6e,
0xff4f: 0x6f,
0xff50: 0x70,
0xff51: 0x71,
0xff52: 0x72,
0xff53: 0x73,
0xff54: 0x74,
0xff55: 0x75,
0xff56: 0x76,
0xff57: 0x77,
0xff58: 0x78,
0xff59: 0x79,
0xff5a: 0x7a,
0xff5b: 0x7b,
0xff5c: 0x7c,
0xff5d: 0x7d,
0xff5e: 0x7e,
};
export const bestfit1252 = new Codepage(charmapCP1252, wcTableBestfit1252);