node-unicode-data-main/0000755000175000017500000000000015176435627013724 5ustar yaddyaddnode-unicode-data-main/scripts/0000755000175000017500000000000015106571514015400 5ustar yaddyaddnode-unicode-data-main/scripts/parse-line-break.js0000644000175000017500000000300515106571514021055 0ustar yaddyadd'use strict'; const aliases = require('unicode-property-value-aliases').get('Line_Break'); const utils = require('./utils.js'); const regenerate = require('regenerate'); const findCanonicalName = function(shortName) { const canonicalName = aliases.get(shortName); if (!canonicalName) { throw new Error(`Failed to find canonical name for Line_Break=${shortName}. Update \`unicode-property-value-aliases\`.`); } return canonicalName; }; const parseLineBreak = function(version) { const source = utils.readDataFile(version, 'line-break'); if (!source) { return; } const map = { // All code points, assigned and unassigned, that are not listed explicitly // are given the value `XX`. 'Unknown': regenerate().addRange(0, 0x10FFFF) }; const lines = source.split('\n'); for (const line of lines) { if (!line || /^#/.test(line)) { continue; } const data = line.trim().split(';'); const charRange = data[0].replace('..', '-').trim(); const rangeParts = charRange.split('-'); const value = data[1].split('#')[0].trim(); const canonicalName = findCanonicalName(value); map[canonicalName] ??= regenerate(); if (rangeParts.length == 2) { const [from, to] = [ parseInt(rangeParts[0], 16), parseInt(rangeParts[1], 16), ]; map['Unknown'].removeRange(from, to); map[canonicalName].addRange(from, to); } else { const codePoint = parseInt(charRange, 16); map['Unknown'].remove(codePoint); map[canonicalName].add(codePoint); } }; return map; }; module.exports = parseLineBreak; node-unicode-data-main/scripts/parse-case-folding.js0000644000175000017500000000151015106571514021376 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const parseCaseFolding = function(version) { const caseFoldingMap = {}; const source = utils.readDataFile(version, 'case-folding'); if (!source) { return; } const lines = source.split('\n'); lines.forEach(function(line) { if (!line || /^#/.test(line)) { return; } const data = line.trim().split(';'); const codePoint = parseInt(data[0], 16); const status = data[1].trim(); const mappings = data[2].trim().split(' ').map(function(codePoint) { return parseInt(codePoint, 16); }); // Note: this could be two characters! if (!caseFoldingMap[status]) { caseFoldingMap[status] = new Map(); } caseFoldingMap[status].set( codePoint, mappings.length == 1 ? mappings[0] : mappings ); }); return caseFoldingMap; }; module.exports = parseCaseFolding; node-unicode-data-main/scripts/download.js0000644000175000017500000000277715106571514017562 0ustar yaddyadd'use strict'; const fs = require('fs'); const guard = require('when/guard'); const path = require('path'); const { Readable } = require('stream'); const { finished } = require('stream/promises'); const resources = require('../data/resources.js'); const PARALLEL_REQUEST_LIMIT = 5; const download = async function(url, version, type) { const res = await fetch(url); const file = path.resolve( __dirname, '..', 'data', version + '-' + type + '.txt' ); console.log(' ', url, '→', path.basename(file)); //console.log(`curl ${url} > data/${path.basename(file)};`); return finished( Readable.fromWeb(res.body).pipe(fs.createWriteStream(file)) ); }; // Limit maximum parallelism to something reasonable const guardedDownload = guard(guard.n(PARALLEL_REQUEST_LIMIT), download); console.log('Downloading resources…'); const TYPES = [ 'scripts', 'script-extensions', 'blocks', 'properties', 'name-aliases', 'derived-binary-properties', 'derived-core-properties', 'derived-general-category', 'derived-normalization-properties', 'composition-exclusions', 'case-folding', 'special-casing', 'bidi-mirroring', 'bidi-brackets', 'line-break', 'grapheme-cluster-break', 'word-break', 'sentence-break', 'emoji', 'emoji-sequences', 'emoji-test', 'emoji-zwj-sequences', ]; for (const resource of resources) { const version = resource.version; guardedDownload(resource.main, version, 'database'); for (const type of TYPES) { if (resource[type]) { guardedDownload(resource[type], version, type); } } } node-unicode-data-main/scripts/generate-data.js0000644000175000017500000000423215106571514020440 0ustar yaddyadd'use strict'; const resources = require('../data/resources.js'); const generateData = require('../index.js'); // ----------------------------------------------------------------------------- const cluster = require('cluster'); const numCPUs = require('os').cpus().length; const pad = (number) => { return String(number).padStart(2, '0'); }; const getTime = () => { const currentdate = new Date(); return pad(currentdate.getHours()) + ':' + pad(currentdate.getMinutes()) + ':' + pad(currentdate.getSeconds()); }; const complicatedWorkThatTakesTime = (resource, callback) => { if (resource.length) { const version = resource[0].version; console.log('[%s] Worker %d \u2192 Unicode v%s', getTime(), cluster.worker.id, version); console.groupCollapsed(); generateData(version); console.groupEnd(); complicatedWorkThatTakesTime( resource.slice(1), callback ); } else { callback(); } }; if (cluster.isPrimary) { for (let index = 0; index < numCPUs; index++) { const worker = cluster.fork(); worker.on('message', (error) => { for (const id in cluster.workers) { cluster.workers[id].kill(); } throw new Error(`Worker ${worker.id} encountered an error: ${error}`); }) } cluster.on('online', (worker) => { const size = Math.round(resources.length / numCPUs); const x = worker.id - 1; // divide work if (worker.id === 1) { // first worker worker.send(resources.slice(0, worker.id * size)); } else if (worker.id < numCPUs) { // other workers, except the last one worker.send(resources.slice(x * size, worker.id * size)); } else { // last worker worker.send(resources.slice(x * size, resources.length)); } }); cluster.on('exit', (worker) => { if (worker.exitedAfterDisconnect) { console.log('[%s] Worker %d is done!', getTime(), worker.id); } }); } else { process.on('message', (message) => { complicatedWorkThatTakesTime(message, () => { cluster.worker.kill(); }); }); process.on('uncaughtException', (error) => { console.error(error); process.send(error.message); }); process.on('unhandledRejection', (error) => { console.error(error); process.send(error.message || error); }); } node-unicode-data-main/scripts/parse-bidi-class.js0000644000175000017500000000226515106571514021065 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const valueAliases = require('unicode-property-value-aliases'); const regenerate = require('regenerate'); const bidiAliases = valueAliases.get('Bidi_Class'); const parseBidiClass = function (version) { const source = utils.readDataFile(version, 'database'); if (!source) { return; } const categoryMap = {}; const lines = source.split('\n'); let flag = false; let first = 0; for (const line of lines) { if (line === '' || line.startsWith('#')) { continue; } const data = line.trim().split(';'); const codePoint = parseInt(data[0], 16); const name = data[1]; const bidiCategory = data[4] === '' ? undefined : bidiAliases.get(data[4]); if (bidiCategory === undefined) { continue; } categoryMap[bidiCategory] ??= regenerate(); if (flag) { if (/<.+, Last>/.test(name)) { flag = false; categoryMap[bidiCategory].addRange(first, codePoint); } else { throw Error('Database exception'); } } else { if (/<.+, First>/.test(name)) { flag = true; first = codePoint; } else { categoryMap[bidiCategory].add(codePoint); } } } return categoryMap; }; module.exports = parseBidiClass; node-unicode-data-main/scripts/parse-script-extensions.js0000644000175000017500000000340615106571514022552 0ustar yaddyadd'use strict'; const scriptAliases = require('unicode-property-value-aliases').get('Script'); const utils = require('./utils.js'); const findCanonicalName = function(shortName) { return scriptAliases.get(shortName); }; const parseScriptExtensions = function(version, scriptsMap) { const source = utils.readDataFile(version, 'script-extensions'); if (!source) { return; } // Old Unicode versions lack scripts data. Return early in such cases. if (!scriptsMap) { return; } const lines = source.split('\n'); for (const line of lines) { if (!line || /^#/.test(line)) { continue; } const data = line.trim().split(';'); const charRange = data[0].replace('..', '-').trim(); const rangeParts = charRange.split('-'); const scripts = data[1].split('#')[0].trim().split(' '); if (rangeParts.length == 2) { const from = parseInt(rangeParts[0], 16), to = parseInt(rangeParts[1], 16); for (const script of scripts) { const canonicalName = findCanonicalName(script); scriptsMap.Common.removeRange(from, to); scriptsMap.Inherited.removeRange(from, to); console.assert( scriptsMap[canonicalName], `canonical name for ${script} = ${canonicalName} not present in \`scriptsMap\`` ); scriptsMap[canonicalName].addRange(from, to); } } else { const codePoint = parseInt(charRange, 16); for (const script of scripts) { const canonicalName = findCanonicalName(script); scriptsMap.Common.remove(codePoint); scriptsMap.Inherited.remove(codePoint); console.assert( scriptsMap[canonicalName], `canonical name for ${script} = ${canonicalName} not present in \`scriptsMap\`` ); scriptsMap[canonicalName].add(codePoint); } } }; return scriptsMap; }; module.exports = parseScriptExtensions; node-unicode-data-main/scripts/log-versions.js0000644000175000017500000000024315106571514020364 0ustar yaddyadd'use strict'; const resources = require('../data/resources.js'); for (const resource of resources) { const version = resource.version; console.log(version); } node-unicode-data-main/scripts/parse-composition-exclusions.js0000644000175000017500000000150115106571514023600 0ustar yaddyadd'use strict'; const regenerate = require('regenerate'); const utils = require('./utils.js'); const parseCompositionExclusions = function(version) { const source = utils.readDataFile(version, 'composition-exclusions'); if (!source) { return; } const result = regenerate(); const lines = source.split('\n'); for (const line of lines) { if (!line || line.startsWith('#')) { continue; } const data = line.trim().split('#'); const charRange = data[0].replace('..', '-').trim(); const rangeParts = charRange.split('-'); if (rangeParts.length == 2) { result.addRange(parseInt(rangeParts[0], 16), parseInt(rangeParts[1], 16)); } else { const codePoint = parseInt(charRange, 16); result.add(codePoint); } }; return { Composition_Exclusion: result }; }; module.exports = parseCompositionExclusions; node-unicode-data-main/scripts/parse-name-aliases.js0000644000175000017500000000114615106571514021407 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const parseNameAliases = function(version) { const map = {}; const source = utils.readDataFile(version, 'name-aliases'); if (!source) { return; } const lines = source.split('\n'); let first = 0; lines.forEach(function(line) { const data = line.trim().split(';'); const codePoint = parseInt(data[0], 16); const name = data[1]; const type = data[2]; if (!isNaN(codePoint)) { if (map[type] === undefined) { map[type] = {}; } utils.append(map[type], codePoint, name); } }); return map; }; module.exports = parseNameAliases; node-unicode-data-main/scripts/utils.js0000644000175000017500000002217115106571514017101 0ustar yaddyadd'use strict'; const fs = require('fs'); const path = require('path'); const zlib = require('zlib'); const jsesc = require('jsesc'); const regenerate = require('regenerate'); const { encodeRanges, encodeRegenerate } = require('./encode-ranges.js'); const gzipInline = function(data) { if (data instanceof Map) { return `new Map(${ gzipInline([...data]) })`; } const json = JSON.stringify(data); const gzipBuffer = zlib.gzipSync(json); const str = gzipBuffer.toString('base64'); return `JSON.parse(require('zlib').gunzipSync(Buffer.from('${ str }','base64')))`; }; const range = function(start, stop) { // inclusive, e.g. `range(1, 3)` → `[1, 2, 3]` const result = []; for (; start <= stop; result.push(start++)); return result; }; const object = {}; const hasOwnProperty = object.hasOwnProperty; const hasKey = function(object, key) { return hasOwnProperty.call(object, key); }; const codePointsSizeLt = function(codePoints, value) { if (codePoints instanceof regenerate) { const regenerateData = codePoints.data; for (let seenSize = 0, i = 0; i < regenerateData.length; i+= 2) { seenSize += (regenerateData[i + 1] - regenerateData[i]); if (seenSize >= value) { return false; } } return true; } else if (Array.isArray(codePoints)) { return codePoints.length < value; } } const append = function(object, key, value) { if (hasKey(object, key)) { object[key].push(value); } else { object[key] = [value]; } }; const samePropertyRuns = function(codePointProperties) { const result = []; const unsorted = []; for (const [value, regenerateSet] of codePointProperties) { const regenerateData = regenerateSet.data; for (let i = 0; i < regenerateData.length; i += 2) { const start = regenerateData[i]; const runLen = regenerateData[i + 1] - start; unsorted.push([start, runLen, value]); } } unsorted.sort((a, b) => a[0] - b[0]); const sorted = unsorted; for (let i = 0, last = 0; i < sorted.length; i++) { const element = sorted[i]; result.push(element[0] - last, element[1], element[2]); last = element[0] + element[1]; } return result; }; const writeFiles = function(options) { const version = options.version; const subType = options.subType; const map = options.map; if (map == null) { return; } const dirMap = {}; const rootDir = path.resolve( __dirname, '..', 'output', 'unicode-' + version ); /** * A list of flatten (x, y) pairs, * where x is a codepoint, y := codepoint(z) - x, * where z is the BidiMirroringGlyph of character(x) and codepoint(z) > x * @type number[] */ const bidiMirroringGlyphFlatPairs = []; const auxMap = {}; Object.keys(map).forEach(function(item) { const codePoints = map[item]; const type = typeof options.type == 'function' ? options.type(item) : options.type; const isCaseFoldingOrMapping = type == 'Case_Folding' || type == 'Simple_Case_Mapping' || type == 'Special_Casing'; const isNamesCanon = type == 'Names' && !subType; const isNameAliases = type == 'Names' && subType == 'name-aliases'; const subdir = isNameAliases ? item.charAt(0).toUpperCase() + item.slice(1) : item; const dir = path.resolve(rootDir, type, subdir); if ( type == 'Bidi_Class' || type == 'Bidi_Mirroring_Glyph' || type == 'Bidi_Paired_Bracket_Type' || isNamesCanon || ( type == 'General_Category' && // Use the most specific category names, i.e. those whose aliases match // `^[A-Z][a-z]$`. Ignore the others. !/^(?:Other|Letter|Cased_Letter|Mark|Number|Punctuation|Symbol|Separator)$/.test(item) ) ) { if (type == 'Bidi_Mirroring_Glyph') { const toCodepoint = item.codePointAt(0); codePoints.toArray().forEach(function(codePoint) { if (codePoint < toCodepoint) { bidiMirroringGlyphFlatPairs.push(codePoint, toCodepoint - codePoint); } }); } else { if (!auxMap[type]) { auxMap[type] = []; } auxMap[type].push([item, codePoints]); } } if (isNamesCanon || type == 'Bidi_Mirroring_Glyph') { return; } // Create the target directory if it doesn’t exist yet. fs.mkdirSync(dir, { recursive: true }); append(dirMap, type, subdir); // Sequence properties are special. if (type == 'Sequence_Property' || isNameAliases) { const sequences = codePoints; const output = `module.exports=${ gzipInline(sequences) }`; fs.writeFileSync( path.resolve(dir, 'index.js'), output ); fs.writeFileSync( path.resolve(dir, 'index.d.ts'), type === 'Sequence_Property' ? `declare const data: string[];\nexport = data;` : `declare const aliasMap: Record;\nexport = aliasMap;` ); return; } // Save the data to a file let codePointsExports = `require('./ranges.js').flatMap(r=>Array.from(r.keys()))`; let symbolsExports = `require('./ranges.js').flatMap(r=>Array.from(r.values()))`; let codePointsType = 'number[]'; let symbolsType = 'string[]'; if (!isCaseFoldingOrMapping) { const encodedRanges = codePoints instanceof regenerate ? encodeRegenerate(codePoints) : encodeRanges(codePoints); fs.writeFileSync( path.resolve(dir, 'ranges.js'), `module.exports=require('../../decode-ranges.js')('${encodedRanges}')` ); fs.writeFileSync( path.resolve(dir, 'ranges.d.ts'), 'import type { UnicodeRange } from "../../decode-ranges.js";\n\ndeclare const ranges: UnicodeRange[];\nexport = ranges;\n' ); fs.writeFileSync( path.resolve(dir, 'regex.js'), 'module.exports=/' + regenerate(codePoints).toString() + '/' ); fs.writeFileSync( path.resolve(dir, 'regex.d.ts'), 'declare const regex: RegExp;\nexport = regex;' ); if (codePointsSizeLt(codePoints, 10)) { const codePointsAsArray = codePoints instanceof regenerate ? codePoints.toArray() : codePoints; codePointsExports = jsesc(codePointsAsArray); symbolsExports = jsesc(codePointsAsArray.map(cp => String.fromCodePoint(cp))); } } else { const symbols = new Map(); for (let [from, to] of codePoints) { from = String.fromCodePoint(from); if (Array.isArray(to)) { to = String.fromCodePoint.apply(null, to); } else { to = String.fromCodePoint(to); } symbols.set(from, to); } codePointsExports = codePoints.size < 10 ? jsesc(codePoints) : gzipInline(codePoints); symbolsExports = codePoints.size < 10 ? jsesc(symbols) : gzipInline(symbols); if ((type === 'Case_Folding' && item === 'F') || type === 'Special_Casing') { codePointsType = 'Map'; } else { codePointsType = 'Map'; } symbolsType = 'Map'; } fs.writeFileSync( path.resolve(dir, 'code-points.js'), `module.exports=${ codePointsExports }` ); fs.writeFileSync( path.resolve(dir, 'code-points.d.ts'), `declare const codePoints: ${ codePointsType };\nexport = codePoints;` ); fs.writeFileSync( path.resolve(dir, 'symbols.js'), `module.exports=${ symbolsExports }` ); fs.writeFileSync( path.resolve(dir, 'symbols.d.ts'), `declare const symbols: ${ symbolsType };\nexport = symbols;` ); }); if (options.type == 'Bidi_Mirroring_Glyph') { const type = options.type; const dir = path.resolve( __dirname, '..', 'output', 'unicode-' + version, type ); if (!hasKey(dirMap, type)) { dirMap[type] = []; } fs.mkdirSync(dir, { recursive: true }); // `Bidi_Mirroring_Glyph/index.js` // Note: `Bidi_Mirroring_Glyph` doesn’t have repeated strings; don’t gzip. const output = [ `const chr=String.fromCodePoint`, `const pair=(t,u,v)=>[t?u+v:v,chr(t?u:u+v)]`, `module.exports=new Map(${ JSON.stringify(bidiMirroringGlyphFlatPairs) }.map((v,i,a)=>pair(i&1,a[i^1],v)))` ].join(';'); fs.writeFileSync( path.resolve(dir, 'index.js'), output ); fs.writeFileSync( path.resolve(dir, 'index.d.ts'), `declare const data: Map;\nexport = data;` ); } else { Object.keys(auxMap).forEach(function(type) { const dir = path.resolve( __dirname, '..', 'output', 'unicode-' + version, type ); if (!hasKey(dirMap, type)) { dirMap[type] = []; } fs.mkdirSync(dir, { recursive: true }); // `categories/index.js` // or `Bidi_Class/index.js` // or `bidi-brackets/index.js` // or `Names/index.js` const flatRuns = samePropertyRuns(auxMap[type]); const output = `module.exports=require('../decode-property-map.js')(${gzipInline( flatRuns )})`; fs.writeFileSync(path.resolve(dir, "index.js"), output); fs.writeFileSync(path.resolve(dir, "index.d.ts"), `declare const map: Map;\nexport = map;`); }); } return dirMap; }; const extend = function(destination, source) { for (var key in source) { if (hasKey(source, key)) { if (!hasKey(destination, key)) { destination[key] = []; } source[key].forEach(function(item) { append(destination, key, item); }); } } }; const readDataFile = function(version, type) { const sourceFile = path.resolve( __dirname, '..', 'data', version + '-' + type + '.txt' ); if (!fs.existsSync(sourceFile)) { return; } const source = fs.readFileSync(sourceFile, 'utf-8'); return source; }; module.exports = { 'range': range, 'append': append, 'extend': extend, 'readDataFile': readDataFile, 'writeFiles': writeFiles }; node-unicode-data-main/scripts/parse-grapheme-word-sentence-break.js0000644000175000017500000000220715106571514024474 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const regenerate = require('regenerate'); const parseGraphemeWordSentenceBreak = function(version, kind) { const source = utils.readDataFile(version, kind); if (!source) { return; } const map = { // All code points not explicitly listed have the value `Other` (`XX`). 'Other': regenerate().addRange(0, 0x10FFFF) }; const lines = source.split('\n'); for (const line of lines) { if (!line || /^#/.test(line)) { continue; } const data = line.trim().split(';'); const charRange = data[0].replace('..', '-').trim(); const rangeParts = charRange.split('-'); const value = data[1].split('#')[0].trim(); const canonicalName = value; map[canonicalName] ??= regenerate(); if (rangeParts.length == 2) { const [from, to] = [ parseInt(rangeParts[0], 16), parseInt(rangeParts[1], 16), ]; map['Other'].removeRange(from, to); map[canonicalName].addRange(from, to); } else { const codePoint = parseInt(charRange, 16); map['Other'].remove(codePoint); map[canonicalName].add(codePoint); } } return map; }; module.exports = parseGraphemeWordSentenceBreak; node-unicode-data-main/scripts/parse-special-casing.js0000644000175000017500000000360315106571514021732 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const parseSpecialCasing = function(version) { const specialCasingMap = {}; const source = utils.readDataFile(version, 'special-casing'); if (!source) { return; } for (const line of source.split('\n')) { if (line === "" || line.startsWith("#")) { continue; } const data = line.slice(0, line.lastIndexOf("#")).split('; '); const from = parseInt(data[0], 16); const lowercase = data[1] === "" ? [] : data[1].split(' ').map(function(codePoint) { return parseInt(codePoint, 16); }); // Note: this could be zero or two characters! const titlecase = data[2] === "" ? [] : data[2].split(' ').map(function(codePoint) { return parseInt(codePoint, 16); }); // Note: this could be zero or two characters! const uppercase = data[3] === "" ? [] : data[3].split(' ').map(function(codePoint) { return parseInt(codePoint, 16); }); // Note: this could be zero or two characters! // conditions can contain a language ID defined by BCP 47 and casing contexts // defined in Table 3-17 Context Specification for Casing // https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-3/#G54277 // Because the language ID may contain `-`, we let `--` be the separator // between the language ID and the casing contexts. const conditions = data[4].trim().replaceAll(" ", "--"); const storageKeyPostfix = conditions ? "--" + conditions : "" specialCasingMap["Lowercase" + storageKeyPostfix] ??= new Map(); specialCasingMap["Lowercase" + storageKeyPostfix].set(from, lowercase); specialCasingMap["Titlecase" + storageKeyPostfix] ??= new Map(); specialCasingMap["Titlecase" + storageKeyPostfix].set(from, titlecase); specialCasingMap["Uppercase" + storageKeyPostfix] ??= new Map(); specialCasingMap["Uppercase" + storageKeyPostfix].set(from, uppercase); } return specialCasingMap; }; module.exports = parseSpecialCasing; node-unicode-data-main/scripts/parse-emoji.js0000644000175000017500000000233215106571514020151 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const parseEmoji = function(version) { const source = utils.readDataFile(version, 'emoji'); if (!source) { return; } const propertyMap = new Map(); const lines = source.split('\n'); lines.forEach(function(line) { if (!line || /^#/.test(line)) { return; } const data = line.trim().split(' ; '); const charRange = data[0].replace('..', '-').trim(); const rangeParts = charRange.split('-'); const property = data[1].split('#')[0].trim(); if (rangeParts.length == 2) { utils.range( parseInt(rangeParts[0], 16), parseInt(rangeParts[1], 16) ).forEach(function(codePoint) { if (propertyMap.has(property)) { propertyMap.get(property).add(codePoint); } else { propertyMap.set(property, new Set([codePoint])); } }); } else { const codePoint = parseInt(rangeParts, 16); if (propertyMap.has(property)) { propertyMap.get(property).add(codePoint); } else { propertyMap.set(property, new Set([codePoint])); } } }); const plainObject = {}; for (const [property, codePoints] of propertyMap) { plainObject[property] = [...codePoints].sort((a, b) => a - b); } return plainObject; }; module.exports = parseEmoji; node-unicode-data-main/scripts/parse-simple-case-mapping.js0000644000175000017500000000231015106571514022675 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const parseSimpleCaseMapping = function(version) { const maps = [ // Simple_Uppercase_Mapping new Map(), // Simple_Lowercase_Mapping new Map(), // Simple_Titlecase_Mapping new Map() ]; // The column index of Simple_Uppwercase_Mapping in UnicodeData.txt // https://www.unicode.org/reports/tr44/#UnicodeData.txt const columnIndexOfSimpleUppercaseMapping = 12; const source = utils.readDataFile(version, 'database'); if (!source) { return; } const lines = source.split('\n'); for (const line of lines) { const lineTrimmed = line.trim(); if (lineTrimmed === "" || lineTrimmed.startsWith("#")) { continue; } const data = lineTrimmed.split(';'); const from = parseInt(data[0], 16); for (let columnOffset = 0; columnOffset <= 2; columnOffset++) { const raw = data[columnIndexOfSimpleUppercaseMapping + columnOffset]; if (raw !== "") { const to = parseInt(raw, 16); if (isNaN(to)) { throw new Error("Cannot parse the unicode data: " + line) } maps[columnOffset].set(from, to); } } } return { Uppercase: maps[0], Lowercase: maps[1], Titlecase: maps[2] } }; module.exports = parseSimpleCaseMapping; node-unicode-data-main/scripts/parse-emoji-sequences.js0000644000175000017500000000531415106571514022145 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const parseEmojiSequencesWithId = ({ version, id }) => { const source = utils.readDataFile(version, id); if (!source) { return; } const propertyMap = new Map(); const lines = source.split('\n'); lines.forEach((line) => { if (!line || /^#/.test(line)) { return; } const data = line.trim().split('; '); const charRange = data[0].replace('..', '-').trim(); const rangeParts = charRange.split('-'); const property = data[1].split('#')[0].trim(); if (rangeParts.length == 2) { utils.range( parseInt(rangeParts[0], 16), parseInt(rangeParts[1], 16) ).forEach((codePoint) => { const symbol = String.fromCodePoint(codePoint); if (propertyMap.has(property)) { propertyMap.get(property).add(symbol); } else { propertyMap.set(property, new Set([symbol])); } }); } else { const codePoints = data[0].trim().split(' ').map((hex) => { return parseInt(hex, 16); }); const sequence = String.fromCodePoint(...codePoints); if (propertyMap.has(property)) { propertyMap.get(property).add(sequence); } else { propertyMap.set(property, new Set([sequence])); } } }); const plainObject = {}; for (const [property, codePoints] of propertyMap) { plainObject[property] = [...codePoints].sort((a, b) => a - b); } return plainObject; }; const parseEmojiTestData = ({ version }) => { const source = utils.readDataFile(version, 'emoji-test'); if (!source) { return; } const sequences = []; const lines = source.split('\n'); lines.forEach((line) => { if (!line || /^#/.test(line)) { return; } const data = line.trim().split('; '); const codePoints = data[0].trim().split(' ').map((hex) => { return parseInt(hex, 16); }); const sequence = String.fromCodePoint(...codePoints); sequences.push(sequence); }); const plainObject = { 'Emoji_Test': sequences.sort((a, b) => a - b), }; return plainObject; }; const parseEmojiSequences = (version) => { const props = { ...parseEmojiSequencesWithId({ version, id: 'emoji-sequences' }), ...parseEmojiSequencesWithId({ version, id: 'emoji-zwj-sequences' }), ...parseEmojiTestData({ version }), }; // Older Unicode versions that lack RGI_Emoji_* properties should not // get RGI_Emoji either. if (props.RGI_Emoji_ZWJ_Sequence) { // https://unicode.org/reports/tr51/#def_rgi_set const RGI_Emoji = [ ...props.Basic_Emoji, ...props.Emoji_Keycap_Sequence, ...props.RGI_Emoji_Modifier_Sequence, ...props.RGI_Emoji_Flag_Sequence, ...props.RGI_Emoji_Tag_Sequence, ...props.RGI_Emoji_ZWJ_Sequence, ].sort(); const result = { RGI_Emoji, ...props, }; return result; } return props; }; module.exports = parseEmojiSequences; node-unicode-data-main/scripts/parse-bidi-brackets.js0000644000175000017500000000221515106571514021551 0ustar yaddyadd'use strict'; const regenerate = require('regenerate'); const utils = require('./utils.js'); const bidiBracketMap = new Map([ ['o', 'Open'], ['c', 'Close'], ['n', 'None'] ]); const parseBidiBrackets = function(version) { const map = { 'Open': regenerate(), 'Close': regenerate(), 'None': regenerate().addRange(0, 0x10FFFF) }; const source = utils.readDataFile(version, 'bidi-brackets'); if (!source) { return; } const lines = source.split('\n'); for (const line of lines) { if ( /^#/.test(line) || !/;\x20/.test(line) ) { continue; } const data = line.trim().split(';'); const charRange = data[0].replace('..', '-').trim(); let item = data[2].split('#')[0].trim(); item = bidiBracketMap.get(item); const rangeParts = charRange.split('-'); if (rangeParts.length == 2) { const [from, to] = [ parseInt(rangeParts[0], 16), parseInt(rangeParts[1], 16), ]; map['None'].removeRange(from, to); map[item].addRange(from, to); } else { const codePoint = parseInt(charRange, 16); map['None'].remove(codePoint); map[item].add(codePoint); } } return map; }; module.exports = parseBidiBrackets; node-unicode-data-main/scripts/parse-names.js0000644000175000017500000000172615106571514020157 0ustar yaddyadd'use strict'; const utils = require('./utils.js'); const regenerate = require('regenerate'); const parseNames = function(version) { const map = {}; const source = utils.readDataFile(version, 'database'); if (!source) { return; } const lines = source.split('\n'); let flag = false; let first = 0; for (const line of lines) { if (line === '' || line.startsWith('#')) { continue; } const data = line.trim().split(';'); const codePoint = parseInt(data[0], 16); const name = data[1]; if (flag) { if (/<.+, Last>/.test(name)) { flag = false; const rangeName = /<(.+), Last>/.exec(name)[1]; map[rangeName] ??= regenerate(); map[rangeName].addRange(first, codePoint); } else { throw Error('Database exception'); } } else { if (/<.+, First>/.test(name)) { flag = true; first = codePoint; } else { map[name] ??= regenerate(); map[name].add(codePoint); } } } return map; }; module.exports = parseNames; node-unicode-data-main/scripts/encode-ranges.js0000644000175000017500000000315715106571514020456 0ustar yaddyadd/** * See static/decode-ranges.js for decode utilities */ const base64enc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'; /** * Base64 encode variable-length deltas (5/10/15/21-bit). */ function encodeDeltas(input) { const output = []; for (let i = 0; i < input.length; ++i) { const x = input[i]; if ((x >> 5) === 0) { output.push(x); } else if ((x >> 10) === 0) { output.push(32 + (x >> 6), x); } else if ((x >> 15) === 0) { output.push(48 + (x >> 12), x >> 6, x); } else { console.assert((x >> 21) === 0, `delta ${x} out of range`); output.push(56 + (x >> 18), x >> 12, x >> 6, x); } } return output.map(x => base64enc[x & 63]).join(''); } /** * RLE + base64 encode code point ranges. */ function encodeRanges(values) { const deltas = []; for (let end = -1, i = 0; i < values.length; ) { const begin = values[i]; console.assert(begin > end, `code point ${begin} out of order`); deltas.push(begin - end - 1); end = begin + 1; while (++i < values.length && values[i] === end) { ++end; } deltas.push(end - begin - 1); } debugger; return encodeDeltas(deltas); } function encodeRegenerate(regenerateSet) { const deltas = []; const regenerateData = regenerateSet.data; for (let end = - 1, i = 0; i < regenerateData.length; i += 2) { const begin = regenerateData[i]; console.assert(begin > end, `code point ${begin} out of order`); deltas.push(begin - end - 1); end = regenerateData[i + 1]; deltas.push(end - begin - 1); } return encodeDeltas(deltas); } module.exports = { encodeRanges: encodeRanges, encodeRegenerate: encodeRegenerate, }node-unicode-data-main/scripts/parse-blocks-scripts-properties.js0000644000175000017500000002473515106571514024215 0ustar yaddyadd'use strict'; const looseMatch = require('unicode-loose-match'); const propertyAliases = require('unicode-property-aliases'); const regenerate = require('regenerate'); const utils = require('./utils.js'); const valueAliases = require('unicode-property-value-aliases'); const categoryAliases = valueAliases.get('General_Category'); const CODEPOINT_MAX = 0x10ffff; const findCanonicalName = function(shortName) { const canonicalName = propertyAliases.get(shortName); if (!canonicalName) { // This is useful when adding newer versions, but fails for older Unicode versions. // TODO: Fix and re-enable the exception. //throw new Error(`Failed to find canonical name for property ${shortName}. Update \`unicode-property-aliases\`.`); return shortName; } return canonicalName; }; const initialMapForType = function(type) { switch (type) { case 'scripts': return { Unknown: regenerate().addRange(0, CODEPOINT_MAX), }; default: return {}; } }; /** * @param {'blocks' | 'bidi-mirroring' | 'derived-binary-properties' | 'derived-core-properties' | 'derived-general-category' | 'scripts'} type * @param {string} version * @returns */ const parseBlocksScriptsProperties = function(type, version) { const map = initialMapForType(type); const source = utils.readDataFile(version, type); if (!source) { return; } const lines = source.split('\n'); for (const line of lines) { if ( /^#/.test(line) || !( /^(?:blocks|bidi-mirroring|derived-general-category|properties)$/.test(type) ? /;\x20/.test(line) : /\x20;\x20/.test(line) ) ) { continue; } const data = line.trim().split(';'); const charRange = data[0].replace('..', '-').trim(); let item = data[1].split( type == 'blocks' ? ';' : '#' )[0].trim().replace(/\x20/g, '_'); if (type == 'derived-normalization-properties') { if (item == 'FNC') { // Old Unicode versions up to v4.0.0 use the `FNC` alias instead of // `FC_NFKC` (for `FC_NFKC_Closure`). This is not a binary property. continue; } else { const canonical = findCanonicalName(item); if (canonical) { if (/FC_NFKC_Closure|^NFKC_Casefold$|(?:NFC|NFD|NFKC|NFKD)_Quick_Check/.test(canonical)) { // These are not binary properties, or their default value (in the // file) is not `True`. continue; } item = canonical; } } } else if (type == 'blocks') { // Use canonical block names. See #34 const tmp = looseMatch('Block', item).value; if (!tmp) { throw new Error(`Canonical block name not found for ${item}. Update \`unicode-loose-match\`.`); } item = tmp; } else if (type == 'bidi-mirroring') { item = String.fromCodePoint(parseInt(item, 16)); } else if (type == 'derived-general-category') { item = categoryAliases.get(item) || item } map[item] ??= regenerate(); const rangeParts = charRange.split('-'); if (rangeParts.length == 2) { const start = parseInt(rangeParts[0], 16), end = parseInt(rangeParts[1], 16); map[item].addRange(start, end); if (type == 'scripts') { map.Unknown.removeRange(start, end); } } else { const codepoint = parseInt(charRange, 16); map[item].add(codepoint); if (type == 'scripts') { map.Unknown.remove(codepoint); } } } return map; }; const parseDerivedBinaryProperties = function(version) { if (version === '3.1.1' || version === '3.1.0' || version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3) { // Unicode <= 3.1.1 does not provide derived-binary-properties, // so we should derive Bidi_Mirrored from the UnicodeData const source = utils.readDataFile(version, 'database'); if (!source) { return; } const result = []; for (const line of source.split('\n')) { if (line === '' || line.startsWith('#')) { continue; } const data = line.split(';'); if (data[9] === 'Y') { const codePoint = parseInt(data[0], 16); result.push(codePoint); } } return { Bidi_Mirrored: result } } else { return parseBlocksScriptsProperties('derived-binary-properties', version); } } const parseDerivedGeneralCategory = function (version) { if ( version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3 ) { // Unicode <= 3.0.1 does not provide derived-general-category, // so we should derive General_Category from the UnicodeData const source = utils.readDataFile(version, 'database'); if (!source) { return; } const lines = source.split('\n'); const categoryMap = { // Note: `Any`, `ASCII`, and `Assigned` are actually properties, // not categories. http://unicode.org/reports/tr18/#Categories Any: regenerate().addRange(0, CODEPOINT_MAX), ASCII: regenerate().addRange(0, 0x7f), Assigned: regenerate(), }; let flag = false; let first = 0; let lastCodePoint = -1; // http://unicode.org/reports/tr44/#GC_Values_Table // http://unicode.org/reports/tr18/#Categories for (const line of lines) { if (line === '' || line.startsWith('#')) { continue; } const data = line.trim().split(';'); const codePoint = parseInt(data[0], 16); const name = data[1]; const generalCategory = data[2]; const categories = [ categoryAliases.get(generalCategory), categoryAliases.get(generalCategory.charAt(0)), 'Assigned', ]; if (/^(?:Ll|Lu|Lt)$/.test(generalCategory)) { categories.push(categoryAliases.get('LC')); } for (const category of categories) { categoryMap[category] ??= regenerate(); } if (flag) { if (/<.+, Last>/.test(name)) { flag = false; for (const category of categories) { categoryMap[category].addRange(first, codePoint); } } else { throw Error('Database exception'); } } else { // If there is a gap within UnicodeData, it must be unassigned code points if (lastCodePoint + 1 < codePoint) { const categories = [ categoryAliases.get('C'), categoryAliases.get('Cn'), ]; for (const category of categories) { categoryMap[category] ??= regenerate(); categoryMap[category].addRange(lastCodePoint + 1, codePoint - 1); } } if (/<.+, First>/.test(name)) { flag = true; first = codePoint; } else { for (const category of categories) { categoryMap[category].add(codePoint); } } } lastCodePoint = codePoint; } if (lastCodePoint < CODEPOINT_MAX) { // Add the last unassigned code point range const categories = [categoryAliases.get('C'), categoryAliases.get('Cn')]; for (const category of categories) { categoryMap[category] ??= regenerate(); categoryMap[category].addRange(lastCodePoint + 1, CODEPOINT_MAX); } } return categoryMap; } else { const map = parseBlocksScriptsProperties( 'derived-general-category', version ); const getCategory = (shortName) => categoryAliases.get(shortName) || shortName; const getCategoryMap = (shortName) => map[getCategory(shortName)]; // Note: `Any`, `ASCII`, and `Assigned` are actually properties, // not categories. http://unicode.org/reports/tr18/#Categories map['Any'] = regenerate().addRange(0, CODEPOINT_MAX); map['ASCII'] = regenerate().addRange(0, 0x7f); map['Assigned'] = regenerate() .addRange(0, CODEPOINT_MAX) .remove(getCategoryMap('Cn')); // https://www.unicode.org/reports/tr44/#General_Category_Values const categoryRules = { LC: ['Lu', 'Ll', 'Lt'], L: ['LC', 'Lm', 'Lo'], M: ['Mn', 'Mc', 'Me'], N: ['Nd', 'Nl', 'No'], P: ['Pc', 'Pd', 'Ps', 'Pe', 'Pi', 'Pf', 'Po'], S: ['Sm', 'Sc', 'Sk', 'So'], Z: ['Zs', 'Zl', 'Zp'], C: ['Cc', 'Cf', 'Cs', 'Co', 'Cn'], }; for (const [key, values] of Object.entries(categoryRules)) { const result = regenerate(); for (const value of values) { result.add(getCategoryMap(value)); } map[getCategory(key)] = result; } return map; } } const parseBlocks = function (version) { if (version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3) { const source = utils.readDataFile(version, 'blocks'); if (!source) { return; } const map = {}; for (const line of source.trimEnd().split('\n')) { if (line.startsWith('#')) { continue; } const [start, end, blockName] = line.split('; '); const canonicalBlockName = looseMatch('Block', blockName).value; map[canonicalBlockName] = regenerate().addRange( parseInt(start, 16), parseInt(end, 16) ); } return map; } else { return parseBlocksScriptsProperties('blocks', version); } } const parseProperties = function (version) { if ( version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3 ) { const source = utils.readDataFile(version, 'properties'); if (!source) { return; } const map = {}; const lines = source.trimEnd().split('\n'); let currentProperty, maybeProperty, maybeRange for (let i = 0; i < lines.length; i++) { const line = lines[i]; if ((maybeProperty = /0x[A-F\d]+ \((.+?)\)$/.exec(line)) != null) { currentProperty = maybeProperty[1]; if ( // ignore Bidi_Class as they have been generated from UnicodeData currentProperty.startsWith("Bidi:") || // ignore Not a Character and Unassigned Code Value as they have been generated from UnicodeData currentProperty === "Not a Character" || currentProperty === "Unassigned Code Value" ) { // skip contents i++; while (++i < lines.length && lines[i] !== ""); continue; } currentProperty = currentProperty.replaceAll(' ', '_'); currentProperty = findCanonicalName(currentProperty) ?? currentProperty; map[currentProperty] = regenerate(); } else if ((maybeRange = /^([A-F\d]{4,5})(?:..([A-F\d]{4,5}))?/.exec(line)) != null) { if (maybeRange[2]) { map[currentProperty].addRange( parseInt(maybeRange[1], 16), parseInt(maybeRange[2], 16) ); } else { map[currentProperty].add(parseInt(maybeRange[1], 16)); } } } return map; } else { return parseBlocksScriptsProperties('properties', version); } }; module.exports = { 'parseScripts': parseBlocksScriptsProperties.bind(null, 'scripts'), 'parseProperties': parseProperties, 'parseDerivedCoreProperties': parseBlocksScriptsProperties.bind(null, 'derived-core-properties'), 'parseDerivedNormalizationProperties': parseBlocksScriptsProperties.bind(null, 'derived-normalization-properties'), 'parseBlocks': parseBlocks, 'parseMirroring': parseBlocksScriptsProperties.bind(null, 'bidi-mirroring'), 'parseDerivedBinaryProperties': parseDerivedBinaryProperties, 'parseDerivedGeneralCategory': parseDerivedGeneralCategory }; node-unicode-data-main/.github/0000755000175000017500000000000015106571514015251 5ustar yaddyaddnode-unicode-data-main/.github/workflows/0000755000175000017500000000000015106571514017306 5ustar yaddyaddnode-unicode-data-main/.github/workflows/ci.yml0000644000175000017500000000072215106571514020425 0ustar yaddyaddname: CI on: [push, pull_request] permissions: contents: read jobs: test: name: Test runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - name: Install dependencies run: npm install - name: Build run: npm run build - name: Run tests run: npm test node-unicode-data-main/.editorconfig0000644000175000017500000000025715106571514016372 0ustar yaddyaddroot = true [*] charset = utf-8 indent_style = tab end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true [*.yml] indent_size = 2 indent_style = space node-unicode-data-main/tests/0000755000175000017500000000000015106571514015053 5ustar yaddyaddnode-unicode-data-main/tests/tests.js.snapshot0000644000175000017500000010014515106571514020412 0ustar yaddyaddexports[`The generated Unicode 1.1.5 js > Bidi_Class/Right_To_Left should match the snapshot 1`] = ` [ { "begin": 1456, "end": 1466, "length": 10 }, { "begin": 1467, "end": 1476, "length": 9 }, { "begin": 1488, "end": 1515, "length": 27 }, { "begin": 1520, "end": 1525, "length": 5 }, { "begin": 1548, "end": 1549, "length": 1 }, { "begin": 1563, "end": 1564, "length": 1 }, { "begin": 1567, "end": 1568, "length": 1 }, { "begin": 1569, "end": 1595, "length": 26 }, { "begin": 1600, "end": 1619, "length": 19 }, { "begin": 1645, "end": 1646, "length": 1 }, { "begin": 1648, "end": 1720, "length": 72 }, { "begin": 1722, "end": 1727, "length": 5 }, { "begin": 1728, "end": 1743, "length": 15 }, { "begin": 1744, "end": 1774, "length": 30 }, { "begin": 8207, "end": 8208, "length": 1 }, { "begin": 64286, "end": 64311, "length": 25 }, { "begin": 64312, "end": 64317, "length": 5 }, { "begin": 64318, "end": 64319, "length": 1 }, { "begin": 64320, "end": 64322, "length": 2 }, { "begin": 64323, "end": 64325, "length": 2 }, { "begin": 64326, "end": 64434, "length": 108 }, { "begin": 64467, "end": 64830, "length": 363 }, { "begin": 64848, "end": 64912, "length": 64 }, { "begin": 64914, "end": 64968, "length": 54 }, { "begin": 65008, "end": 65020, "length": 12 }, { "begin": 65136, "end": 65139, "length": 3 }, { "begin": 65140, "end": 65141, "length": 1 }, { "begin": 65142, "end": 65277, "length": 135 } ] `; exports[`The generated Unicode 1.1.5 js > Binary_Property/ASCII should match the snapshot 1`] = ` [ { "begin": 0, "end": 128, "length": 128 } ] `; exports[`The generated Unicode 1.1.5 js > General_Category/Modifier_Letter should match the snapshot 1`] = ` [ { "begin": 94, "end": 95, "length": 1 }, { "begin": 96, "end": 97, "length": 1 }, { "begin": 168, "end": 169, "length": 1 }, { "begin": 175, "end": 176, "length": 1 }, { "begin": 180, "end": 181, "length": 1 }, { "begin": 184, "end": 185, "length": 1 }, { "begin": 688, "end": 735, "length": 47 }, { "begin": 736, "end": 746, "length": 10 }, { "begin": 890, "end": 891, "length": 1 }, { "begin": 900, "end": 902, "length": 2 }, { "begin": 1369, "end": 1370, "length": 1 }, { "begin": 1765, "end": 1767, "length": 2 }, { "begin": 8125, "end": 8130, "length": 5 }, { "begin": 8141, "end": 8144, "length": 3 }, { "begin": 8157, "end": 8160, "length": 3 }, { "begin": 8173, "end": 8176, "length": 3 }, { "begin": 8189, "end": 8191, "length": 2 }, { "begin": 12443, "end": 12447, "length": 4 }, { "begin": 12540, "end": 12543, "length": 3 } ] `; exports[`The generated latest Unicode js > Bidi_Class/Pop_Directional_Isolate should match the snapshot 1`] = ` [ { "begin": 8297, "end": 8298, "length": 1 } ] `; exports[`The generated latest Unicode js > Bidi_Mirroring_Glyph should match the snapshot 1`] = ` [ [ 40, ")" ], [ 41, "(" ], [ 60, ">" ], [ 62, "<" ], [ 91, "]" ], [ 93, "[" ], [ 123, "}" ], [ 125, "{" ], [ 171, "»" ], [ 187, "«" ], [ 3898, "༻" ], [ 3899, "༺" ], [ 3900, "༽" ], [ 3901, "༼" ], [ 5787, "᚜" ], [ 5788, "᚛" ], [ 8249, "›" ], [ 8250, "‹" ], [ 8261, "⁆" ], [ 8262, "⁅" ], [ 8317, "⁾" ], [ 8318, "⁽" ], [ 8333, "₎" ], [ 8334, "₍" ], [ 8712, "∋" ], [ 8713, "∌" ], [ 8714, "∍" ], [ 8715, "∈" ], [ 8716, "∉" ], [ 8717, "∊" ], [ 8725, "⧵" ], [ 8735, "⯾" ], [ 8736, "⦣" ], [ 8737, "⦛" ], [ 8738, "⦠" ], [ 8740, "⫮" ], [ 8764, "∽" ], [ 8765, "∼" ], [ 8771, "⋍" ], [ 8773, "≌" ], [ 8780, "≅" ], [ 8786, "≓" ], [ 8787, "≒" ], [ 8788, "≕" ], [ 8789, "≔" ], [ 8804, "≥" ], [ 8805, "≤" ], [ 8806, "≧" ], [ 8807, "≦" ], [ 8808, "≩" ], [ 8809, "≨" ], [ 8810, "≫" ], [ 8811, "≪" ], [ 8814, "≯" ], [ 8815, "≮" ], [ 8816, "≱" ], [ 8817, "≰" ], [ 8818, "≳" ], [ 8819, "≲" ], [ 8820, "≵" ], [ 8821, "≴" ], [ 8822, "≷" ], [ 8823, "≶" ], [ 8824, "≹" ], [ 8825, "≸" ], [ 8826, "≻" ], [ 8827, "≺" ], [ 8828, "≽" ], [ 8829, "≼" ], [ 8830, "≿" ], [ 8831, "≾" ], [ 8832, "⊁" ], [ 8833, "⊀" ], [ 8834, "⊃" ], [ 8835, "⊂" ], [ 8836, "⊅" ], [ 8837, "⊄" ], [ 8838, "⊇" ], [ 8839, "⊆" ], [ 8840, "⊉" ], [ 8841, "⊈" ], [ 8842, "⊋" ], [ 8843, "⊊" ], [ 8847, "⊐" ], [ 8848, "⊏" ], [ 8849, "⊒" ], [ 8850, "⊑" ], [ 8856, "⦸" ], [ 8866, "⊣" ], [ 8867, "⊢" ], [ 8870, "⫞" ], [ 8872, "⫤" ], [ 8873, "⫣" ], [ 8875, "⫥" ], [ 8880, "⊱" ], [ 8881, "⊰" ], [ 8882, "⊳" ], [ 8883, "⊲" ], [ 8884, "⊵" ], [ 8885, "⊴" ], [ 8886, "⊷" ], [ 8887, "⊶" ], [ 8888, "⟜" ], [ 8905, "⋊" ], [ 8906, "⋉" ], [ 8907, "⋌" ], [ 8908, "⋋" ], [ 8909, "≃" ], [ 8912, "⋑" ], [ 8913, "⋐" ], [ 8918, "⋗" ], [ 8919, "⋖" ], [ 8920, "⋙" ], [ 8921, "⋘" ], [ 8922, "⋛" ], [ 8923, "⋚" ], [ 8924, "⋝" ], [ 8925, "⋜" ], [ 8926, "⋟" ], [ 8927, "⋞" ], [ 8928, "⋡" ], [ 8929, "⋠" ], [ 8930, "⋣" ], [ 8931, "⋢" ], [ 8932, "⋥" ], [ 8933, "⋤" ], [ 8934, "⋧" ], [ 8935, "⋦" ], [ 8936, "⋩" ], [ 8937, "⋨" ], [ 8938, "⋫" ], [ 8939, "⋪" ], [ 8940, "⋭" ], [ 8941, "⋬" ], [ 8944, "⋱" ], [ 8945, "⋰" ], [ 8946, "⋺" ], [ 8947, "⋻" ], [ 8948, "⋼" ], [ 8950, "⋽" ], [ 8951, "⋾" ], [ 8954, "⋲" ], [ 8955, "⋳" ], [ 8956, "⋴" ], [ 8957, "⋶" ], [ 8958, "⋷" ], [ 8968, "⌉" ], [ 8969, "⌈" ], [ 8970, "⌋" ], [ 8971, "⌊" ], [ 9001, "〉" ], [ 9002, "〈" ], [ 10088, "❩" ], [ 10089, "❨" ], [ 10090, "❫" ], [ 10091, "❪" ], [ 10092, "❭" ], [ 10093, "❬" ], [ 10094, "❯" ], [ 10095, "❮" ], [ 10096, "❱" ], [ 10097, "❰" ], [ 10098, "❳" ], [ 10099, "❲" ], [ 10100, "❵" ], [ 10101, "❴" ], [ 10179, "⟄" ], [ 10180, "⟃" ], [ 10181, "⟆" ], [ 10182, "⟅" ], [ 10184, "⟉" ], [ 10185, "⟈" ], [ 10187, "⟍" ], [ 10189, "⟋" ], [ 10197, "⟖" ], [ 10198, "⟕" ], [ 10204, "⊸" ], [ 10205, "⟞" ], [ 10206, "⟝" ], [ 10210, "⟣" ], [ 10211, "⟢" ], [ 10212, "⟥" ], [ 10213, "⟤" ], [ 10214, "⟧" ], [ 10215, "⟦" ], [ 10216, "⟩" ], [ 10217, "⟨" ], [ 10218, "⟫" ], [ 10219, "⟪" ], [ 10220, "⟭" ], [ 10221, "⟬" ], [ 10222, "⟯" ], [ 10223, "⟮" ], [ 10627, "⦄" ], [ 10628, "⦃" ], [ 10629, "⦆" ], [ 10630, "⦅" ], [ 10631, "⦈" ], [ 10632, "⦇" ], [ 10633, "⦊" ], [ 10634, "⦉" ], [ 10635, "⦌" ], [ 10636, "⦋" ], [ 10637, "⦐" ], [ 10638, "⦏" ], [ 10639, "⦎" ], [ 10640, "⦍" ], [ 10641, "⦒" ], [ 10642, "⦑" ], [ 10643, "⦔" ], [ 10644, "⦓" ], [ 10645, "⦖" ], [ 10646, "⦕" ], [ 10647, "⦘" ], [ 10648, "⦗" ], [ 10651, "∡" ], [ 10656, "∢" ], [ 10659, "∠" ], [ 10660, "⦥" ], [ 10661, "⦤" ], [ 10664, "⦩" ], [ 10665, "⦨" ], [ 10666, "⦫" ], [ 10667, "⦪" ], [ 10668, "⦭" ], [ 10669, "⦬" ], [ 10670, "⦯" ], [ 10671, "⦮" ], [ 10680, "⊘" ], [ 10688, "⧁" ], [ 10689, "⧀" ], [ 10692, "⧅" ], [ 10693, "⧄" ], [ 10703, "⧐" ], [ 10704, "⧏" ], [ 10705, "⧒" ], [ 10706, "⧑" ], [ 10708, "⧕" ], [ 10709, "⧔" ], [ 10712, "⧙" ], [ 10713, "⧘" ], [ 10714, "⧛" ], [ 10715, "⧚" ], [ 10728, "⧩" ], [ 10729, "⧨" ], [ 10741, "∕" ], [ 10744, "⧹" ], [ 10745, "⧸" ], [ 10748, "⧽" ], [ 10749, "⧼" ], [ 10795, "⨬" ], [ 10796, "⨫" ], [ 10797, "⨮" ], [ 10798, "⨭" ], [ 10804, "⨵" ], [ 10805, "⨴" ], [ 10812, "⨽" ], [ 10813, "⨼" ], [ 10852, "⩥" ], [ 10853, "⩤" ], [ 10873, "⩺" ], [ 10874, "⩹" ], [ 10875, "⩼" ], [ 10876, "⩻" ], [ 10877, "⩾" ], [ 10878, "⩽" ], [ 10879, "⪀" ], [ 10880, "⩿" ], [ 10881, "⪂" ], [ 10882, "⪁" ], [ 10883, "⪄" ], [ 10884, "⪃" ], [ 10885, "⪆" ], [ 10886, "⪅" ], [ 10887, "⪈" ], [ 10888, "⪇" ], [ 10889, "⪊" ], [ 10890, "⪉" ], [ 10891, "⪌" ], [ 10892, "⪋" ], [ 10893, "⪎" ], [ 10894, "⪍" ], [ 10895, "⪐" ], [ 10896, "⪏" ], [ 10897, "⪒" ], [ 10898, "⪑" ], [ 10899, "⪔" ], [ 10900, "⪓" ], [ 10901, "⪖" ], [ 10902, "⪕" ], [ 10903, "⪘" ], [ 10904, "⪗" ], [ 10905, "⪚" ], [ 10906, "⪙" ], [ 10907, "⪜" ], [ 10908, "⪛" ], [ 10909, "⪞" ], [ 10910, "⪝" ], [ 10911, "⪠" ], [ 10912, "⪟" ], [ 10913, "⪢" ], [ 10914, "⪡" ], [ 10918, "⪧" ], [ 10919, "⪦" ], [ 10920, "⪩" ], [ 10921, "⪨" ], [ 10922, "⪫" ], [ 10923, "⪪" ], [ 10924, "⪭" ], [ 10925, "⪬" ], [ 10927, "⪰" ], [ 10928, "⪯" ], [ 10929, "⪲" ], [ 10930, "⪱" ], [ 10931, "⪴" ], [ 10932, "⪳" ], [ 10933, "⪶" ], [ 10934, "⪵" ], [ 10935, "⪸" ], [ 10936, "⪷" ], [ 10937, "⪺" ], [ 10938, "⪹" ], [ 10939, "⪼" ], [ 10940, "⪻" ], [ 10941, "⪾" ], [ 10942, "⪽" ], [ 10943, "⫀" ], [ 10944, "⪿" ], [ 10945, "⫂" ], [ 10946, "⫁" ], [ 10947, "⫄" ], [ 10948, "⫃" ], [ 10949, "⫆" ], [ 10950, "⫅" ], [ 10951, "⫈" ], [ 10952, "⫇" ], [ 10953, "⫊" ], [ 10954, "⫉" ], [ 10955, "⫌" ], [ 10956, "⫋" ], [ 10957, "⫎" ], [ 10958, "⫍" ], [ 10959, "⫐" ], [ 10960, "⫏" ], [ 10961, "⫒" ], [ 10962, "⫑" ], [ 10963, "⫔" ], [ 10964, "⫓" ], [ 10965, "⫖" ], [ 10966, "⫕" ], [ 10974, "⊦" ], [ 10979, "⊩" ], [ 10980, "⊨" ], [ 10981, "⊫" ], [ 10988, "⫭" ], [ 10989, "⫬" ], [ 10990, "∤" ], [ 10999, "⫸" ], [ 11000, "⫷" ], [ 11001, "⫺" ], [ 11002, "⫹" ], [ 11262, "∟" ], [ 11778, "⸃" ], [ 11779, "⸂" ], [ 11780, "⸅" ], [ 11781, "⸄" ], [ 11785, "⸊" ], [ 11786, "⸉" ], [ 11788, "⸍" ], [ 11789, "⸌" ], [ 11804, "⸝" ], [ 11805, "⸜" ], [ 11808, "⸡" ], [ 11809, "⸠" ], [ 11810, "⸣" ], [ 11811, "⸢" ], [ 11812, "⸥" ], [ 11813, "⸤" ], [ 11814, "⸧" ], [ 11815, "⸦" ], [ 11816, "⸩" ], [ 11817, "⸨" ], [ 11861, "⹖" ], [ 11862, "⹕" ], [ 11863, "⹘" ], [ 11864, "⹗" ], [ 11865, "⹚" ], [ 11866, "⹙" ], [ 11867, "⹜" ], [ 11868, "⹛" ], [ 12296, "〉" ], [ 12297, "〈" ], [ 12298, "》" ], [ 12299, "《" ], [ 12300, "」" ], [ 12301, "「" ], [ 12302, "』" ], [ 12303, "『" ], [ 12304, "】" ], [ 12305, "【" ], [ 12308, "〕" ], [ 12309, "〔" ], [ 12310, "〗" ], [ 12311, "〖" ], [ 12312, "〙" ], [ 12313, "〘" ], [ 12314, "〛" ], [ 12315, "〚" ], [ 65113, "﹚" ], [ 65114, "﹙" ], [ 65115, "﹜" ], [ 65116, "﹛" ], [ 65117, "﹞" ], [ 65118, "﹝" ], [ 65124, "﹥" ], [ 65125, "﹤" ], [ 65288, ")" ], [ 65289, "(" ], [ 65308, ">" ], [ 65310, "<" ], [ 65339, "]" ], [ 65341, "[" ], [ 65371, "}" ], [ 65373, "{" ], [ 65375, "⦆" ], [ 65376, "⦅" ], [ 65378, "」" ], [ 65379, "「" ] ] `; exports[`The generated latest Unicode js > Bidi_Paired_Bracket_Type/Open should match the snapshot 1`] = ` [ { "begin": 40, "end": 41, "length": 1 }, { "begin": 91, "end": 92, "length": 1 }, { "begin": 123, "end": 124, "length": 1 }, { "begin": 3898, "end": 3899, "length": 1 }, { "begin": 3900, "end": 3901, "length": 1 }, { "begin": 5787, "end": 5788, "length": 1 }, { "begin": 8261, "end": 8262, "length": 1 }, { "begin": 8317, "end": 8318, "length": 1 }, { "begin": 8333, "end": 8334, "length": 1 }, { "begin": 8968, "end": 8969, "length": 1 }, { "begin": 8970, "end": 8971, "length": 1 }, { "begin": 9001, "end": 9002, "length": 1 }, { "begin": 10088, "end": 10089, "length": 1 }, { "begin": 10090, "end": 10091, "length": 1 }, { "begin": 10092, "end": 10093, "length": 1 }, { "begin": 10094, "end": 10095, "length": 1 }, { "begin": 10096, "end": 10097, "length": 1 }, { "begin": 10098, "end": 10099, "length": 1 }, { "begin": 10100, "end": 10101, "length": 1 }, { "begin": 10181, "end": 10182, "length": 1 }, { "begin": 10214, "end": 10215, "length": 1 }, { "begin": 10216, "end": 10217, "length": 1 }, { "begin": 10218, "end": 10219, "length": 1 }, { "begin": 10220, "end": 10221, "length": 1 }, { "begin": 10222, "end": 10223, "length": 1 }, { "begin": 10627, "end": 10628, "length": 1 }, { "begin": 10629, "end": 10630, "length": 1 }, { "begin": 10631, "end": 10632, "length": 1 }, { "begin": 10633, "end": 10634, "length": 1 }, { "begin": 10635, "end": 10636, "length": 1 }, { "begin": 10637, "end": 10638, "length": 1 }, { "begin": 10639, "end": 10640, "length": 1 }, { "begin": 10641, "end": 10642, "length": 1 }, { "begin": 10643, "end": 10644, "length": 1 }, { "begin": 10645, "end": 10646, "length": 1 }, { "begin": 10647, "end": 10648, "length": 1 }, { "begin": 10712, "end": 10713, "length": 1 }, { "begin": 10714, "end": 10715, "length": 1 }, { "begin": 10748, "end": 10749, "length": 1 }, { "begin": 11810, "end": 11811, "length": 1 }, { "begin": 11812, "end": 11813, "length": 1 }, { "begin": 11814, "end": 11815, "length": 1 }, { "begin": 11816, "end": 11817, "length": 1 }, { "begin": 11861, "end": 11862, "length": 1 }, { "begin": 11863, "end": 11864, "length": 1 }, { "begin": 11865, "end": 11866, "length": 1 }, { "begin": 11867, "end": 11868, "length": 1 }, { "begin": 12296, "end": 12297, "length": 1 }, { "begin": 12298, "end": 12299, "length": 1 }, { "begin": 12300, "end": 12301, "length": 1 }, { "begin": 12302, "end": 12303, "length": 1 }, { "begin": 12304, "end": 12305, "length": 1 }, { "begin": 12308, "end": 12309, "length": 1 }, { "begin": 12310, "end": 12311, "length": 1 }, { "begin": 12312, "end": 12313, "length": 1 }, { "begin": 12314, "end": 12315, "length": 1 }, { "begin": 65113, "end": 65114, "length": 1 }, { "begin": 65115, "end": 65116, "length": 1 }, { "begin": 65117, "end": 65118, "length": 1 }, { "begin": 65288, "end": 65289, "length": 1 }, { "begin": 65339, "end": 65340, "length": 1 }, { "begin": 65371, "end": 65372, "length": 1 }, { "begin": 65375, "end": 65376, "length": 1 }, { "begin": 65378, "end": 65379, "length": 1 } ] `; exports[`The generated latest Unicode js > Binary_Property/Hex_Digit should match the snapshot 1`] = ` [ { "begin": 48, "end": 58, "length": 10 }, { "begin": 65, "end": 71, "length": 6 }, { "begin": 97, "end": 103, "length": 6 }, { "begin": 65296, "end": 65306, "length": 10 }, { "begin": 65313, "end": 65319, "length": 6 }, { "begin": 65345, "end": 65351, "length": 6 } ] `; exports[`The generated latest Unicode js > Binary_Property/Sentence_Terminal should match the snapshot 1`] = ` [ { "begin": 33, "end": 34, "length": 1 }, { "begin": 46, "end": 47, "length": 1 }, { "begin": 63, "end": 64, "length": 1 }, { "begin": 1417, "end": 1418, "length": 1 }, { "begin": 1565, "end": 1568, "length": 3 }, { "begin": 1748, "end": 1749, "length": 1 }, { "begin": 1792, "end": 1795, "length": 3 }, { "begin": 2041, "end": 2042, "length": 1 }, { "begin": 2103, "end": 2104, "length": 1 }, { "begin": 2105, "end": 2106, "length": 1 }, { "begin": 2109, "end": 2111, "length": 2 }, { "begin": 2404, "end": 2406, "length": 2 }, { "begin": 4170, "end": 4172, "length": 2 }, { "begin": 4962, "end": 4963, "length": 1 }, { "begin": 4967, "end": 4969, "length": 2 }, { "begin": 5742, "end": 5743, "length": 1 }, { "begin": 5941, "end": 5943, "length": 2 }, { "begin": 6100, "end": 6102, "length": 2 }, { "begin": 6147, "end": 6148, "length": 1 }, { "begin": 6153, "end": 6154, "length": 1 }, { "begin": 6468, "end": 6470, "length": 2 }, { "begin": 6824, "end": 6828, "length": 4 }, { "begin": 6990, "end": 6992, "length": 2 }, { "begin": 7002, "end": 7004, "length": 2 }, { "begin": 7006, "end": 7008, "length": 2 }, { "begin": 7037, "end": 7040, "length": 3 }, { "begin": 7227, "end": 7229, "length": 2 }, { "begin": 7294, "end": 7296, "length": 2 }, { "begin": 8228, "end": 8229, "length": 1 }, { "begin": 8252, "end": 8254, "length": 2 }, { "begin": 8263, "end": 8266, "length": 3 }, { "begin": 11513, "end": 11516, "length": 3 }, { "begin": 11822, "end": 11823, "length": 1 }, { "begin": 11836, "end": 11837, "length": 1 }, { "begin": 11859, "end": 11861, "length": 2 }, { "begin": 12290, "end": 12291, "length": 1 }, { "begin": 42239, "end": 42240, "length": 1 }, { "begin": 42510, "end": 42512, "length": 2 }, { "begin": 42739, "end": 42740, "length": 1 }, { "begin": 42743, "end": 42744, "length": 1 }, { "begin": 43126, "end": 43128, "length": 2 }, { "begin": 43214, "end": 43216, "length": 2 }, { "begin": 43311, "end": 43312, "length": 1 }, { "begin": 43464, "end": 43466, "length": 2 }, { "begin": 43613, "end": 43616, "length": 3 }, { "begin": 43760, "end": 43762, "length": 2 }, { "begin": 44011, "end": 44012, "length": 1 }, { "begin": 65042, "end": 65043, "length": 1 }, { "begin": 65045, "end": 65047, "length": 2 }, { "begin": 65106, "end": 65107, "length": 1 }, { "begin": 65110, "end": 65112, "length": 2 }, { "begin": 65281, "end": 65282, "length": 1 }, { "begin": 65294, "end": 65295, "length": 1 }, { "begin": 65311, "end": 65312, "length": 1 }, { "begin": 65377, "end": 65378, "length": 1 }, { "begin": 68182, "end": 68184, "length": 2 }, { "begin": 69461, "end": 69466, "length": 5 }, { "begin": 69510, "end": 69514, "length": 4 }, { "begin": 69703, "end": 69705, "length": 2 }, { "begin": 69822, "end": 69826, "length": 4 }, { "begin": 69953, "end": 69956, "length": 3 }, { "begin": 70085, "end": 70087, "length": 2 }, { "begin": 70093, "end": 70094, "length": 1 }, { "begin": 70110, "end": 70112, "length": 2 }, { "begin": 70200, "end": 70202, "length": 2 }, { "begin": 70203, "end": 70205, "length": 2 }, { "begin": 70313, "end": 70314, "length": 1 }, { "begin": 70612, "end": 70614, "length": 2 }, { "begin": 70731, "end": 70733, "length": 2 }, { "begin": 71106, "end": 71108, "length": 2 }, { "begin": 71113, "end": 71128, "length": 15 }, { "begin": 71233, "end": 71235, "length": 2 }, { "begin": 71484, "end": 71487, "length": 3 }, { "begin": 72004, "end": 72005, "length": 1 }, { "begin": 72006, "end": 72007, "length": 1 }, { "begin": 72258, "end": 72260, "length": 2 }, { "begin": 72347, "end": 72349, "length": 2 }, { "begin": 72769, "end": 72771, "length": 2 }, { "begin": 73463, "end": 73465, "length": 2 }, { "begin": 73539, "end": 73541, "length": 2 }, { "begin": 92782, "end": 92784, "length": 2 }, { "begin": 92917, "end": 92918, "length": 1 }, { "begin": 92983, "end": 92985, "length": 2 }, { "begin": 92996, "end": 92997, "length": 1 }, { "begin": 93550, "end": 93552, "length": 2 }, { "begin": 93848, "end": 93849, "length": 1 }, { "begin": 113823, "end": 113824, "length": 1 }, { "begin": 121480, "end": 121481, "length": 1 } ] `; exports[`The generated latest Unicode js > Block/Bopomofo should match the snapshot 1`] = ` [ { "begin": 12544, "end": 12592, "length": 48 } ] `; exports[`The generated latest Unicode js > Case_Folding/S should match the snapshot 1`] = ` [ [ 7838, 223 ], [ 8072, 8064 ], [ 8073, 8065 ], [ 8074, 8066 ], [ 8075, 8067 ], [ 8076, 8068 ], [ 8077, 8069 ], [ 8078, 8070 ], [ 8079, 8071 ], [ 8088, 8080 ], [ 8089, 8081 ], [ 8090, 8082 ], [ 8091, 8083 ], [ 8092, 8084 ], [ 8093, 8085 ], [ 8094, 8086 ], [ 8095, 8087 ], [ 8104, 8096 ], [ 8105, 8097 ], [ 8106, 8098 ], [ 8107, 8099 ], [ 8108, 8100 ], [ 8109, 8101 ], [ 8110, 8102 ], [ 8111, 8103 ], [ 8124, 8115 ], [ 8140, 8131 ], [ 8147, 912 ], [ 8163, 944 ], [ 8188, 8179 ], [ 64261, 64262 ] ] `; exports[`The generated latest Unicode js > General_Category/Modifier_Letter should match the snapshot 1`] = ` [ { "begin": 688, "end": 706, "length": 18 }, { "begin": 710, "end": 722, "length": 12 }, { "begin": 736, "end": 741, "length": 5 }, { "begin": 748, "end": 749, "length": 1 }, { "begin": 750, "end": 751, "length": 1 }, { "begin": 884, "end": 885, "length": 1 }, { "begin": 890, "end": 891, "length": 1 }, { "begin": 1369, "end": 1370, "length": 1 }, { "begin": 1600, "end": 1601, "length": 1 }, { "begin": 1765, "end": 1767, "length": 2 }, { "begin": 2036, "end": 2038, "length": 2 }, { "begin": 2042, "end": 2043, "length": 1 }, { "begin": 2074, "end": 2075, "length": 1 }, { "begin": 2084, "end": 2085, "length": 1 }, { "begin": 2088, "end": 2089, "length": 1 }, { "begin": 2249, "end": 2250, "length": 1 }, { "begin": 2417, "end": 2418, "length": 1 }, { "begin": 3654, "end": 3655, "length": 1 }, { "begin": 3782, "end": 3783, "length": 1 }, { "begin": 4348, "end": 4349, "length": 1 }, { "begin": 6103, "end": 6104, "length": 1 }, { "begin": 6211, "end": 6212, "length": 1 }, { "begin": 6823, "end": 6824, "length": 1 }, { "begin": 7288, "end": 7294, "length": 6 }, { "begin": 7468, "end": 7531, "length": 63 }, { "begin": 7544, "end": 7545, "length": 1 }, { "begin": 7579, "end": 7616, "length": 37 }, { "begin": 8305, "end": 8306, "length": 1 }, { "begin": 8319, "end": 8320, "length": 1 }, { "begin": 8336, "end": 8349, "length": 13 }, { "begin": 11388, "end": 11390, "length": 2 }, { "begin": 11631, "end": 11632, "length": 1 }, { "begin": 11823, "end": 11824, "length": 1 }, { "begin": 12293, "end": 12294, "length": 1 }, { "begin": 12337, "end": 12342, "length": 5 }, { "begin": 12347, "end": 12348, "length": 1 }, { "begin": 12445, "end": 12447, "length": 2 }, { "begin": 12540, "end": 12543, "length": 3 }, { "begin": 40981, "end": 40982, "length": 1 }, { "begin": 42232, "end": 42238, "length": 6 }, { "begin": 42508, "end": 42509, "length": 1 }, { "begin": 42623, "end": 42624, "length": 1 }, { "begin": 42652, "end": 42654, "length": 2 }, { "begin": 42775, "end": 42784, "length": 9 }, { "begin": 42864, "end": 42865, "length": 1 }, { "begin": 42888, "end": 42889, "length": 1 }, { "begin": 42993, "end": 42997, "length": 4 }, { "begin": 43000, "end": 43002, "length": 2 }, { "begin": 43471, "end": 43472, "length": 1 }, { "begin": 43494, "end": 43495, "length": 1 }, { "begin": 43632, "end": 43633, "length": 1 }, { "begin": 43741, "end": 43742, "length": 1 }, { "begin": 43763, "end": 43765, "length": 2 }, { "begin": 43868, "end": 43872, "length": 4 }, { "begin": 43881, "end": 43882, "length": 1 }, { "begin": 65392, "end": 65393, "length": 1 }, { "begin": 65438, "end": 65440, "length": 2 }, { "begin": 67456, "end": 67462, "length": 6 }, { "begin": 67463, "end": 67505, "length": 42 }, { "begin": 67506, "end": 67515, "length": 9 }, { "begin": 68942, "end": 68943, "length": 1 }, { "begin": 68975, "end": 68976, "length": 1 }, { "begin": 69317, "end": 69318, "length": 1 }, { "begin": 73177, "end": 73178, "length": 1 }, { "begin": 92992, "end": 92996, "length": 4 }, { "begin": 93504, "end": 93507, "length": 3 }, { "begin": 93547, "end": 93549, "length": 2 }, { "begin": 94099, "end": 94112, "length": 13 }, { "begin": 94176, "end": 94178, "length": 2 }, { "begin": 94179, "end": 94180, "length": 1 }, { "begin": 94194, "end": 94196, "length": 2 }, { "begin": 110576, "end": 110580, "length": 4 }, { "begin": 110581, "end": 110588, "length": 7 }, { "begin": 110589, "end": 110591, "length": 2 }, { "begin": 122928, "end": 122990, "length": 62 }, { "begin": 123191, "end": 123198, "length": 7 }, { "begin": 124139, "end": 124140, "length": 1 }, { "begin": 124671, "end": 124672, "length": 1 }, { "begin": 125259, "end": 125260, "length": 1 } ] `; exports[`The generated latest Unicode js > Script/Canadian_Aboriginal should match the snapshot 1`] = ` [ { "begin": 5120, "end": 5760, "length": 640 }, { "begin": 6320, "end": 6390, "length": 70 }, { "begin": 72368, "end": 72384, "length": 16 } ] `; node-unicode-data-main/tests/quick.js0000644000175000017500000000035415106571514016527 0ustar yaddyadd'use strict'; const resources = require('../data/resources.js'); const generateData = require('../index.js'); // Generate the data for the newest available Unicode version const newest = resources.pop().version; generateData(newest); node-unicode-data-main/tests/tests.js0000644000175000017500000000550415106571514016557 0ustar yaddyadd'use strict'; const resources = require('../data/resources.js'); const oldest = resources[0].version; const newest = resources.pop().version; if (!process.env.CI) { const generateData = require('../index.js'); // Generate the data for the oldest and newest available Unicode version generateData(oldest); generateData(newest); } const { suite, test } = require("node:test"); suite(`The generated Unicode ${oldest} js`, () => { test("General_Category/Modifier_Letter should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + oldest + '/General_Category/Modifier_Letter/ranges.js') ); }); test("Binary_Property/ASCII should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + oldest + '/Binary_Property/ASCII/ranges.js') ); }); test("Bidi_Class/Right_To_Left should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + oldest + '/Bidi_Class/Right_To_Left/ranges.js') ); }); }); suite(`The generated latest Unicode js`, () => { test("Block/Bopomofo should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + newest + '/Block/Bopomofo/ranges.js') ); }); test("General_Category/Modifier_Letter should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + newest + '/General_Category/Modifier_Letter/ranges.js') ); }); test("Binary_Property/Sentence_Terminal should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + newest + '/Binary_Property/Sentence_Terminal/ranges.js') ); }); test("Binary_Property/Hex_Digit should match the snapshot", (t) => { t.assert.snapshot( // Note: `Hex_Digit` is a derived core property. require('../output/unicode-' + newest + '/Binary_Property/Hex_Digit/ranges.js') ); }); test("Bidi_Class/Pop_Directional_Isolate should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + newest + '/Bidi_Class/Pop_Directional_Isolate/ranges.js') ); }); test("Script/Canadian_Aboriginal should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + newest + '/Script/Canadian_Aboriginal/ranges.js') ) }); test("Bidi_Mirroring_Glyph should match the snapshot", (t) => { const map = require('../output/unicode-' + newest + '/Bidi_Mirroring_Glyph/index.js'); const mapEntries = [...map.entries()].sort((a, b) => a[0] - b[0]); t.assert.snapshot(mapEntries); }); test("Bidi_Paired_Bracket_Type/Open should match the snapshot", (t) => { t.assert.snapshot( require('../output/unicode-' + newest + '/Bidi_Paired_Bracket_Type/Open/ranges.js') ); }); test("Case_Folding/S should match the snapshot", (t) => { const map = require('../output/unicode-' + newest + '/Case_Folding/S/code-points.js'); t.assert.snapshot( [...map.entries()] ); }); }); node-unicode-data-main/package.json0000644000175000017500000000303015106571514016173 0ustar yaddyadd{ "name": "unicode-data", "version": "0.1.0", "description": "JavaScript-compatible Unicode data generator. Arrays of code points, arrays of symbols, and regular expressions for every Unicode version’s categories, scripts, blocks, and properties.", "homepage": "https://mths.be/node-unicode-data", "main": "index.js", "keywords": [ "unicode", "code points", "regex", "regexp", "data", "generator", "tool" ], "license": "MIT", "author": { "name": "Mathias Bynens", "url": "https://mathiasbynens.be/" }, "repository": { "type": "git", "url": "git+https://github.com/node-unicode/node-unicode-data.git" }, "bugs": "https://github.com/node-unicode/node-unicode-data/issues", "files": [ "LICENSE-MIT.txt", "index.js", "data/", "scripts/", "templates/", "tests/" ], "scripts": { "download": "node scripts/download.js", "clean": "rm -rf -- output/*/*!(.git)", "build": "node scripts/generate-data.js", "test-update-snapshot": "node --test --experimental-test-snapshots --test-update-snapshots tests/tests.js", "test": "node --test --experimental-test-snapshots tests/tests.js", "t": "node --experimental-test-snapshots tests/quick.js", "cover": "NODE_V8_COVERAGE=coverage node --experimental-test-coverage --experimental-test-snapshots tests/tests.js" }, "devDependencies": { "jsesc": "^3.0.2", "lodash.template": "^4.5.0", "regenerate": "^1.4.2", "unicode-loose-match": "^2.8.0", "unicode-property-aliases": "^2.1.0", "unicode-property-value-aliases": "^3.9.0", "when": "^3.7.8" } } node-unicode-data-main/data/0000755000175000017500000000000015176435616014633 5ustar yaddyaddnode-unicode-data-main/data/17.0.0-derived-general-category.txt0000644000175000017500000103601215106571514022757 0ustar yaddyadd# DerivedGeneralCategory-17.0.0.txt # Date: 2025-07-24, 00:12:50 GMT # © 2025 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use and license, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see https://www.unicode.org/reports/tr44/ # ================================================ # Property: General_Category # ================================================ # General_Category=Unassigned 0378..0379 ; Cn # [2] .. 0380..0383 ; Cn # [4] .. 038B ; Cn # 038D ; Cn # 03A2 ; Cn # 0530 ; Cn # 0557..0558 ; Cn # [2] .. 058B..058C ; Cn # [2] .. 0590 ; Cn # 05C8..05CF ; Cn # [8] .. 05EB..05EE ; Cn # [4] .. 05F5..05FF ; Cn # [11] .. 070E ; Cn # 074B..074C ; Cn # [2] .. 07B2..07BF ; Cn # [14] .. 07FB..07FC ; Cn # [2] .. 082E..082F ; Cn # [2] .. 083F ; Cn # 085C..085D ; Cn # [2] .. 085F ; Cn # 086B..086F ; Cn # [5] .. 0892..0896 ; Cn # [5] .. 0984 ; Cn # 098D..098E ; Cn # [2] .. 0991..0992 ; Cn # [2] .. 09A9 ; Cn # 09B1 ; Cn # 09B3..09B5 ; Cn # [3] .. 09BA..09BB ; Cn # [2] .. 09C5..09C6 ; Cn # [2] .. 09C9..09CA ; Cn # [2] .. 09CF..09D6 ; Cn # [8] .. 09D8..09DB ; Cn # [4] .. 09DE ; Cn # 09E4..09E5 ; Cn # [2] .. 09FF..0A00 ; Cn # [2] .. 0A04 ; Cn # 0A0B..0A0E ; Cn # [4] .. 0A11..0A12 ; Cn # [2] .. 0A29 ; Cn # 0A31 ; Cn # 0A34 ; Cn # 0A37 ; Cn # 0A3A..0A3B ; Cn # [2] .. 0A3D ; Cn # 0A43..0A46 ; Cn # [4] .. 0A49..0A4A ; Cn # [2] .. 0A4E..0A50 ; Cn # [3] .. 0A52..0A58 ; Cn # [7] .. 0A5D ; Cn # 0A5F..0A65 ; Cn # [7] .. 0A77..0A80 ; Cn # [10] .. 0A84 ; Cn # 0A8E ; Cn # 0A92 ; Cn # 0AA9 ; Cn # 0AB1 ; Cn # 0AB4 ; Cn # 0ABA..0ABB ; Cn # [2] .. 0AC6 ; Cn # 0ACA ; Cn # 0ACE..0ACF ; Cn # [2] .. 0AD1..0ADF ; Cn # [15] .. 0AE4..0AE5 ; Cn # [2] .. 0AF2..0AF8 ; Cn # [7] .. 0B00 ; Cn # 0B04 ; Cn # 0B0D..0B0E ; Cn # [2] .. 0B11..0B12 ; Cn # [2] .. 0B29 ; Cn # 0B31 ; Cn # 0B34 ; Cn # 0B3A..0B3B ; Cn # [2] .. 0B45..0B46 ; Cn # [2] .. 0B49..0B4A ; Cn # [2] .. 0B4E..0B54 ; Cn # [7] .. 0B58..0B5B ; Cn # [4] .. 0B5E ; Cn # 0B64..0B65 ; Cn # [2] .. 0B78..0B81 ; Cn # [10] .. 0B84 ; Cn # 0B8B..0B8D ; Cn # [3] .. 0B91 ; Cn # 0B96..0B98 ; Cn # [3] .. 0B9B ; Cn # 0B9D ; Cn # 0BA0..0BA2 ; Cn # [3] .. 0BA5..0BA7 ; Cn # [3] .. 0BAB..0BAD ; Cn # [3] .. 0BBA..0BBD ; Cn # [4] .. 0BC3..0BC5 ; Cn # [3] .. 0BC9 ; Cn # 0BCE..0BCF ; Cn # [2] .. 0BD1..0BD6 ; Cn # [6] .. 0BD8..0BE5 ; Cn # [14] .. 0BFB..0BFF ; Cn # [5] .. 0C0D ; Cn # 0C11 ; Cn # 0C29 ; Cn # 0C3A..0C3B ; Cn # [2] .. 0C45 ; Cn # 0C49 ; Cn # 0C4E..0C54 ; Cn # [7] .. 0C57 ; Cn # 0C5B ; Cn # 0C5E..0C5F ; Cn # [2] .. 0C64..0C65 ; Cn # [2] .. 0C70..0C76 ; Cn # [7] .. 0C8D ; Cn # 0C91 ; Cn # 0CA9 ; Cn # 0CB4 ; Cn # 0CBA..0CBB ; Cn # [2] .. 0CC5 ; Cn # 0CC9 ; Cn # 0CCE..0CD4 ; Cn # [7] .. 0CD7..0CDB ; Cn # [5] .. 0CDF ; Cn # 0CE4..0CE5 ; Cn # [2] .. 0CF0 ; Cn # 0CF4..0CFF ; Cn # [12] .. 0D0D ; Cn # 0D11 ; Cn # 0D45 ; Cn # 0D49 ; Cn # 0D50..0D53 ; Cn # [4] .. 0D64..0D65 ; Cn # [2] .. 0D80 ; Cn # 0D84 ; Cn # 0D97..0D99 ; Cn # [3] .. 0DB2 ; Cn # 0DBC ; Cn # 0DBE..0DBF ; Cn # [2] .. 0DC7..0DC9 ; Cn # [3] .. 0DCB..0DCE ; Cn # [4] .. 0DD5 ; Cn # 0DD7 ; Cn # 0DE0..0DE5 ; Cn # [6] .. 0DF0..0DF1 ; Cn # [2] .. 0DF5..0E00 ; Cn # [12] .. 0E3B..0E3E ; Cn # [4] .. 0E5C..0E80 ; Cn # [37] .. 0E83 ; Cn # 0E85 ; Cn # 0E8B ; Cn # 0EA4 ; Cn # 0EA6 ; Cn # 0EBE..0EBF ; Cn # [2] .. 0EC5 ; Cn # 0EC7 ; Cn # 0ECF ; Cn # 0EDA..0EDB ; Cn # [2] .. 0EE0..0EFF ; Cn # [32] .. 0F48 ; Cn # 0F6D..0F70 ; Cn # [4] .. 0F98 ; Cn # 0FBD ; Cn # 0FCD ; Cn # 0FDB..0FFF ; Cn # [37] .. 10C6 ; Cn # 10C8..10CC ; Cn # [5] .. 10CE..10CF ; Cn # [2] .. 1249 ; Cn # 124E..124F ; Cn # [2] .. 1257 ; Cn # 1259 ; Cn # 125E..125F ; Cn # [2] .. 1289 ; Cn # 128E..128F ; Cn # [2] .. 12B1 ; Cn # 12B6..12B7 ; Cn # [2] .. 12BF ; Cn # 12C1 ; Cn # 12C6..12C7 ; Cn # [2] .. 12D7 ; Cn # 1311 ; Cn # 1316..1317 ; Cn # [2] .. 135B..135C ; Cn # [2] .. 137D..137F ; Cn # [3] .. 139A..139F ; Cn # [6] .. 13F6..13F7 ; Cn # [2] .. 13FE..13FF ; Cn # [2] .. 169D..169F ; Cn # [3] .. 16F9..16FF ; Cn # [7] .. 1716..171E ; Cn # [9] .. 1737..173F ; Cn # [9] .. 1754..175F ; Cn # [12] .. 176D ; Cn # 1771 ; Cn # 1774..177F ; Cn # [12] .. 17DE..17DF ; Cn # [2] .. 17EA..17EF ; Cn # [6] .. 17FA..17FF ; Cn # [6] .. 181A..181F ; Cn # [6] .. 1879..187F ; Cn # [7] .. 18AB..18AF ; Cn # [5] .. 18F6..18FF ; Cn # [10] .. 191F ; Cn # 192C..192F ; Cn # [4] .. 193C..193F ; Cn # [4] .. 1941..1943 ; Cn # [3] .. 196E..196F ; Cn # [2] .. 1975..197F ; Cn # [11] .. 19AC..19AF ; Cn # [4] .. 19CA..19CF ; Cn # [6] .. 19DB..19DD ; Cn # [3] .. 1A1C..1A1D ; Cn # [2] .. 1A5F ; Cn # 1A7D..1A7E ; Cn # [2] .. 1A8A..1A8F ; Cn # [6] .. 1A9A..1A9F ; Cn # [6] .. 1AAE..1AAF ; Cn # [2] .. 1ADE..1ADF ; Cn # [2] .. 1AEC..1AFF ; Cn # [20] .. 1B4D ; Cn # 1BF4..1BFB ; Cn # [8] .. 1C38..1C3A ; Cn # [3] .. 1C4A..1C4C ; Cn # [3] .. 1C8B..1C8F ; Cn # [5] .. 1CBB..1CBC ; Cn # [2] .. 1CC8..1CCF ; Cn # [8] .. 1CFB..1CFF ; Cn # [5] .. 1F16..1F17 ; Cn # [2] .. 1F1E..1F1F ; Cn # [2] .. 1F46..1F47 ; Cn # [2] .. 1F4E..1F4F ; Cn # [2] .. 1F58 ; Cn # 1F5A ; Cn # 1F5C ; Cn # 1F5E ; Cn # 1F7E..1F7F ; Cn # [2] .. 1FB5 ; Cn # 1FC5 ; Cn # 1FD4..1FD5 ; Cn # [2] .. 1FDC ; Cn # 1FF0..1FF1 ; Cn # [2] .. 1FF5 ; Cn # 1FFF ; Cn # 2065 ; Cn # 2072..2073 ; Cn # [2] .. 208F ; Cn # 209D..209F ; Cn # [3] .. 20C2..20CF ; Cn # [14] .. 20F1..20FF ; Cn # [15] .. 218C..218F ; Cn # [4] .. 242A..243F ; Cn # [22] .. 244B..245F ; Cn # [21] .. 2B74..2B75 ; Cn # [2] .. 2CF4..2CF8 ; Cn # [5] .. 2D26 ; Cn # 2D28..2D2C ; Cn # [5] .. 2D2E..2D2F ; Cn # [2] .. 2D68..2D6E ; Cn # [7] .. 2D71..2D7E ; Cn # [14] .. 2D97..2D9F ; Cn # [9] .. 2DA7 ; Cn # 2DAF ; Cn # 2DB7 ; Cn # 2DBF ; Cn # 2DC7 ; Cn # 2DCF ; Cn # 2DD7 ; Cn # 2DDF ; Cn # 2E5E..2E7F ; Cn # [34] .. 2E9A ; Cn # 2EF4..2EFF ; Cn # [12] .. 2FD6..2FEF ; Cn # [26] .. 3040 ; Cn # 3097..3098 ; Cn # [2] .. 3100..3104 ; Cn # [5] .. 3130 ; Cn # 318F ; Cn # 31E6..31EE ; Cn # [9] .. 321F ; Cn # A48D..A48F ; Cn # [3] .. A4C7..A4CF ; Cn # [9] .. A62C..A63F ; Cn # [20] .. A6F8..A6FF ; Cn # [8] .. A7DD..A7F0 ; Cn # [20] .. A82D..A82F ; Cn # [3] .. A83A..A83F ; Cn # [6] .. A878..A87F ; Cn # [8] .. A8C6..A8CD ; Cn # [8] .. A8DA..A8DF ; Cn # [6] .. A954..A95E ; Cn # [11] .. A97D..A97F ; Cn # [3] .. A9CE ; Cn # A9DA..A9DD ; Cn # [4] .. A9FF ; Cn # AA37..AA3F ; Cn # [9] .. AA4E..AA4F ; Cn # [2] .. AA5A..AA5B ; Cn # [2] .. AAC3..AADA ; Cn # [24] .. AAF7..AB00 ; Cn # [10] .. AB07..AB08 ; Cn # [2] .. AB0F..AB10 ; Cn # [2] .. AB17..AB1F ; Cn # [9] .. AB27 ; Cn # AB2F ; Cn # AB6C..AB6F ; Cn # [4] .. ABEE..ABEF ; Cn # [2] .. ABFA..ABFF ; Cn # [6] .. D7A4..D7AF ; Cn # [12] .. D7C7..D7CA ; Cn # [4] .. D7FC..D7FF ; Cn # [4] .. FA6E..FA6F ; Cn # [2] .. FADA..FAFF ; Cn # [38] .. FB07..FB12 ; Cn # [12] .. FB18..FB1C ; Cn # [5] .. FB37 ; Cn # FB3D ; Cn # FB3F ; Cn # FB42 ; Cn # FB45 ; Cn # FDD0..FDEF ; Cn # [32] .. FE1A..FE1F ; Cn # [6] .. FE53 ; Cn # FE67 ; Cn # FE6C..FE6F ; Cn # [4] .. FE75 ; Cn # FEFD..FEFE ; Cn # [2] .. FF00 ; Cn # FFBF..FFC1 ; Cn # [3] .. FFC8..FFC9 ; Cn # [2] .. FFD0..FFD1 ; Cn # [2] .. FFD8..FFD9 ; Cn # [2] .. FFDD..FFDF ; Cn # [3] .. FFE7 ; Cn # FFEF..FFF8 ; Cn # [10] .. FFFE..FFFF ; Cn # [2] .. 1000C ; Cn # 10027 ; Cn # 1003B ; Cn # 1003E ; Cn # 1004E..1004F ; Cn # [2] .. 1005E..1007F ; Cn # [34] .. 100FB..100FF ; Cn # [5] .. 10103..10106 ; Cn # [4] .. 10134..10136 ; Cn # [3] .. 1018F ; Cn # 1019D..1019F ; Cn # [3] .. 101A1..101CF ; Cn # [47] .. 101FE..1027F ; Cn # [130] .. 1029D..1029F ; Cn # [3] .. 102D1..102DF ; Cn # [15] .. 102FC..102FF ; Cn # [4] .. 10324..1032C ; Cn # [9] .. 1034B..1034F ; Cn # [5] .. 1037B..1037F ; Cn # [5] .. 1039E ; Cn # 103C4..103C7 ; Cn # [4] .. 103D6..103FF ; Cn # [42] .. 1049E..1049F ; Cn # [2] .. 104AA..104AF ; Cn # [6] .. 104D4..104D7 ; Cn # [4] .. 104FC..104FF ; Cn # [4] .. 10528..1052F ; Cn # [8] .. 10564..1056E ; Cn # [11] .. 1057B ; Cn # 1058B ; Cn # 10593 ; Cn # 10596 ; Cn # 105A2 ; Cn # 105B2 ; Cn # 105BA ; Cn # 105BD..105BF ; Cn # [3] .. 105F4..105FF ; Cn # [12] .. 10737..1073F ; Cn # [9] .. 10756..1075F ; Cn # [10] .. 10768..1077F ; Cn # [24] .. 10786 ; Cn # 107B1 ; Cn # 107BB..107FF ; Cn # [69] .. 10806..10807 ; Cn # [2] .. 10809 ; Cn # 10836 ; Cn # 10839..1083B ; Cn # [3] .. 1083D..1083E ; Cn # [2] .. 10856 ; Cn # 1089F..108A6 ; Cn # [8] .. 108B0..108DF ; Cn # [48] .. 108F3 ; Cn # 108F6..108FA ; Cn # [5] .. 1091C..1091E ; Cn # [3] .. 1093A..1093E ; Cn # [5] .. 1095A..1097F ; Cn # [38] .. 109B8..109BB ; Cn # [4] .. 109D0..109D1 ; Cn # [2] .. 10A04 ; Cn # 10A07..10A0B ; Cn # [5] .. 10A14 ; Cn # 10A18 ; Cn # 10A36..10A37 ; Cn # [2] .. 10A3B..10A3E ; Cn # [4] .. 10A49..10A4F ; Cn # [7] .. 10A59..10A5F ; Cn # [7] .. 10AA0..10ABF ; Cn # [32] .. 10AE7..10AEA ; Cn # [4] .. 10AF7..10AFF ; Cn # [9] .. 10B36..10B38 ; Cn # [3] .. 10B56..10B57 ; Cn # [2] .. 10B73..10B77 ; Cn # [5] .. 10B92..10B98 ; Cn # [7] .. 10B9D..10BA8 ; Cn # [12] .. 10BB0..10BFF ; Cn # [80] .. 10C49..10C7F ; Cn # [55] .. 10CB3..10CBF ; Cn # [13] .. 10CF3..10CF9 ; Cn # [7] .. 10D28..10D2F ; Cn # [8] .. 10D3A..10D3F ; Cn # [6] .. 10D66..10D68 ; Cn # [3] .. 10D86..10D8D ; Cn # [8] .. 10D90..10E5F ; Cn # [208] .. 10E7F ; Cn # 10EAA ; Cn # 10EAE..10EAF ; Cn # [2] .. 10EB2..10EC1 ; Cn # [16] .. 10EC8..10ECF ; Cn # [8] .. 10ED9..10EF9 ; Cn # [33] .. 10F28..10F2F ; Cn # [8] .. 10F5A..10F6F ; Cn # [22] .. 10F8A..10FAF ; Cn # [38] .. 10FCC..10FDF ; Cn # [20] .. 10FF7..10FFF ; Cn # [9] .. 1104E..11051 ; Cn # [4] .. 11076..1107E ; Cn # [9] .. 110C3..110CC ; Cn # [10] .. 110CE..110CF ; Cn # [2] .. 110E9..110EF ; Cn # [7] .. 110FA..110FF ; Cn # [6] .. 11135 ; Cn # 11148..1114F ; Cn # [8] .. 11177..1117F ; Cn # [9] .. 111E0 ; Cn # 111F5..111FF ; Cn # [11] .. 11212 ; Cn # 11242..1127F ; Cn # [62] .. 11287 ; Cn # 11289 ; Cn # 1128E ; Cn # 1129E ; Cn # 112AA..112AF ; Cn # [6] .. 112EB..112EF ; Cn # [5] .. 112FA..112FF ; Cn # [6] .. 11304 ; Cn # 1130D..1130E ; Cn # [2] .. 11311..11312 ; Cn # [2] .. 11329 ; Cn # 11331 ; Cn # 11334 ; Cn # 1133A ; Cn # 11345..11346 ; Cn # [2] .. 11349..1134A ; Cn # [2] .. 1134E..1134F ; Cn # [2] .. 11351..11356 ; Cn # [6] .. 11358..1135C ; Cn # [5] .. 11364..11365 ; Cn # [2] .. 1136D..1136F ; Cn # [3] .. 11375..1137F ; Cn # [11] .. 1138A ; Cn # 1138C..1138D ; Cn # [2] .. 1138F ; Cn # 113B6 ; Cn # 113C1 ; Cn # 113C3..113C4 ; Cn # [2] .. 113C6 ; Cn # 113CB ; Cn # 113D6 ; Cn # 113D9..113E0 ; Cn # [8] .. 113E3..113FF ; Cn # [29] .. 1145C ; Cn # 11462..1147F ; Cn # [30] .. 114C8..114CF ; Cn # [8] .. 114DA..1157F ; Cn # [166] .. 115B6..115B7 ; Cn # [2] .. 115DE..115FF ; Cn # [34] .. 11645..1164F ; Cn # [11] .. 1165A..1165F ; Cn # [6] .. 1166D..1167F ; Cn # [19] .. 116BA..116BF ; Cn # [6] .. 116CA..116CF ; Cn # [6] .. 116E4..116FF ; Cn # [28] .. 1171B..1171C ; Cn # [2] .. 1172C..1172F ; Cn # [4] .. 11747..117FF ; Cn # [185] .. 1183C..1189F ; Cn # [100] .. 118F3..118FE ; Cn # [12] .. 11907..11908 ; Cn # [2] .. 1190A..1190B ; Cn # [2] .. 11914 ; Cn # 11917 ; Cn # 11936 ; Cn # 11939..1193A ; Cn # [2] .. 11947..1194F ; Cn # [9] .. 1195A..1199F ; Cn # [70] .. 119A8..119A9 ; Cn # [2] .. 119D8..119D9 ; Cn # [2] .. 119E5..119FF ; Cn # [27] .. 11A48..11A4F ; Cn # [8] .. 11AA3..11AAF ; Cn # [13] .. 11AF9..11AFF ; Cn # [7] .. 11B0A..11B5F ; Cn # [86] .. 11B68..11BBF ; Cn # [88] .. 11BE2..11BEF ; Cn # [14] .. 11BFA..11BFF ; Cn # [6] .. 11C09 ; Cn # 11C37 ; Cn # 11C46..11C4F ; Cn # [10] .. 11C6D..11C6F ; Cn # [3] .. 11C90..11C91 ; Cn # [2] .. 11CA8 ; Cn # 11CB7..11CFF ; Cn # [73] .. 11D07 ; Cn # 11D0A ; Cn # 11D37..11D39 ; Cn # [3] .. 11D3B ; Cn # 11D3E ; Cn # 11D48..11D4F ; Cn # [8] .. 11D5A..11D5F ; Cn # [6] .. 11D66 ; Cn # 11D69 ; Cn # 11D8F ; Cn # 11D92 ; Cn # 11D99..11D9F ; Cn # [7] .. 11DAA..11DAF ; Cn # [6] .. 11DDC..11DDF ; Cn # [4] .. 11DEA..11EDF ; Cn # [246] .. 11EF9..11EFF ; Cn # [7] .. 11F11 ; Cn # 11F3B..11F3D ; Cn # [3] .. 11F5B..11FAF ; Cn # [85] .. 11FB1..11FBF ; Cn # [15] .. 11FF2..11FFE ; Cn # [13] .. 1239A..123FF ; Cn # [102] .. 1246F ; Cn # 12475..1247F ; Cn # [11] .. 12544..12F8F ; Cn # [2636] .. 12FF3..12FFF ; Cn # [13] .. 13456..1345F ; Cn # [10] .. 143FB..143FF ; Cn # [5] .. 14647..160FF ; Cn # [6841] .. 1613A..167FF ; Cn # [1734] .. 16A39..16A3F ; Cn # [7] .. 16A5F ; Cn # 16A6A..16A6D ; Cn # [4] .. 16ABF ; Cn # 16ACA..16ACF ; Cn # [6] .. 16AEE..16AEF ; Cn # [2] .. 16AF6..16AFF ; Cn # [10] .. 16B46..16B4F ; Cn # [10] .. 16B5A ; Cn # 16B62 ; Cn # 16B78..16B7C ; Cn # [5] .. 16B90..16D3F ; Cn # [432] .. 16D7A..16E3F ; Cn # [198] .. 16E9B..16E9F ; Cn # [5] .. 16EB9..16EBA ; Cn # [2] .. 16ED4..16EFF ; Cn # [44] .. 16F4B..16F4E ; Cn # [4] .. 16F88..16F8E ; Cn # [7] .. 16FA0..16FDF ; Cn # [64] .. 16FE5..16FEF ; Cn # [11] .. 16FF7..16FFF ; Cn # [9] .. 18CD6..18CFE ; Cn # [41] .. 18D1F..18D7F ; Cn # [97] .. 18DF3..1AFEF ; Cn # [8701] .. 1AFF4 ; Cn # 1AFFC ; Cn # 1AFFF ; Cn # 1B123..1B131 ; Cn # [15] .. 1B133..1B14F ; Cn # [29] .. 1B153..1B154 ; Cn # [2] .. 1B156..1B163 ; Cn # [14] .. 1B168..1B16F ; Cn # [8] .. 1B2FC..1BBFF ; Cn # [2308] .. 1BC6B..1BC6F ; Cn # [5] .. 1BC7D..1BC7F ; Cn # [3] .. 1BC89..1BC8F ; Cn # [7] .. 1BC9A..1BC9B ; Cn # [2] .. 1BCA4..1CBFF ; Cn # [3932] .. 1CCFD..1CCFF ; Cn # [3] .. 1CEB4..1CEB9 ; Cn # [6] .. 1CED1..1CEDF ; Cn # [15] .. 1CEF1..1CEFF ; Cn # [15] .. 1CF2E..1CF2F ; Cn # [2] .. 1CF47..1CF4F ; Cn # [9] .. 1CFC4..1CFFF ; Cn # [60] .. 1D0F6..1D0FF ; Cn # [10] .. 1D127..1D128 ; Cn # [2] .. 1D1EB..1D1FF ; Cn # [21] .. 1D246..1D2BF ; Cn # [122] .. 1D2D4..1D2DF ; Cn # [12] .. 1D2F4..1D2FF ; Cn # [12] .. 1D357..1D35F ; Cn # [9] .. 1D379..1D3FF ; Cn # [135] .. 1D455 ; Cn # 1D49D ; Cn # 1D4A0..1D4A1 ; Cn # [2] .. 1D4A3..1D4A4 ; Cn # [2] .. 1D4A7..1D4A8 ; Cn # [2] .. 1D4AD ; Cn # 1D4BA ; Cn # 1D4BC ; Cn # 1D4C4 ; Cn # 1D506 ; Cn # 1D50B..1D50C ; Cn # [2] .. 1D515 ; Cn # 1D51D ; Cn # 1D53A ; Cn # 1D53F ; Cn # 1D545 ; Cn # 1D547..1D549 ; Cn # [3] .. 1D551 ; Cn # 1D6A6..1D6A7 ; Cn # [2] .. 1D7CC..1D7CD ; Cn # [2] .. 1DA8C..1DA9A ; Cn # [15] .. 1DAA0 ; Cn # 1DAB0..1DEFF ; Cn # [1104] .. 1DF1F..1DF24 ; Cn # [6] .. 1DF2B..1DFFF ; Cn # [213] .. 1E007 ; Cn # 1E019..1E01A ; Cn # [2] .. 1E022 ; Cn # 1E025 ; Cn # 1E02B..1E02F ; Cn # [5] .. 1E06E..1E08E ; Cn # [33] .. 1E090..1E0FF ; Cn # [112] .. 1E12D..1E12F ; Cn # [3] .. 1E13E..1E13F ; Cn # [2] .. 1E14A..1E14D ; Cn # [4] .. 1E150..1E28F ; Cn # [320] .. 1E2AF..1E2BF ; Cn # [17] .. 1E2FA..1E2FE ; Cn # [5] .. 1E300..1E4CF ; Cn # [464] .. 1E4FA..1E5CF ; Cn # [214] .. 1E5FB..1E5FE ; Cn # [4] .. 1E600..1E6BF ; Cn # [192] .. 1E6DF ; Cn # 1E6F6..1E6FD ; Cn # [8] .. 1E700..1E7DF ; Cn # [224] .. 1E7E7 ; Cn # 1E7EC ; Cn # 1E7EF ; Cn # 1E7FF ; Cn # 1E8C5..1E8C6 ; Cn # [2] .. 1E8D7..1E8FF ; Cn # [41] .. 1E94C..1E94F ; Cn # [4] .. 1E95A..1E95D ; Cn # [4] .. 1E960..1EC70 ; Cn # [785] .. 1ECB5..1ED00 ; Cn # [76] .. 1ED3E..1EDFF ; Cn # [194] .. 1EE04 ; Cn # 1EE20 ; Cn # 1EE23 ; Cn # 1EE25..1EE26 ; Cn # [2] .. 1EE28 ; Cn # 1EE33 ; Cn # 1EE38 ; Cn # 1EE3A ; Cn # 1EE3C..1EE41 ; Cn # [6] .. 1EE43..1EE46 ; Cn # [4] .. 1EE48 ; Cn # 1EE4A ; Cn # 1EE4C ; Cn # 1EE50 ; Cn # 1EE53 ; Cn # 1EE55..1EE56 ; Cn # [2] .. 1EE58 ; Cn # 1EE5A ; Cn # 1EE5C ; Cn # 1EE5E ; Cn # 1EE60 ; Cn # 1EE63 ; Cn # 1EE65..1EE66 ; Cn # [2] .. 1EE6B ; Cn # 1EE73 ; Cn # 1EE78 ; Cn # 1EE7D ; Cn # 1EE7F ; Cn # 1EE8A ; Cn # 1EE9C..1EEA0 ; Cn # [5] .. 1EEA4 ; Cn # 1EEAA ; Cn # 1EEBC..1EEEF ; Cn # [52] .. 1EEF2..1EFFF ; Cn # [270] .. 1F02C..1F02F ; Cn # [4] .. 1F094..1F09F ; Cn # [12] .. 1F0AF..1F0B0 ; Cn # [2] .. 1F0C0 ; Cn # 1F0D0 ; Cn # 1F0F6..1F0FF ; Cn # [10] .. 1F1AE..1F1E5 ; Cn # [56] .. 1F203..1F20F ; Cn # [13] .. 1F23C..1F23F ; Cn # [4] .. 1F249..1F24F ; Cn # [7] .. 1F252..1F25F ; Cn # [14] .. 1F266..1F2FF ; Cn # [154] .. 1F6D9..1F6DB ; Cn # [3] .. 1F6ED..1F6EF ; Cn # [3] .. 1F6FD..1F6FF ; Cn # [3] .. 1F7DA..1F7DF ; Cn # [6] .. 1F7EC..1F7EF ; Cn # [4] .. 1F7F1..1F7FF ; Cn # [15] .. 1F80C..1F80F ; Cn # [4] .. 1F848..1F84F ; Cn # [8] .. 1F85A..1F85F ; Cn # [6] .. 1F888..1F88F ; Cn # [8] .. 1F8AE..1F8AF ; Cn # [2] .. 1F8BC..1F8BF ; Cn # [4] .. 1F8C2..1F8CF ; Cn # [14] .. 1F8D9..1F8FF ; Cn # [39] .. 1FA58..1FA5F ; Cn # [8] .. 1FA6E..1FA6F ; Cn # [2] .. 1FA7D..1FA7F ; Cn # [3] .. 1FA8B..1FA8D ; Cn # [3] .. 1FAC7 ; Cn # 1FAC9..1FACC ; Cn # [4] .. 1FADD..1FADE ; Cn # [2] .. 1FAEB..1FAEE ; Cn # [4] .. 1FAF9..1FAFF ; Cn # [7] .. 1FB93 ; Cn # 1FBFB..1FFFF ; Cn # [1029] .. 2A6E0..2A6FF ; Cn # [32] .. 2B81E..2B81F ; Cn # [2] .. 2CEAE..2CEAF ; Cn # [2] .. 2EBE1..2EBEF ; Cn # [15] .. 2EE5E..2F7FF ; Cn # [2466] .. 2FA1E..2FFFF ; Cn # [1506] .. 3134B..3134F ; Cn # [5] .. 3347A..E0000 ; Cn # [707463] .. E0002..E001F ; Cn # [30] .. E0080..E00FF ; Cn # [128] .. E01F0..EFFFF ; Cn # [65040] .. FFFFE..FFFFF ; Cn # [2] .. 10FFFE..10FFFF; Cn # [2] .. # Total code points: 814730 # ================================================ # General_Category=Uppercase_Letter 0041..005A ; Lu # [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 00C0..00D6 ; Lu # [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00DE ; Lu # [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN 0100 ; Lu # LATIN CAPITAL LETTER A WITH MACRON 0102 ; Lu # LATIN CAPITAL LETTER A WITH BREVE 0104 ; Lu # LATIN CAPITAL LETTER A WITH OGONEK 0106 ; Lu # LATIN CAPITAL LETTER C WITH ACUTE 0108 ; Lu # LATIN CAPITAL LETTER C WITH CIRCUMFLEX 010A ; Lu # LATIN CAPITAL LETTER C WITH DOT ABOVE 010C ; Lu # LATIN CAPITAL LETTER C WITH CARON 010E ; Lu # LATIN CAPITAL LETTER D WITH CARON 0110 ; Lu # LATIN CAPITAL LETTER D WITH STROKE 0112 ; Lu # LATIN CAPITAL LETTER E WITH MACRON 0114 ; Lu # LATIN CAPITAL LETTER E WITH BREVE 0116 ; Lu # LATIN CAPITAL LETTER E WITH DOT ABOVE 0118 ; Lu # LATIN CAPITAL LETTER E WITH OGONEK 011A ; Lu # LATIN CAPITAL LETTER E WITH CARON 011C ; Lu # LATIN CAPITAL LETTER G WITH CIRCUMFLEX 011E ; Lu # LATIN CAPITAL LETTER G WITH BREVE 0120 ; Lu # LATIN CAPITAL LETTER G WITH DOT ABOVE 0122 ; Lu # LATIN CAPITAL LETTER G WITH CEDILLA 0124 ; Lu # LATIN CAPITAL LETTER H WITH CIRCUMFLEX 0126 ; Lu # LATIN CAPITAL LETTER H WITH STROKE 0128 ; Lu # LATIN CAPITAL LETTER I WITH TILDE 012A ; Lu # LATIN CAPITAL LETTER I WITH MACRON 012C ; Lu # LATIN CAPITAL LETTER I WITH BREVE 012E ; Lu # LATIN CAPITAL LETTER I WITH OGONEK 0130 ; Lu # LATIN CAPITAL LETTER I WITH DOT ABOVE 0132 ; Lu # LATIN CAPITAL LIGATURE IJ 0134 ; Lu # LATIN CAPITAL LETTER J WITH CIRCUMFLEX 0136 ; Lu # LATIN CAPITAL LETTER K WITH CEDILLA 0139 ; Lu # LATIN CAPITAL LETTER L WITH ACUTE 013B ; Lu # LATIN CAPITAL LETTER L WITH CEDILLA 013D ; Lu # LATIN CAPITAL LETTER L WITH CARON 013F ; Lu # LATIN CAPITAL LETTER L WITH MIDDLE DOT 0141 ; Lu # LATIN CAPITAL LETTER L WITH STROKE 0143 ; Lu # LATIN CAPITAL LETTER N WITH ACUTE 0145 ; Lu # LATIN CAPITAL LETTER N WITH CEDILLA 0147 ; Lu # LATIN CAPITAL LETTER N WITH CARON 014A ; Lu # LATIN CAPITAL LETTER ENG 014C ; Lu # LATIN CAPITAL LETTER O WITH MACRON 014E ; Lu # LATIN CAPITAL LETTER O WITH BREVE 0150 ; Lu # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 0152 ; Lu # LATIN CAPITAL LIGATURE OE 0154 ; Lu # LATIN CAPITAL LETTER R WITH ACUTE 0156 ; Lu # LATIN CAPITAL LETTER R WITH CEDILLA 0158 ; Lu # LATIN CAPITAL LETTER R WITH CARON 015A ; Lu # LATIN CAPITAL LETTER S WITH ACUTE 015C ; Lu # LATIN CAPITAL LETTER S WITH CIRCUMFLEX 015E ; Lu # LATIN CAPITAL LETTER S WITH CEDILLA 0160 ; Lu # LATIN CAPITAL LETTER S WITH CARON 0162 ; Lu # LATIN CAPITAL LETTER T WITH CEDILLA 0164 ; Lu # LATIN CAPITAL LETTER T WITH CARON 0166 ; Lu # LATIN CAPITAL LETTER T WITH STROKE 0168 ; Lu # LATIN CAPITAL LETTER U WITH TILDE 016A ; Lu # LATIN CAPITAL LETTER U WITH MACRON 016C ; Lu # LATIN CAPITAL LETTER U WITH BREVE 016E ; Lu # LATIN CAPITAL LETTER U WITH RING ABOVE 0170 ; Lu # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 0172 ; Lu # LATIN CAPITAL LETTER U WITH OGONEK 0174 ; Lu # LATIN CAPITAL LETTER W WITH CIRCUMFLEX 0176 ; Lu # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX 0178..0179 ; Lu # [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE 017B ; Lu # LATIN CAPITAL LETTER Z WITH DOT ABOVE 017D ; Lu # LATIN CAPITAL LETTER Z WITH CARON 0181..0182 ; Lu # [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR 0184 ; Lu # LATIN CAPITAL LETTER TONE SIX 0186..0187 ; Lu # [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK 0189..018B ; Lu # [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR 018E..0191 ; Lu # [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK 0193..0194 ; Lu # [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA 0196..0198 ; Lu # [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK 019C..019D ; Lu # [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK 019F..01A0 ; Lu # [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN 01A2 ; Lu # LATIN CAPITAL LETTER OI 01A4 ; Lu # LATIN CAPITAL LETTER P WITH HOOK 01A6..01A7 ; Lu # [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO 01A9 ; Lu # LATIN CAPITAL LETTER ESH 01AC ; Lu # LATIN CAPITAL LETTER T WITH HOOK 01AE..01AF ; Lu # [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN 01B1..01B3 ; Lu # [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK 01B5 ; Lu # LATIN CAPITAL LETTER Z WITH STROKE 01B7..01B8 ; Lu # [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED 01BC ; Lu # LATIN CAPITAL LETTER TONE FIVE 01C4 ; Lu # LATIN CAPITAL LETTER DZ WITH CARON 01C7 ; Lu # LATIN CAPITAL LETTER LJ 01CA ; Lu # LATIN CAPITAL LETTER NJ 01CD ; Lu # LATIN CAPITAL LETTER A WITH CARON 01CF ; Lu # LATIN CAPITAL LETTER I WITH CARON 01D1 ; Lu # LATIN CAPITAL LETTER O WITH CARON 01D3 ; Lu # LATIN CAPITAL LETTER U WITH CARON 01D5 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON 01D7 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE 01D9 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON 01DB ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE 01DE ; Lu # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON 01E0 ; Lu # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON 01E2 ; Lu # LATIN CAPITAL LETTER AE WITH MACRON 01E4 ; Lu # LATIN CAPITAL LETTER G WITH STROKE 01E6 ; Lu # LATIN CAPITAL LETTER G WITH CARON 01E8 ; Lu # LATIN CAPITAL LETTER K WITH CARON 01EA ; Lu # LATIN CAPITAL LETTER O WITH OGONEK 01EC ; Lu # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON 01EE ; Lu # LATIN CAPITAL LETTER EZH WITH CARON 01F1 ; Lu # LATIN CAPITAL LETTER DZ 01F4 ; Lu # LATIN CAPITAL LETTER G WITH ACUTE 01F6..01F8 ; Lu # [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE 01FA ; Lu # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE 01FC ; Lu # LATIN CAPITAL LETTER AE WITH ACUTE 01FE ; Lu # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE 0200 ; Lu # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE 0202 ; Lu # LATIN CAPITAL LETTER A WITH INVERTED BREVE 0204 ; Lu # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE 0206 ; Lu # LATIN CAPITAL LETTER E WITH INVERTED BREVE 0208 ; Lu # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE 020A ; Lu # LATIN CAPITAL LETTER I WITH INVERTED BREVE 020C ; Lu # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE 020E ; Lu # LATIN CAPITAL LETTER O WITH INVERTED BREVE 0210 ; Lu # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE 0212 ; Lu # LATIN CAPITAL LETTER R WITH INVERTED BREVE 0214 ; Lu # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE 0216 ; Lu # LATIN CAPITAL LETTER U WITH INVERTED BREVE 0218 ; Lu # LATIN CAPITAL LETTER S WITH COMMA BELOW 021A ; Lu # LATIN CAPITAL LETTER T WITH COMMA BELOW 021C ; Lu # LATIN CAPITAL LETTER YOGH 021E ; Lu # LATIN CAPITAL LETTER H WITH CARON 0220 ; Lu # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0222 ; Lu # LATIN CAPITAL LETTER OU 0224 ; Lu # LATIN CAPITAL LETTER Z WITH HOOK 0226 ; Lu # LATIN CAPITAL LETTER A WITH DOT ABOVE 0228 ; Lu # LATIN CAPITAL LETTER E WITH CEDILLA 022A ; Lu # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON 022C ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND MACRON 022E ; Lu # LATIN CAPITAL LETTER O WITH DOT ABOVE 0230 ; Lu # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON 0232 ; Lu # LATIN CAPITAL LETTER Y WITH MACRON 023A..023B ; Lu # [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE 023D..023E ; Lu # [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE 0241 ; Lu # LATIN CAPITAL LETTER GLOTTAL STOP 0243..0246 ; Lu # [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE 0248 ; Lu # LATIN CAPITAL LETTER J WITH STROKE 024A ; Lu # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL 024C ; Lu # LATIN CAPITAL LETTER R WITH STROKE 024E ; Lu # LATIN CAPITAL LETTER Y WITH STROKE 0370 ; Lu # GREEK CAPITAL LETTER HETA 0372 ; Lu # GREEK CAPITAL LETTER ARCHAIC SAMPI 0376 ; Lu # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 037F ; Lu # GREEK CAPITAL LETTER YOT 0386 ; Lu # GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Lu # [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Lu # GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..038F ; Lu # [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS 0391..03A1 ; Lu # [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO 03A3..03AB ; Lu # [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 03CF ; Lu # GREEK CAPITAL KAI SYMBOL 03D2..03D4 ; Lu # [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL 03D8 ; Lu # GREEK LETTER ARCHAIC KOPPA 03DA ; Lu # GREEK LETTER STIGMA 03DC ; Lu # GREEK LETTER DIGAMMA 03DE ; Lu # GREEK LETTER KOPPA 03E0 ; Lu # GREEK LETTER SAMPI 03E2 ; Lu # COPTIC CAPITAL LETTER SHEI 03E4 ; Lu # COPTIC CAPITAL LETTER FEI 03E6 ; Lu # COPTIC CAPITAL LETTER KHEI 03E8 ; Lu # COPTIC CAPITAL LETTER HORI 03EA ; Lu # COPTIC CAPITAL LETTER GANGIA 03EC ; Lu # COPTIC CAPITAL LETTER SHIMA 03EE ; Lu # COPTIC CAPITAL LETTER DEI 03F4 ; Lu # GREEK CAPITAL THETA SYMBOL 03F7 ; Lu # GREEK CAPITAL LETTER SHO 03F9..03FA ; Lu # [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN 03FD..042F ; Lu # [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA 0460 ; Lu # CYRILLIC CAPITAL LETTER OMEGA 0462 ; Lu # CYRILLIC CAPITAL LETTER YAT 0464 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED E 0466 ; Lu # CYRILLIC CAPITAL LETTER LITTLE YUS 0468 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS 046A ; Lu # CYRILLIC CAPITAL LETTER BIG YUS 046C ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS 046E ; Lu # CYRILLIC CAPITAL LETTER KSI 0470 ; Lu # CYRILLIC CAPITAL LETTER PSI 0472 ; Lu # CYRILLIC CAPITAL LETTER FITA 0474 ; Lu # CYRILLIC CAPITAL LETTER IZHITSA 0476 ; Lu # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0478 ; Lu # CYRILLIC CAPITAL LETTER UK 047A ; Lu # CYRILLIC CAPITAL LETTER ROUND OMEGA 047C ; Lu # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO 047E ; Lu # CYRILLIC CAPITAL LETTER OT 0480 ; Lu # CYRILLIC CAPITAL LETTER KOPPA 048A ; Lu # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL 048C ; Lu # CYRILLIC CAPITAL LETTER SEMISOFT SIGN 048E ; Lu # CYRILLIC CAPITAL LETTER ER WITH TICK 0490 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0492 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH STROKE 0494 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK 0496 ; Lu # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER 0498 ; Lu # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER 049A ; Lu # CYRILLIC CAPITAL LETTER KA WITH DESCENDER 049C ; Lu # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE 049E ; Lu # CYRILLIC CAPITAL LETTER KA WITH STROKE 04A0 ; Lu # CYRILLIC CAPITAL LETTER BASHKIR KA 04A2 ; Lu # CYRILLIC CAPITAL LETTER EN WITH DESCENDER 04A4 ; Lu # CYRILLIC CAPITAL LIGATURE EN GHE 04A6 ; Lu # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK 04A8 ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN HA 04AA ; Lu # CYRILLIC CAPITAL LETTER ES WITH DESCENDER 04AC ; Lu # CYRILLIC CAPITAL LETTER TE WITH DESCENDER 04AE ; Lu # CYRILLIC CAPITAL LETTER STRAIGHT U 04B0 ; Lu # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE 04B2 ; Lu # CYRILLIC CAPITAL LETTER HA WITH DESCENDER 04B4 ; Lu # CYRILLIC CAPITAL LIGATURE TE TSE 04B6 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 04B8 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE 04BA ; Lu # CYRILLIC CAPITAL LETTER SHHA 04BC ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN CHE 04BE ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER 04C0..04C1 ; Lu # [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE 04C3 ; Lu # CYRILLIC CAPITAL LETTER KA WITH HOOK 04C5 ; Lu # CYRILLIC CAPITAL LETTER EL WITH TAIL 04C7 ; Lu # CYRILLIC CAPITAL LETTER EN WITH HOOK 04C9 ; Lu # CYRILLIC CAPITAL LETTER EN WITH TAIL 04CB ; Lu # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE 04CD ; Lu # CYRILLIC CAPITAL LETTER EM WITH TAIL 04D0 ; Lu # CYRILLIC CAPITAL LETTER A WITH BREVE 04D2 ; Lu # CYRILLIC CAPITAL LETTER A WITH DIAERESIS 04D4 ; Lu # CYRILLIC CAPITAL LIGATURE A IE 04D6 ; Lu # CYRILLIC CAPITAL LETTER IE WITH BREVE 04D8 ; Lu # CYRILLIC CAPITAL LETTER SCHWA 04DA ; Lu # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS 04DC ; Lu # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS 04DE ; Lu # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS 04E0 ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN DZE 04E2 ; Lu # CYRILLIC CAPITAL LETTER I WITH MACRON 04E4 ; Lu # CYRILLIC CAPITAL LETTER I WITH DIAERESIS 04E6 ; Lu # CYRILLIC CAPITAL LETTER O WITH DIAERESIS 04E8 ; Lu # CYRILLIC CAPITAL LETTER BARRED O 04EA ; Lu # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS 04EC ; Lu # CYRILLIC CAPITAL LETTER E WITH DIAERESIS 04EE ; Lu # CYRILLIC CAPITAL LETTER U WITH MACRON 04F0 ; Lu # CYRILLIC CAPITAL LETTER U WITH DIAERESIS 04F2 ; Lu # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE 04F4 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS 04F6 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER 04F8 ; Lu # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS 04FA ; Lu # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK 04FC ; Lu # CYRILLIC CAPITAL LETTER HA WITH HOOK 04FE ; Lu # CYRILLIC CAPITAL LETTER HA WITH STROKE 0500 ; Lu # CYRILLIC CAPITAL LETTER KOMI DE 0502 ; Lu # CYRILLIC CAPITAL LETTER KOMI DJE 0504 ; Lu # CYRILLIC CAPITAL LETTER KOMI ZJE 0506 ; Lu # CYRILLIC CAPITAL LETTER KOMI DZJE 0508 ; Lu # CYRILLIC CAPITAL LETTER KOMI LJE 050A ; Lu # CYRILLIC CAPITAL LETTER KOMI NJE 050C ; Lu # CYRILLIC CAPITAL LETTER KOMI SJE 050E ; Lu # CYRILLIC CAPITAL LETTER KOMI TJE 0510 ; Lu # CYRILLIC CAPITAL LETTER REVERSED ZE 0512 ; Lu # CYRILLIC CAPITAL LETTER EL WITH HOOK 0514 ; Lu # CYRILLIC CAPITAL LETTER LHA 0516 ; Lu # CYRILLIC CAPITAL LETTER RHA 0518 ; Lu # CYRILLIC CAPITAL LETTER YAE 051A ; Lu # CYRILLIC CAPITAL LETTER QA 051C ; Lu # CYRILLIC CAPITAL LETTER WE 051E ; Lu # CYRILLIC CAPITAL LETTER ALEUT KA 0520 ; Lu # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK 0522 ; Lu # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK 0524 ; Lu # CYRILLIC CAPITAL LETTER PE WITH DESCENDER 0526 ; Lu # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER 0528 ; Lu # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK 052A ; Lu # CYRILLIC CAPITAL LETTER DZZHE 052C ; Lu # CYRILLIC CAPITAL LETTER DCHE 052E ; Lu # CYRILLIC CAPITAL LETTER EL WITH DESCENDER 0531..0556 ; Lu # [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 10A0..10C5 ; Lu # [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Lu # GEORGIAN CAPITAL LETTER YN 10CD ; Lu # GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Lu # [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 1C89 ; Lu # CYRILLIC CAPITAL LETTER TJE 1C90..1CBA ; Lu # [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Lu # [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1E00 ; Lu # LATIN CAPITAL LETTER A WITH RING BELOW 1E02 ; Lu # LATIN CAPITAL LETTER B WITH DOT ABOVE 1E04 ; Lu # LATIN CAPITAL LETTER B WITH DOT BELOW 1E06 ; Lu # LATIN CAPITAL LETTER B WITH LINE BELOW 1E08 ; Lu # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE 1E0A ; Lu # LATIN CAPITAL LETTER D WITH DOT ABOVE 1E0C ; Lu # LATIN CAPITAL LETTER D WITH DOT BELOW 1E0E ; Lu # LATIN CAPITAL LETTER D WITH LINE BELOW 1E10 ; Lu # LATIN CAPITAL LETTER D WITH CEDILLA 1E12 ; Lu # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW 1E14 ; Lu # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE 1E16 ; Lu # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE 1E18 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW 1E1A ; Lu # LATIN CAPITAL LETTER E WITH TILDE BELOW 1E1C ; Lu # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE 1E1E ; Lu # LATIN CAPITAL LETTER F WITH DOT ABOVE 1E20 ; Lu # LATIN CAPITAL LETTER G WITH MACRON 1E22 ; Lu # LATIN CAPITAL LETTER H WITH DOT ABOVE 1E24 ; Lu # LATIN CAPITAL LETTER H WITH DOT BELOW 1E26 ; Lu # LATIN CAPITAL LETTER H WITH DIAERESIS 1E28 ; Lu # LATIN CAPITAL LETTER H WITH CEDILLA 1E2A ; Lu # LATIN CAPITAL LETTER H WITH BREVE BELOW 1E2C ; Lu # LATIN CAPITAL LETTER I WITH TILDE BELOW 1E2E ; Lu # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE 1E30 ; Lu # LATIN CAPITAL LETTER K WITH ACUTE 1E32 ; Lu # LATIN CAPITAL LETTER K WITH DOT BELOW 1E34 ; Lu # LATIN CAPITAL LETTER K WITH LINE BELOW 1E36 ; Lu # LATIN CAPITAL LETTER L WITH DOT BELOW 1E38 ; Lu # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON 1E3A ; Lu # LATIN CAPITAL LETTER L WITH LINE BELOW 1E3C ; Lu # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW 1E3E ; Lu # LATIN CAPITAL LETTER M WITH ACUTE 1E40 ; Lu # LATIN CAPITAL LETTER M WITH DOT ABOVE 1E42 ; Lu # LATIN CAPITAL LETTER M WITH DOT BELOW 1E44 ; Lu # LATIN CAPITAL LETTER N WITH DOT ABOVE 1E46 ; Lu # LATIN CAPITAL LETTER N WITH DOT BELOW 1E48 ; Lu # LATIN CAPITAL LETTER N WITH LINE BELOW 1E4A ; Lu # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW 1E4C ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE 1E4E ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS 1E50 ; Lu # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE 1E52 ; Lu # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE 1E54 ; Lu # LATIN CAPITAL LETTER P WITH ACUTE 1E56 ; Lu # LATIN CAPITAL LETTER P WITH DOT ABOVE 1E58 ; Lu # LATIN CAPITAL LETTER R WITH DOT ABOVE 1E5A ; Lu # LATIN CAPITAL LETTER R WITH DOT BELOW 1E5C ; Lu # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON 1E5E ; Lu # LATIN CAPITAL LETTER R WITH LINE BELOW 1E60 ; Lu # LATIN CAPITAL LETTER S WITH DOT ABOVE 1E62 ; Lu # LATIN CAPITAL LETTER S WITH DOT BELOW 1E64 ; Lu # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE 1E66 ; Lu # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE 1E68 ; Lu # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6A ; Lu # LATIN CAPITAL LETTER T WITH DOT ABOVE 1E6C ; Lu # LATIN CAPITAL LETTER T WITH DOT BELOW 1E6E ; Lu # LATIN CAPITAL LETTER T WITH LINE BELOW 1E70 ; Lu # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW 1E72 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW 1E74 ; Lu # LATIN CAPITAL LETTER U WITH TILDE BELOW 1E76 ; Lu # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW 1E78 ; Lu # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE 1E7A ; Lu # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS 1E7C ; Lu # LATIN CAPITAL LETTER V WITH TILDE 1E7E ; Lu # LATIN CAPITAL LETTER V WITH DOT BELOW 1E80 ; Lu # LATIN CAPITAL LETTER W WITH GRAVE 1E82 ; Lu # LATIN CAPITAL LETTER W WITH ACUTE 1E84 ; Lu # LATIN CAPITAL LETTER W WITH DIAERESIS 1E86 ; Lu # LATIN CAPITAL LETTER W WITH DOT ABOVE 1E88 ; Lu # LATIN CAPITAL LETTER W WITH DOT BELOW 1E8A ; Lu # LATIN CAPITAL LETTER X WITH DOT ABOVE 1E8C ; Lu # LATIN CAPITAL LETTER X WITH DIAERESIS 1E8E ; Lu # LATIN CAPITAL LETTER Y WITH DOT ABOVE 1E90 ; Lu # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX 1E92 ; Lu # LATIN CAPITAL LETTER Z WITH DOT BELOW 1E94 ; Lu # LATIN CAPITAL LETTER Z WITH LINE BELOW 1E9E ; Lu # LATIN CAPITAL LETTER SHARP S 1EA0 ; Lu # LATIN CAPITAL LETTER A WITH DOT BELOW 1EA2 ; Lu # LATIN CAPITAL LETTER A WITH HOOK ABOVE 1EA4 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA6 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA8 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAA ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE 1EAC ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAE ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE 1EB0 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE 1EB2 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE 1EB4 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND TILDE 1EB6 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW 1EB8 ; Lu # LATIN CAPITAL LETTER E WITH DOT BELOW 1EBA ; Lu # LATIN CAPITAL LETTER E WITH HOOK ABOVE 1EBC ; Lu # LATIN CAPITAL LETTER E WITH TILDE 1EBE ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC0 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC2 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC4 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE 1EC6 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC8 ; Lu # LATIN CAPITAL LETTER I WITH HOOK ABOVE 1ECA ; Lu # LATIN CAPITAL LETTER I WITH DOT BELOW 1ECC ; Lu # LATIN CAPITAL LETTER O WITH DOT BELOW 1ECE ; Lu # LATIN CAPITAL LETTER O WITH HOOK ABOVE 1ED0 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED2 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED4 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED6 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE 1ED8 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDA ; Lu # LATIN CAPITAL LETTER O WITH HORN AND ACUTE 1EDC ; Lu # LATIN CAPITAL LETTER O WITH HORN AND GRAVE 1EDE ; Lu # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE 1EE0 ; Lu # LATIN CAPITAL LETTER O WITH HORN AND TILDE 1EE2 ; Lu # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW 1EE4 ; Lu # LATIN CAPITAL LETTER U WITH DOT BELOW 1EE6 ; Lu # LATIN CAPITAL LETTER U WITH HOOK ABOVE 1EE8 ; Lu # LATIN CAPITAL LETTER U WITH HORN AND ACUTE 1EEA ; Lu # LATIN CAPITAL LETTER U WITH HORN AND GRAVE 1EEC ; Lu # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE 1EEE ; Lu # LATIN CAPITAL LETTER U WITH HORN AND TILDE 1EF0 ; Lu # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW 1EF2 ; Lu # LATIN CAPITAL LETTER Y WITH GRAVE 1EF4 ; Lu # LATIN CAPITAL LETTER Y WITH DOT BELOW 1EF6 ; Lu # LATIN CAPITAL LETTER Y WITH HOOK ABOVE 1EF8 ; Lu # LATIN CAPITAL LETTER Y WITH TILDE 1EFA ; Lu # LATIN CAPITAL LETTER MIDDLE-WELSH LL 1EFC ; Lu # LATIN CAPITAL LETTER MIDDLE-WELSH V 1EFE ; Lu # LATIN CAPITAL LETTER Y WITH LOOP 1F08..1F0F ; Lu # [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F18..1F1D ; Lu # [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F28..1F2F ; Lu # [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI 1F38..1F3F ; Lu # [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI 1F48..1F4D ; Lu # [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F59 ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F68..1F6F ; Lu # [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI 1FB8..1FBB ; Lu # [4] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH OXIA 1FC8..1FCB ; Lu # [4] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH OXIA 1FD8..1FDB ; Lu # [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE8..1FEC ; Lu # [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF8..1FFB ; Lu # [4] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH OXIA 2102 ; Lu # DOUBLE-STRUCK CAPITAL C 2107 ; Lu # EULER CONSTANT 210B..210D ; Lu # [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H 2110..2112 ; Lu # [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L 2115 ; Lu # DOUBLE-STRUCK CAPITAL N 2119..211D ; Lu # [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; Lu # DOUBLE-STRUCK CAPITAL Z 2126 ; Lu # OHM SIGN 2128 ; Lu # BLACK-LETTER CAPITAL Z 212A..212D ; Lu # [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 2130..2133 ; Lu # [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M 213E..213F ; Lu # [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI 2145 ; Lu # DOUBLE-STRUCK ITALIC CAPITAL D 2183 ; Lu # ROMAN NUMERAL REVERSED ONE HUNDRED 2C00..2C2F ; Lu # [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI 2C60 ; Lu # LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Lu # [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Lu # LATIN CAPITAL LETTER H WITH DESCENDER 2C69 ; Lu # LATIN CAPITAL LETTER K WITH DESCENDER 2C6B ; Lu # LATIN CAPITAL LETTER Z WITH DESCENDER 2C6D..2C70 ; Lu # [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA 2C72 ; Lu # LATIN CAPITAL LETTER W WITH HOOK 2C75 ; Lu # LATIN CAPITAL LETTER HALF H 2C7E..2C80 ; Lu # [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA 2C82 ; Lu # COPTIC CAPITAL LETTER VIDA 2C84 ; Lu # COPTIC CAPITAL LETTER GAMMA 2C86 ; Lu # COPTIC CAPITAL LETTER DALDA 2C88 ; Lu # COPTIC CAPITAL LETTER EIE 2C8A ; Lu # COPTIC CAPITAL LETTER SOU 2C8C ; Lu # COPTIC CAPITAL LETTER ZATA 2C8E ; Lu # COPTIC CAPITAL LETTER HATE 2C90 ; Lu # COPTIC CAPITAL LETTER THETHE 2C92 ; Lu # COPTIC CAPITAL LETTER IAUDA 2C94 ; Lu # COPTIC CAPITAL LETTER KAPA 2C96 ; Lu # COPTIC CAPITAL LETTER LAULA 2C98 ; Lu # COPTIC CAPITAL LETTER MI 2C9A ; Lu # COPTIC CAPITAL LETTER NI 2C9C ; Lu # COPTIC CAPITAL LETTER KSI 2C9E ; Lu # COPTIC CAPITAL LETTER O 2CA0 ; Lu # COPTIC CAPITAL LETTER PI 2CA2 ; Lu # COPTIC CAPITAL LETTER RO 2CA4 ; Lu # COPTIC CAPITAL LETTER SIMA 2CA6 ; Lu # COPTIC CAPITAL LETTER TAU 2CA8 ; Lu # COPTIC CAPITAL LETTER UA 2CAA ; Lu # COPTIC CAPITAL LETTER FI 2CAC ; Lu # COPTIC CAPITAL LETTER KHI 2CAE ; Lu # COPTIC CAPITAL LETTER PSI 2CB0 ; Lu # COPTIC CAPITAL LETTER OOU 2CB2 ; Lu # COPTIC CAPITAL LETTER DIALECT-P ALEF 2CB4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC AIN 2CB6 ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE 2CB8 ; Lu # COPTIC CAPITAL LETTER DIALECT-P KAPA 2CBA ; Lu # COPTIC CAPITAL LETTER DIALECT-P NI 2CBC ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI 2CBE ; Lu # COPTIC CAPITAL LETTER OLD COPTIC OOU 2CC0 ; Lu # COPTIC CAPITAL LETTER SAMPI 2CC2 ; Lu # COPTIC CAPITAL LETTER CROSSED SHEI 2CC4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC SHEI 2CC6 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC ESH 2CC8 ; Lu # COPTIC CAPITAL LETTER AKHMIMIC KHEI 2CCA ; Lu # COPTIC CAPITAL LETTER DIALECT-P HORI 2CCC ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HORI 2CCE ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HA 2CD0 ; Lu # COPTIC CAPITAL LETTER L-SHAPED HA 2CD2 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HEI 2CD4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HAT 2CD6 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC GANGIA 2CD8 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC DJA 2CDA ; Lu # COPTIC CAPITAL LETTER OLD COPTIC SHIMA 2CDC ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA 2CDE ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN NGI 2CE0 ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN NYI 2CE2 ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN WAU 2CEB ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI 2CED ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA 2CF2 ; Lu # COPTIC CAPITAL LETTER BOHAIRIC KHEI A640 ; Lu # CYRILLIC CAPITAL LETTER ZEMLYA A642 ; Lu # CYRILLIC CAPITAL LETTER DZELO A644 ; Lu # CYRILLIC CAPITAL LETTER REVERSED DZE A646 ; Lu # CYRILLIC CAPITAL LETTER IOTA A648 ; Lu # CYRILLIC CAPITAL LETTER DJERV A64A ; Lu # CYRILLIC CAPITAL LETTER MONOGRAPH UK A64C ; Lu # CYRILLIC CAPITAL LETTER BROAD OMEGA A64E ; Lu # CYRILLIC CAPITAL LETTER NEUTRAL YER A650 ; Lu # CYRILLIC CAPITAL LETTER YERU WITH BACK YER A652 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED YAT A654 ; Lu # CYRILLIC CAPITAL LETTER REVERSED YU A656 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED A A658 ; Lu # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS A65A ; Lu # CYRILLIC CAPITAL LETTER BLENDED YUS A65C ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS A65E ; Lu # CYRILLIC CAPITAL LETTER YN A660 ; Lu # CYRILLIC CAPITAL LETTER REVERSED TSE A662 ; Lu # CYRILLIC CAPITAL LETTER SOFT DE A664 ; Lu # CYRILLIC CAPITAL LETTER SOFT EL A666 ; Lu # CYRILLIC CAPITAL LETTER SOFT EM A668 ; Lu # CYRILLIC CAPITAL LETTER MONOCULAR O A66A ; Lu # CYRILLIC CAPITAL LETTER BINOCULAR O A66C ; Lu # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O A680 ; Lu # CYRILLIC CAPITAL LETTER DWE A682 ; Lu # CYRILLIC CAPITAL LETTER DZWE A684 ; Lu # CYRILLIC CAPITAL LETTER ZHWE A686 ; Lu # CYRILLIC CAPITAL LETTER CCHE A688 ; Lu # CYRILLIC CAPITAL LETTER DZZE A68A ; Lu # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK A68C ; Lu # CYRILLIC CAPITAL LETTER TWE A68E ; Lu # CYRILLIC CAPITAL LETTER TSWE A690 ; Lu # CYRILLIC CAPITAL LETTER TSSE A692 ; Lu # CYRILLIC CAPITAL LETTER TCHE A694 ; Lu # CYRILLIC CAPITAL LETTER HWE A696 ; Lu # CYRILLIC CAPITAL LETTER SHWE A698 ; Lu # CYRILLIC CAPITAL LETTER DOUBLE O A69A ; Lu # CYRILLIC CAPITAL LETTER CROSSED O A722 ; Lu # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF A724 ; Lu # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN A726 ; Lu # LATIN CAPITAL LETTER HENG A728 ; Lu # LATIN CAPITAL LETTER TZ A72A ; Lu # LATIN CAPITAL LETTER TRESILLO A72C ; Lu # LATIN CAPITAL LETTER CUATRILLO A72E ; Lu # LATIN CAPITAL LETTER CUATRILLO WITH COMMA A732 ; Lu # LATIN CAPITAL LETTER AA A734 ; Lu # LATIN CAPITAL LETTER AO A736 ; Lu # LATIN CAPITAL LETTER AU A738 ; Lu # LATIN CAPITAL LETTER AV A73A ; Lu # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR A73C ; Lu # LATIN CAPITAL LETTER AY A73E ; Lu # LATIN CAPITAL LETTER REVERSED C WITH DOT A740 ; Lu # LATIN CAPITAL LETTER K WITH STROKE A742 ; Lu # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE A744 ; Lu # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE A746 ; Lu # LATIN CAPITAL LETTER BROKEN L A748 ; Lu # LATIN CAPITAL LETTER L WITH HIGH STROKE A74A ; Lu # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY A74C ; Lu # LATIN CAPITAL LETTER O WITH LOOP A74E ; Lu # LATIN CAPITAL LETTER OO A750 ; Lu # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER A752 ; Lu # LATIN CAPITAL LETTER P WITH FLOURISH A754 ; Lu # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL A756 ; Lu # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER A758 ; Lu # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE A75A ; Lu # LATIN CAPITAL LETTER R ROTUNDA A75C ; Lu # LATIN CAPITAL LETTER RUM ROTUNDA A75E ; Lu # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE A760 ; Lu # LATIN CAPITAL LETTER VY A762 ; Lu # LATIN CAPITAL LETTER VISIGOTHIC Z A764 ; Lu # LATIN CAPITAL LETTER THORN WITH STROKE A766 ; Lu # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER A768 ; Lu # LATIN CAPITAL LETTER VEND A76A ; Lu # LATIN CAPITAL LETTER ET A76C ; Lu # LATIN CAPITAL LETTER IS A76E ; Lu # LATIN CAPITAL LETTER CON A779 ; Lu # LATIN CAPITAL LETTER INSULAR D A77B ; Lu # LATIN CAPITAL LETTER INSULAR F A77D..A77E ; Lu # [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G A780 ; Lu # LATIN CAPITAL LETTER TURNED L A782 ; Lu # LATIN CAPITAL LETTER INSULAR R A784 ; Lu # LATIN CAPITAL LETTER INSULAR S A786 ; Lu # LATIN CAPITAL LETTER INSULAR T A78B ; Lu # LATIN CAPITAL LETTER SALTILLO A78D ; Lu # LATIN CAPITAL LETTER TURNED H A790 ; Lu # LATIN CAPITAL LETTER N WITH DESCENDER A792 ; Lu # LATIN CAPITAL LETTER C WITH BAR A796 ; Lu # LATIN CAPITAL LETTER B WITH FLOURISH A798 ; Lu # LATIN CAPITAL LETTER F WITH STROKE A79A ; Lu # LATIN CAPITAL LETTER VOLAPUK AE A79C ; Lu # LATIN CAPITAL LETTER VOLAPUK OE A79E ; Lu # LATIN CAPITAL LETTER VOLAPUK UE A7A0 ; Lu # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE A7A2 ; Lu # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE A7A4 ; Lu # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE A7A6 ; Lu # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE A7A8 ; Lu # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE A7AA..A7AE ; Lu # [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B4 ; Lu # [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA A7B6 ; Lu # LATIN CAPITAL LETTER OMEGA A7B8 ; Lu # LATIN CAPITAL LETTER U WITH STROKE A7BA ; Lu # LATIN CAPITAL LETTER GLOTTAL A A7BC ; Lu # LATIN CAPITAL LETTER GLOTTAL I A7BE ; Lu # LATIN CAPITAL LETTER GLOTTAL U A7C0 ; Lu # LATIN CAPITAL LETTER OLD POLISH O A7C2 ; Lu # LATIN CAPITAL LETTER ANGLICANA W A7C4..A7C7 ; Lu # [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY A7C9 ; Lu # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY A7CB..A7CC ; Lu # [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE A7CE ; Lu # LATIN CAPITAL LETTER PHARYNGEAL VOICED FRICATIVE A7D0 ; Lu # LATIN CAPITAL LETTER CLOSED INSULAR G A7D2 ; Lu # LATIN CAPITAL LETTER DOUBLE THORN A7D4 ; Lu # LATIN CAPITAL LETTER DOUBLE WYNN A7D6 ; Lu # LATIN CAPITAL LETTER MIDDLE SCOTS S A7D8 ; Lu # LATIN CAPITAL LETTER SIGMOID S A7DA ; Lu # LATIN CAPITAL LETTER LAMBDA A7DC ; Lu # LATIN CAPITAL LETTER LAMBDA WITH STROKE A7F5 ; Lu # LATIN CAPITAL LETTER REVERSED HALF H FF21..FF3A ; Lu # [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Lu # [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Lu # [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 10570..1057A ; Lu # [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA 1057C..1058A ; Lu # [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE 1058C..10592 ; Lu # [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE 10594..10595 ; Lu # [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE 10C80..10CB2 ; Lu # [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10D50..10D65 ; Lu # [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA 118A0..118BF ; Lu # [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 16E40..16E5F ; Lu # [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y 16EA0..16EB8 ; Lu # [25] BERIA ERFE CAPITAL LETTER ARKAB..BERIA ERFE CAPITAL LETTER AY 1D400..1D419 ; Lu # [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z 1D434..1D44D ; Lu # [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z 1D468..1D481 ; Lu # [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z 1D49C ; Lu # MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Lu # [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; Lu # MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; Lu # [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; Lu # [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B5 ; Lu # [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z 1D4D0..1D4E9 ; Lu # [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z 1D504..1D505 ; Lu # [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; Lu # [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; Lu # [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; Lu # [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D538..1D539 ; Lu # [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; Lu # [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; Lu # [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; Lu # MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; Lu # [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D56C..1D585 ; Lu # [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z 1D5A0..1D5B9 ; Lu # [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z 1D5D4..1D5ED ; Lu # [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z 1D608..1D621 ; Lu # [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z 1D63C..1D655 ; Lu # [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z 1D670..1D689 ; Lu # [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z 1D6A8..1D6C0 ; Lu # [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6E2..1D6FA ; Lu # [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA 1D71C..1D734 ; Lu # [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D756..1D76E ; Lu # [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D790..1D7A8 ; Lu # [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7CA ; Lu # MATHEMATICAL BOLD CAPITAL DIGAMMA 1E900..1E921 ; Lu # [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA # Total code points: 1886 # ================================================ # General_Category=Lowercase_Letter 0061..007A ; Ll # [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00B5 ; Ll # MICRO SIGN 00DF..00F6 ; Ll # [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS 00F8..00FF ; Ll # [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS 0101 ; Ll # LATIN SMALL LETTER A WITH MACRON 0103 ; Ll # LATIN SMALL LETTER A WITH BREVE 0105 ; Ll # LATIN SMALL LETTER A WITH OGONEK 0107 ; Ll # LATIN SMALL LETTER C WITH ACUTE 0109 ; Ll # LATIN SMALL LETTER C WITH CIRCUMFLEX 010B ; Ll # LATIN SMALL LETTER C WITH DOT ABOVE 010D ; Ll # LATIN SMALL LETTER C WITH CARON 010F ; Ll # LATIN SMALL LETTER D WITH CARON 0111 ; Ll # LATIN SMALL LETTER D WITH STROKE 0113 ; Ll # LATIN SMALL LETTER E WITH MACRON 0115 ; Ll # LATIN SMALL LETTER E WITH BREVE 0117 ; Ll # LATIN SMALL LETTER E WITH DOT ABOVE 0119 ; Ll # LATIN SMALL LETTER E WITH OGONEK 011B ; Ll # LATIN SMALL LETTER E WITH CARON 011D ; Ll # LATIN SMALL LETTER G WITH CIRCUMFLEX 011F ; Ll # LATIN SMALL LETTER G WITH BREVE 0121 ; Ll # LATIN SMALL LETTER G WITH DOT ABOVE 0123 ; Ll # LATIN SMALL LETTER G WITH CEDILLA 0125 ; Ll # LATIN SMALL LETTER H WITH CIRCUMFLEX 0127 ; Ll # LATIN SMALL LETTER H WITH STROKE 0129 ; Ll # LATIN SMALL LETTER I WITH TILDE 012B ; Ll # LATIN SMALL LETTER I WITH MACRON 012D ; Ll # LATIN SMALL LETTER I WITH BREVE 012F ; Ll # LATIN SMALL LETTER I WITH OGONEK 0131 ; Ll # LATIN SMALL LETTER DOTLESS I 0133 ; Ll # LATIN SMALL LIGATURE IJ 0135 ; Ll # LATIN SMALL LETTER J WITH CIRCUMFLEX 0137..0138 ; Ll # [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA 013A ; Ll # LATIN SMALL LETTER L WITH ACUTE 013C ; Ll # LATIN SMALL LETTER L WITH CEDILLA 013E ; Ll # LATIN SMALL LETTER L WITH CARON 0140 ; Ll # LATIN SMALL LETTER L WITH MIDDLE DOT 0142 ; Ll # LATIN SMALL LETTER L WITH STROKE 0144 ; Ll # LATIN SMALL LETTER N WITH ACUTE 0146 ; Ll # LATIN SMALL LETTER N WITH CEDILLA 0148..0149 ; Ll # [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE 014B ; Ll # LATIN SMALL LETTER ENG 014D ; Ll # LATIN SMALL LETTER O WITH MACRON 014F ; Ll # LATIN SMALL LETTER O WITH BREVE 0151 ; Ll # LATIN SMALL LETTER O WITH DOUBLE ACUTE 0153 ; Ll # LATIN SMALL LIGATURE OE 0155 ; Ll # LATIN SMALL LETTER R WITH ACUTE 0157 ; Ll # LATIN SMALL LETTER R WITH CEDILLA 0159 ; Ll # LATIN SMALL LETTER R WITH CARON 015B ; Ll # LATIN SMALL LETTER S WITH ACUTE 015D ; Ll # LATIN SMALL LETTER S WITH CIRCUMFLEX 015F ; Ll # LATIN SMALL LETTER S WITH CEDILLA 0161 ; Ll # LATIN SMALL LETTER S WITH CARON 0163 ; Ll # LATIN SMALL LETTER T WITH CEDILLA 0165 ; Ll # LATIN SMALL LETTER T WITH CARON 0167 ; Ll # LATIN SMALL LETTER T WITH STROKE 0169 ; Ll # LATIN SMALL LETTER U WITH TILDE 016B ; Ll # LATIN SMALL LETTER U WITH MACRON 016D ; Ll # LATIN SMALL LETTER U WITH BREVE 016F ; Ll # LATIN SMALL LETTER U WITH RING ABOVE 0171 ; Ll # LATIN SMALL LETTER U WITH DOUBLE ACUTE 0173 ; Ll # LATIN SMALL LETTER U WITH OGONEK 0175 ; Ll # LATIN SMALL LETTER W WITH CIRCUMFLEX 0177 ; Ll # LATIN SMALL LETTER Y WITH CIRCUMFLEX 017A ; Ll # LATIN SMALL LETTER Z WITH ACUTE 017C ; Ll # LATIN SMALL LETTER Z WITH DOT ABOVE 017E..0180 ; Ll # [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE 0183 ; Ll # LATIN SMALL LETTER B WITH TOPBAR 0185 ; Ll # LATIN SMALL LETTER TONE SIX 0188 ; Ll # LATIN SMALL LETTER C WITH HOOK 018C..018D ; Ll # [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA 0192 ; Ll # LATIN SMALL LETTER F WITH HOOK 0195 ; Ll # LATIN SMALL LETTER HV 0199..019B ; Ll # [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE 019E ; Ll # LATIN SMALL LETTER N WITH LONG RIGHT LEG 01A1 ; Ll # LATIN SMALL LETTER O WITH HORN 01A3 ; Ll # LATIN SMALL LETTER OI 01A5 ; Ll # LATIN SMALL LETTER P WITH HOOK 01A8 ; Ll # LATIN SMALL LETTER TONE TWO 01AA..01AB ; Ll # [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK 01AD ; Ll # LATIN SMALL LETTER T WITH HOOK 01B0 ; Ll # LATIN SMALL LETTER U WITH HORN 01B4 ; Ll # LATIN SMALL LETTER Y WITH HOOK 01B6 ; Ll # LATIN SMALL LETTER Z WITH STROKE 01B9..01BA ; Ll # [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL 01BD..01BF ; Ll # [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN 01C6 ; Ll # LATIN SMALL LETTER DZ WITH CARON 01C9 ; Ll # LATIN SMALL LETTER LJ 01CC ; Ll # LATIN SMALL LETTER NJ 01CE ; Ll # LATIN SMALL LETTER A WITH CARON 01D0 ; Ll # LATIN SMALL LETTER I WITH CARON 01D2 ; Ll # LATIN SMALL LETTER O WITH CARON 01D4 ; Ll # LATIN SMALL LETTER U WITH CARON 01D6 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON 01D8 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE 01DA ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND CARON 01DC..01DD ; Ll # [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E 01DF ; Ll # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON 01E1 ; Ll # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON 01E3 ; Ll # LATIN SMALL LETTER AE WITH MACRON 01E5 ; Ll # LATIN SMALL LETTER G WITH STROKE 01E7 ; Ll # LATIN SMALL LETTER G WITH CARON 01E9 ; Ll # LATIN SMALL LETTER K WITH CARON 01EB ; Ll # LATIN SMALL LETTER O WITH OGONEK 01ED ; Ll # LATIN SMALL LETTER O WITH OGONEK AND MACRON 01EF..01F0 ; Ll # [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON 01F3 ; Ll # LATIN SMALL LETTER DZ 01F5 ; Ll # LATIN SMALL LETTER G WITH ACUTE 01F9 ; Ll # LATIN SMALL LETTER N WITH GRAVE 01FB ; Ll # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE 01FD ; Ll # LATIN SMALL LETTER AE WITH ACUTE 01FF ; Ll # LATIN SMALL LETTER O WITH STROKE AND ACUTE 0201 ; Ll # LATIN SMALL LETTER A WITH DOUBLE GRAVE 0203 ; Ll # LATIN SMALL LETTER A WITH INVERTED BREVE 0205 ; Ll # LATIN SMALL LETTER E WITH DOUBLE GRAVE 0207 ; Ll # LATIN SMALL LETTER E WITH INVERTED BREVE 0209 ; Ll # LATIN SMALL LETTER I WITH DOUBLE GRAVE 020B ; Ll # LATIN SMALL LETTER I WITH INVERTED BREVE 020D ; Ll # LATIN SMALL LETTER O WITH DOUBLE GRAVE 020F ; Ll # LATIN SMALL LETTER O WITH INVERTED BREVE 0211 ; Ll # LATIN SMALL LETTER R WITH DOUBLE GRAVE 0213 ; Ll # LATIN SMALL LETTER R WITH INVERTED BREVE 0215 ; Ll # LATIN SMALL LETTER U WITH DOUBLE GRAVE 0217 ; Ll # LATIN SMALL LETTER U WITH INVERTED BREVE 0219 ; Ll # LATIN SMALL LETTER S WITH COMMA BELOW 021B ; Ll # LATIN SMALL LETTER T WITH COMMA BELOW 021D ; Ll # LATIN SMALL LETTER YOGH 021F ; Ll # LATIN SMALL LETTER H WITH CARON 0221 ; Ll # LATIN SMALL LETTER D WITH CURL 0223 ; Ll # LATIN SMALL LETTER OU 0225 ; Ll # LATIN SMALL LETTER Z WITH HOOK 0227 ; Ll # LATIN SMALL LETTER A WITH DOT ABOVE 0229 ; Ll # LATIN SMALL LETTER E WITH CEDILLA 022B ; Ll # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON 022D ; Ll # LATIN SMALL LETTER O WITH TILDE AND MACRON 022F ; Ll # LATIN SMALL LETTER O WITH DOT ABOVE 0231 ; Ll # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON 0233..0239 ; Ll # [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH 023C ; Ll # LATIN SMALL LETTER C WITH STROKE 023F..0240 ; Ll # [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL 0242 ; Ll # LATIN SMALL LETTER GLOTTAL STOP 0247 ; Ll # LATIN SMALL LETTER E WITH STROKE 0249 ; Ll # LATIN SMALL LETTER J WITH STROKE 024B ; Ll # LATIN SMALL LETTER Q WITH HOOK TAIL 024D ; Ll # LATIN SMALL LETTER R WITH STROKE 024F..0293 ; Ll # [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL 0296..02AF ; Ll # [26] LATIN LETTER INVERTED GLOTTAL STOP..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 0371 ; Ll # GREEK SMALL LETTER HETA 0373 ; Ll # GREEK SMALL LETTER ARCHAIC SAMPI 0377 ; Ll # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037B..037D ; Ll # [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 0390 ; Ll # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 03AC..03CE ; Ll # [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS 03D0..03D1 ; Ll # [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL 03D5..03D7 ; Ll # [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL 03D9 ; Ll # GREEK SMALL LETTER ARCHAIC KOPPA 03DB ; Ll # GREEK SMALL LETTER STIGMA 03DD ; Ll # GREEK SMALL LETTER DIGAMMA 03DF ; Ll # GREEK SMALL LETTER KOPPA 03E1 ; Ll # GREEK SMALL LETTER SAMPI 03E3 ; Ll # COPTIC SMALL LETTER SHEI 03E5 ; Ll # COPTIC SMALL LETTER FEI 03E7 ; Ll # COPTIC SMALL LETTER KHEI 03E9 ; Ll # COPTIC SMALL LETTER HORI 03EB ; Ll # COPTIC SMALL LETTER GANGIA 03ED ; Ll # COPTIC SMALL LETTER SHIMA 03EF..03F3 ; Ll # [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT 03F5 ; Ll # GREEK LUNATE EPSILON SYMBOL 03F8 ; Ll # GREEK SMALL LETTER SHO 03FB..03FC ; Ll # [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL 0430..045F ; Ll # [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE 0461 ; Ll # CYRILLIC SMALL LETTER OMEGA 0463 ; Ll # CYRILLIC SMALL LETTER YAT 0465 ; Ll # CYRILLIC SMALL LETTER IOTIFIED E 0467 ; Ll # CYRILLIC SMALL LETTER LITTLE YUS 0469 ; Ll # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS 046B ; Ll # CYRILLIC SMALL LETTER BIG YUS 046D ; Ll # CYRILLIC SMALL LETTER IOTIFIED BIG YUS 046F ; Ll # CYRILLIC SMALL LETTER KSI 0471 ; Ll # CYRILLIC SMALL LETTER PSI 0473 ; Ll # CYRILLIC SMALL LETTER FITA 0475 ; Ll # CYRILLIC SMALL LETTER IZHITSA 0477 ; Ll # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0479 ; Ll # CYRILLIC SMALL LETTER UK 047B ; Ll # CYRILLIC SMALL LETTER ROUND OMEGA 047D ; Ll # CYRILLIC SMALL LETTER OMEGA WITH TITLO 047F ; Ll # CYRILLIC SMALL LETTER OT 0481 ; Ll # CYRILLIC SMALL LETTER KOPPA 048B ; Ll # CYRILLIC SMALL LETTER SHORT I WITH TAIL 048D ; Ll # CYRILLIC SMALL LETTER SEMISOFT SIGN 048F ; Ll # CYRILLIC SMALL LETTER ER WITH TICK 0491 ; Ll # CYRILLIC SMALL LETTER GHE WITH UPTURN 0493 ; Ll # CYRILLIC SMALL LETTER GHE WITH STROKE 0495 ; Ll # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK 0497 ; Ll # CYRILLIC SMALL LETTER ZHE WITH DESCENDER 0499 ; Ll # CYRILLIC SMALL LETTER ZE WITH DESCENDER 049B ; Ll # CYRILLIC SMALL LETTER KA WITH DESCENDER 049D ; Ll # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE 049F ; Ll # CYRILLIC SMALL LETTER KA WITH STROKE 04A1 ; Ll # CYRILLIC SMALL LETTER BASHKIR KA 04A3 ; Ll # CYRILLIC SMALL LETTER EN WITH DESCENDER 04A5 ; Ll # CYRILLIC SMALL LIGATURE EN GHE 04A7 ; Ll # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK 04A9 ; Ll # CYRILLIC SMALL LETTER ABKHASIAN HA 04AB ; Ll # CYRILLIC SMALL LETTER ES WITH DESCENDER 04AD ; Ll # CYRILLIC SMALL LETTER TE WITH DESCENDER 04AF ; Ll # CYRILLIC SMALL LETTER STRAIGHT U 04B1 ; Ll # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE 04B3 ; Ll # CYRILLIC SMALL LETTER HA WITH DESCENDER 04B5 ; Ll # CYRILLIC SMALL LIGATURE TE TSE 04B7 ; Ll # CYRILLIC SMALL LETTER CHE WITH DESCENDER 04B9 ; Ll # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE 04BB ; Ll # CYRILLIC SMALL LETTER SHHA 04BD ; Ll # CYRILLIC SMALL LETTER ABKHASIAN CHE 04BF ; Ll # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER 04C2 ; Ll # CYRILLIC SMALL LETTER ZHE WITH BREVE 04C4 ; Ll # CYRILLIC SMALL LETTER KA WITH HOOK 04C6 ; Ll # CYRILLIC SMALL LETTER EL WITH TAIL 04C8 ; Ll # CYRILLIC SMALL LETTER EN WITH HOOK 04CA ; Ll # CYRILLIC SMALL LETTER EN WITH TAIL 04CC ; Ll # CYRILLIC SMALL LETTER KHAKASSIAN CHE 04CE..04CF ; Ll # [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA 04D1 ; Ll # CYRILLIC SMALL LETTER A WITH BREVE 04D3 ; Ll # CYRILLIC SMALL LETTER A WITH DIAERESIS 04D5 ; Ll # CYRILLIC SMALL LIGATURE A IE 04D7 ; Ll # CYRILLIC SMALL LETTER IE WITH BREVE 04D9 ; Ll # CYRILLIC SMALL LETTER SCHWA 04DB ; Ll # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS 04DD ; Ll # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS 04DF ; Ll # CYRILLIC SMALL LETTER ZE WITH DIAERESIS 04E1 ; Ll # CYRILLIC SMALL LETTER ABKHASIAN DZE 04E3 ; Ll # CYRILLIC SMALL LETTER I WITH MACRON 04E5 ; Ll # CYRILLIC SMALL LETTER I WITH DIAERESIS 04E7 ; Ll # CYRILLIC SMALL LETTER O WITH DIAERESIS 04E9 ; Ll # CYRILLIC SMALL LETTER BARRED O 04EB ; Ll # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS 04ED ; Ll # CYRILLIC SMALL LETTER E WITH DIAERESIS 04EF ; Ll # CYRILLIC SMALL LETTER U WITH MACRON 04F1 ; Ll # CYRILLIC SMALL LETTER U WITH DIAERESIS 04F3 ; Ll # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE 04F5 ; Ll # CYRILLIC SMALL LETTER CHE WITH DIAERESIS 04F7 ; Ll # CYRILLIC SMALL LETTER GHE WITH DESCENDER 04F9 ; Ll # CYRILLIC SMALL LETTER YERU WITH DIAERESIS 04FB ; Ll # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK 04FD ; Ll # CYRILLIC SMALL LETTER HA WITH HOOK 04FF ; Ll # CYRILLIC SMALL LETTER HA WITH STROKE 0501 ; Ll # CYRILLIC SMALL LETTER KOMI DE 0503 ; Ll # CYRILLIC SMALL LETTER KOMI DJE 0505 ; Ll # CYRILLIC SMALL LETTER KOMI ZJE 0507 ; Ll # CYRILLIC SMALL LETTER KOMI DZJE 0509 ; Ll # CYRILLIC SMALL LETTER KOMI LJE 050B ; Ll # CYRILLIC SMALL LETTER KOMI NJE 050D ; Ll # CYRILLIC SMALL LETTER KOMI SJE 050F ; Ll # CYRILLIC SMALL LETTER KOMI TJE 0511 ; Ll # CYRILLIC SMALL LETTER REVERSED ZE 0513 ; Ll # CYRILLIC SMALL LETTER EL WITH HOOK 0515 ; Ll # CYRILLIC SMALL LETTER LHA 0517 ; Ll # CYRILLIC SMALL LETTER RHA 0519 ; Ll # CYRILLIC SMALL LETTER YAE 051B ; Ll # CYRILLIC SMALL LETTER QA 051D ; Ll # CYRILLIC SMALL LETTER WE 051F ; Ll # CYRILLIC SMALL LETTER ALEUT KA 0521 ; Ll # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK 0523 ; Ll # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK 0525 ; Ll # CYRILLIC SMALL LETTER PE WITH DESCENDER 0527 ; Ll # CYRILLIC SMALL LETTER SHHA WITH DESCENDER 0529 ; Ll # CYRILLIC SMALL LETTER EN WITH LEFT HOOK 052B ; Ll # CYRILLIC SMALL LETTER DZZHE 052D ; Ll # CYRILLIC SMALL LETTER DCHE 052F ; Ll # CYRILLIC SMALL LETTER EL WITH DESCENDER 0560..0588 ; Ll # [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE 10D0..10FA ; Ll # [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FD..10FF ; Ll # [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13F8..13FD ; Ll # [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Ll # [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1C8A ; Ll # CYRILLIC SMALL LETTER TJE 1D00..1D2B ; Ll # [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D6B..1D77 ; Ll # [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D79..1D9A ; Ll # [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1E01 ; Ll # LATIN SMALL LETTER A WITH RING BELOW 1E03 ; Ll # LATIN SMALL LETTER B WITH DOT ABOVE 1E05 ; Ll # LATIN SMALL LETTER B WITH DOT BELOW 1E07 ; Ll # LATIN SMALL LETTER B WITH LINE BELOW 1E09 ; Ll # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE 1E0B ; Ll # LATIN SMALL LETTER D WITH DOT ABOVE 1E0D ; Ll # LATIN SMALL LETTER D WITH DOT BELOW 1E0F ; Ll # LATIN SMALL LETTER D WITH LINE BELOW 1E11 ; Ll # LATIN SMALL LETTER D WITH CEDILLA 1E13 ; Ll # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW 1E15 ; Ll # LATIN SMALL LETTER E WITH MACRON AND GRAVE 1E17 ; Ll # LATIN SMALL LETTER E WITH MACRON AND ACUTE 1E19 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW 1E1B ; Ll # LATIN SMALL LETTER E WITH TILDE BELOW 1E1D ; Ll # LATIN SMALL LETTER E WITH CEDILLA AND BREVE 1E1F ; Ll # LATIN SMALL LETTER F WITH DOT ABOVE 1E21 ; Ll # LATIN SMALL LETTER G WITH MACRON 1E23 ; Ll # LATIN SMALL LETTER H WITH DOT ABOVE 1E25 ; Ll # LATIN SMALL LETTER H WITH DOT BELOW 1E27 ; Ll # LATIN SMALL LETTER H WITH DIAERESIS 1E29 ; Ll # LATIN SMALL LETTER H WITH CEDILLA 1E2B ; Ll # LATIN SMALL LETTER H WITH BREVE BELOW 1E2D ; Ll # LATIN SMALL LETTER I WITH TILDE BELOW 1E2F ; Ll # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE 1E31 ; Ll # LATIN SMALL LETTER K WITH ACUTE 1E33 ; Ll # LATIN SMALL LETTER K WITH DOT BELOW 1E35 ; Ll # LATIN SMALL LETTER K WITH LINE BELOW 1E37 ; Ll # LATIN SMALL LETTER L WITH DOT BELOW 1E39 ; Ll # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON 1E3B ; Ll # LATIN SMALL LETTER L WITH LINE BELOW 1E3D ; Ll # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW 1E3F ; Ll # LATIN SMALL LETTER M WITH ACUTE 1E41 ; Ll # LATIN SMALL LETTER M WITH DOT ABOVE 1E43 ; Ll # LATIN SMALL LETTER M WITH DOT BELOW 1E45 ; Ll # LATIN SMALL LETTER N WITH DOT ABOVE 1E47 ; Ll # LATIN SMALL LETTER N WITH DOT BELOW 1E49 ; Ll # LATIN SMALL LETTER N WITH LINE BELOW 1E4B ; Ll # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW 1E4D ; Ll # LATIN SMALL LETTER O WITH TILDE AND ACUTE 1E4F ; Ll # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS 1E51 ; Ll # LATIN SMALL LETTER O WITH MACRON AND GRAVE 1E53 ; Ll # LATIN SMALL LETTER O WITH MACRON AND ACUTE 1E55 ; Ll # LATIN SMALL LETTER P WITH ACUTE 1E57 ; Ll # LATIN SMALL LETTER P WITH DOT ABOVE 1E59 ; Ll # LATIN SMALL LETTER R WITH DOT ABOVE 1E5B ; Ll # LATIN SMALL LETTER R WITH DOT BELOW 1E5D ; Ll # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON 1E5F ; Ll # LATIN SMALL LETTER R WITH LINE BELOW 1E61 ; Ll # LATIN SMALL LETTER S WITH DOT ABOVE 1E63 ; Ll # LATIN SMALL LETTER S WITH DOT BELOW 1E65 ; Ll # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE 1E67 ; Ll # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE 1E69 ; Ll # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6B ; Ll # LATIN SMALL LETTER T WITH DOT ABOVE 1E6D ; Ll # LATIN SMALL LETTER T WITH DOT BELOW 1E6F ; Ll # LATIN SMALL LETTER T WITH LINE BELOW 1E71 ; Ll # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW 1E73 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS BELOW 1E75 ; Ll # LATIN SMALL LETTER U WITH TILDE BELOW 1E77 ; Ll # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW 1E79 ; Ll # LATIN SMALL LETTER U WITH TILDE AND ACUTE 1E7B ; Ll # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS 1E7D ; Ll # LATIN SMALL LETTER V WITH TILDE 1E7F ; Ll # LATIN SMALL LETTER V WITH DOT BELOW 1E81 ; Ll # LATIN SMALL LETTER W WITH GRAVE 1E83 ; Ll # LATIN SMALL LETTER W WITH ACUTE 1E85 ; Ll # LATIN SMALL LETTER W WITH DIAERESIS 1E87 ; Ll # LATIN SMALL LETTER W WITH DOT ABOVE 1E89 ; Ll # LATIN SMALL LETTER W WITH DOT BELOW 1E8B ; Ll # LATIN SMALL LETTER X WITH DOT ABOVE 1E8D ; Ll # LATIN SMALL LETTER X WITH DIAERESIS 1E8F ; Ll # LATIN SMALL LETTER Y WITH DOT ABOVE 1E91 ; Ll # LATIN SMALL LETTER Z WITH CIRCUMFLEX 1E93 ; Ll # LATIN SMALL LETTER Z WITH DOT BELOW 1E95..1E9D ; Ll # [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE 1E9F ; Ll # LATIN SMALL LETTER DELTA 1EA1 ; Ll # LATIN SMALL LETTER A WITH DOT BELOW 1EA3 ; Ll # LATIN SMALL LETTER A WITH HOOK ABOVE 1EA5 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA7 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA9 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAB ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE 1EAD ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAF ; Ll # LATIN SMALL LETTER A WITH BREVE AND ACUTE 1EB1 ; Ll # LATIN SMALL LETTER A WITH BREVE AND GRAVE 1EB3 ; Ll # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE 1EB5 ; Ll # LATIN SMALL LETTER A WITH BREVE AND TILDE 1EB7 ; Ll # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW 1EB9 ; Ll # LATIN SMALL LETTER E WITH DOT BELOW 1EBB ; Ll # LATIN SMALL LETTER E WITH HOOK ABOVE 1EBD ; Ll # LATIN SMALL LETTER E WITH TILDE 1EBF ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC1 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC3 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC5 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE 1EC7 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC9 ; Ll # LATIN SMALL LETTER I WITH HOOK ABOVE 1ECB ; Ll # LATIN SMALL LETTER I WITH DOT BELOW 1ECD ; Ll # LATIN SMALL LETTER O WITH DOT BELOW 1ECF ; Ll # LATIN SMALL LETTER O WITH HOOK ABOVE 1ED1 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED3 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED5 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED7 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE 1ED9 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDB ; Ll # LATIN SMALL LETTER O WITH HORN AND ACUTE 1EDD ; Ll # LATIN SMALL LETTER O WITH HORN AND GRAVE 1EDF ; Ll # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE 1EE1 ; Ll # LATIN SMALL LETTER O WITH HORN AND TILDE 1EE3 ; Ll # LATIN SMALL LETTER O WITH HORN AND DOT BELOW 1EE5 ; Ll # LATIN SMALL LETTER U WITH DOT BELOW 1EE7 ; Ll # LATIN SMALL LETTER U WITH HOOK ABOVE 1EE9 ; Ll # LATIN SMALL LETTER U WITH HORN AND ACUTE 1EEB ; Ll # LATIN SMALL LETTER U WITH HORN AND GRAVE 1EED ; Ll # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE 1EEF ; Ll # LATIN SMALL LETTER U WITH HORN AND TILDE 1EF1 ; Ll # LATIN SMALL LETTER U WITH HORN AND DOT BELOW 1EF3 ; Ll # LATIN SMALL LETTER Y WITH GRAVE 1EF5 ; Ll # LATIN SMALL LETTER Y WITH DOT BELOW 1EF7 ; Ll # LATIN SMALL LETTER Y WITH HOOK ABOVE 1EF9 ; Ll # LATIN SMALL LETTER Y WITH TILDE 1EFB ; Ll # LATIN SMALL LETTER MIDDLE-WELSH LL 1EFD ; Ll # LATIN SMALL LETTER MIDDLE-WELSH V 1EFF..1F07 ; Ll # [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F10..1F15 ; Ll # [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F27 ; Ll # [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI 1F30..1F37 ; Ll # [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI 1F40..1F45 ; Ll # [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Ll # [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F60..1F67 ; Ll # [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI 1F70..1F7D ; Ll # [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1F87 ; Ll # [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1F90..1F97 ; Ll # [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1FA0..1FA7 ; Ll # [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1FB0..1FB4 ; Ll # [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FB7 ; Ll # [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI 1FBE ; Ll # GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Ll # [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FC7 ; Ll # [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI 1FD0..1FD3 ; Ll # [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FD7 ; Ll # [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI 1FE0..1FE7 ; Ll # [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI 1FF2..1FF4 ; Ll # [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FF7 ; Ll # [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI 210A ; Ll # SCRIPT SMALL G 210E..210F ; Ll # [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI 2113 ; Ll # SCRIPT SMALL L 212F ; Ll # SCRIPT SMALL E 2134 ; Ll # SCRIPT SMALL O 2139 ; Ll # INFORMATION SOURCE 213C..213D ; Ll # [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA 2146..2149 ; Ll # [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; Ll # TURNED SMALL F 2184 ; Ll # LATIN SMALL LETTER REVERSED C 2C30..2C5F ; Ll # [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 2C61 ; Ll # LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Ll # [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Ll # LATIN SMALL LETTER H WITH DESCENDER 2C6A ; Ll # LATIN SMALL LETTER K WITH DESCENDER 2C6C ; Ll # LATIN SMALL LETTER Z WITH DESCENDER 2C71 ; Ll # LATIN SMALL LETTER V WITH RIGHT HOOK 2C73..2C74 ; Ll # [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL 2C76..2C7B ; Ll # [6] LATIN SMALL LETTER HALF H..LATIN LETTER SMALL CAPITAL TURNED E 2C81 ; Ll # COPTIC SMALL LETTER ALFA 2C83 ; Ll # COPTIC SMALL LETTER VIDA 2C85 ; Ll # COPTIC SMALL LETTER GAMMA 2C87 ; Ll # COPTIC SMALL LETTER DALDA 2C89 ; Ll # COPTIC SMALL LETTER EIE 2C8B ; Ll # COPTIC SMALL LETTER SOU 2C8D ; Ll # COPTIC SMALL LETTER ZATA 2C8F ; Ll # COPTIC SMALL LETTER HATE 2C91 ; Ll # COPTIC SMALL LETTER THETHE 2C93 ; Ll # COPTIC SMALL LETTER IAUDA 2C95 ; Ll # COPTIC SMALL LETTER KAPA 2C97 ; Ll # COPTIC SMALL LETTER LAULA 2C99 ; Ll # COPTIC SMALL LETTER MI 2C9B ; Ll # COPTIC SMALL LETTER NI 2C9D ; Ll # COPTIC SMALL LETTER KSI 2C9F ; Ll # COPTIC SMALL LETTER O 2CA1 ; Ll # COPTIC SMALL LETTER PI 2CA3 ; Ll # COPTIC SMALL LETTER RO 2CA5 ; Ll # COPTIC SMALL LETTER SIMA 2CA7 ; Ll # COPTIC SMALL LETTER TAU 2CA9 ; Ll # COPTIC SMALL LETTER UA 2CAB ; Ll # COPTIC SMALL LETTER FI 2CAD ; Ll # COPTIC SMALL LETTER KHI 2CAF ; Ll # COPTIC SMALL LETTER PSI 2CB1 ; Ll # COPTIC SMALL LETTER OOU 2CB3 ; Ll # COPTIC SMALL LETTER DIALECT-P ALEF 2CB5 ; Ll # COPTIC SMALL LETTER OLD COPTIC AIN 2CB7 ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE 2CB9 ; Ll # COPTIC SMALL LETTER DIALECT-P KAPA 2CBB ; Ll # COPTIC SMALL LETTER DIALECT-P NI 2CBD ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC NI 2CBF ; Ll # COPTIC SMALL LETTER OLD COPTIC OOU 2CC1 ; Ll # COPTIC SMALL LETTER SAMPI 2CC3 ; Ll # COPTIC SMALL LETTER CROSSED SHEI 2CC5 ; Ll # COPTIC SMALL LETTER OLD COPTIC SHEI 2CC7 ; Ll # COPTIC SMALL LETTER OLD COPTIC ESH 2CC9 ; Ll # COPTIC SMALL LETTER AKHMIMIC KHEI 2CCB ; Ll # COPTIC SMALL LETTER DIALECT-P HORI 2CCD ; Ll # COPTIC SMALL LETTER OLD COPTIC HORI 2CCF ; Ll # COPTIC SMALL LETTER OLD COPTIC HA 2CD1 ; Ll # COPTIC SMALL LETTER L-SHAPED HA 2CD3 ; Ll # COPTIC SMALL LETTER OLD COPTIC HEI 2CD5 ; Ll # COPTIC SMALL LETTER OLD COPTIC HAT 2CD7 ; Ll # COPTIC SMALL LETTER OLD COPTIC GANGIA 2CD9 ; Ll # COPTIC SMALL LETTER OLD COPTIC DJA 2CDB ; Ll # COPTIC SMALL LETTER OLD COPTIC SHIMA 2CDD ; Ll # COPTIC SMALL LETTER OLD NUBIAN SHIMA 2CDF ; Ll # COPTIC SMALL LETTER OLD NUBIAN NGI 2CE1 ; Ll # COPTIC SMALL LETTER OLD NUBIAN NYI 2CE3..2CE4 ; Ll # [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI 2CEC ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI 2CEE ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF3 ; Ll # COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Ll # [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Ll # GEORGIAN SMALL LETTER YN 2D2D ; Ll # GEORGIAN SMALL LETTER AEN A641 ; Ll # CYRILLIC SMALL LETTER ZEMLYA A643 ; Ll # CYRILLIC SMALL LETTER DZELO A645 ; Ll # CYRILLIC SMALL LETTER REVERSED DZE A647 ; Ll # CYRILLIC SMALL LETTER IOTA A649 ; Ll # CYRILLIC SMALL LETTER DJERV A64B ; Ll # CYRILLIC SMALL LETTER MONOGRAPH UK A64D ; Ll # CYRILLIC SMALL LETTER BROAD OMEGA A64F ; Ll # CYRILLIC SMALL LETTER NEUTRAL YER A651 ; Ll # CYRILLIC SMALL LETTER YERU WITH BACK YER A653 ; Ll # CYRILLIC SMALL LETTER IOTIFIED YAT A655 ; Ll # CYRILLIC SMALL LETTER REVERSED YU A657 ; Ll # CYRILLIC SMALL LETTER IOTIFIED A A659 ; Ll # CYRILLIC SMALL LETTER CLOSED LITTLE YUS A65B ; Ll # CYRILLIC SMALL LETTER BLENDED YUS A65D ; Ll # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS A65F ; Ll # CYRILLIC SMALL LETTER YN A661 ; Ll # CYRILLIC SMALL LETTER REVERSED TSE A663 ; Ll # CYRILLIC SMALL LETTER SOFT DE A665 ; Ll # CYRILLIC SMALL LETTER SOFT EL A667 ; Ll # CYRILLIC SMALL LETTER SOFT EM A669 ; Ll # CYRILLIC SMALL LETTER MONOCULAR O A66B ; Ll # CYRILLIC SMALL LETTER BINOCULAR O A66D ; Ll # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A681 ; Ll # CYRILLIC SMALL LETTER DWE A683 ; Ll # CYRILLIC SMALL LETTER DZWE A685 ; Ll # CYRILLIC SMALL LETTER ZHWE A687 ; Ll # CYRILLIC SMALL LETTER CCHE A689 ; Ll # CYRILLIC SMALL LETTER DZZE A68B ; Ll # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK A68D ; Ll # CYRILLIC SMALL LETTER TWE A68F ; Ll # CYRILLIC SMALL LETTER TSWE A691 ; Ll # CYRILLIC SMALL LETTER TSSE A693 ; Ll # CYRILLIC SMALL LETTER TCHE A695 ; Ll # CYRILLIC SMALL LETTER HWE A697 ; Ll # CYRILLIC SMALL LETTER SHWE A699 ; Ll # CYRILLIC SMALL LETTER DOUBLE O A69B ; Ll # CYRILLIC SMALL LETTER CROSSED O A723 ; Ll # LATIN SMALL LETTER EGYPTOLOGICAL ALEF A725 ; Ll # LATIN SMALL LETTER EGYPTOLOGICAL AIN A727 ; Ll # LATIN SMALL LETTER HENG A729 ; Ll # LATIN SMALL LETTER TZ A72B ; Ll # LATIN SMALL LETTER TRESILLO A72D ; Ll # LATIN SMALL LETTER CUATRILLO A72F..A731 ; Ll # [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S A733 ; Ll # LATIN SMALL LETTER AA A735 ; Ll # LATIN SMALL LETTER AO A737 ; Ll # LATIN SMALL LETTER AU A739 ; Ll # LATIN SMALL LETTER AV A73B ; Ll # LATIN SMALL LETTER AV WITH HORIZONTAL BAR A73D ; Ll # LATIN SMALL LETTER AY A73F ; Ll # LATIN SMALL LETTER REVERSED C WITH DOT A741 ; Ll # LATIN SMALL LETTER K WITH STROKE A743 ; Ll # LATIN SMALL LETTER K WITH DIAGONAL STROKE A745 ; Ll # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE A747 ; Ll # LATIN SMALL LETTER BROKEN L A749 ; Ll # LATIN SMALL LETTER L WITH HIGH STROKE A74B ; Ll # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY A74D ; Ll # LATIN SMALL LETTER O WITH LOOP A74F ; Ll # LATIN SMALL LETTER OO A751 ; Ll # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER A753 ; Ll # LATIN SMALL LETTER P WITH FLOURISH A755 ; Ll # LATIN SMALL LETTER P WITH SQUIRREL TAIL A757 ; Ll # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER A759 ; Ll # LATIN SMALL LETTER Q WITH DIAGONAL STROKE A75B ; Ll # LATIN SMALL LETTER R ROTUNDA A75D ; Ll # LATIN SMALL LETTER RUM ROTUNDA A75F ; Ll # LATIN SMALL LETTER V WITH DIAGONAL STROKE A761 ; Ll # LATIN SMALL LETTER VY A763 ; Ll # LATIN SMALL LETTER VISIGOTHIC Z A765 ; Ll # LATIN SMALL LETTER THORN WITH STROKE A767 ; Ll # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER A769 ; Ll # LATIN SMALL LETTER VEND A76B ; Ll # LATIN SMALL LETTER ET A76D ; Ll # LATIN SMALL LETTER IS A76F ; Ll # LATIN SMALL LETTER CON A771..A778 ; Ll # [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM A77A ; Ll # LATIN SMALL LETTER INSULAR D A77C ; Ll # LATIN SMALL LETTER INSULAR F A77F ; Ll # LATIN SMALL LETTER TURNED INSULAR G A781 ; Ll # LATIN SMALL LETTER TURNED L A783 ; Ll # LATIN SMALL LETTER INSULAR R A785 ; Ll # LATIN SMALL LETTER INSULAR S A787 ; Ll # LATIN SMALL LETTER INSULAR T A78C ; Ll # LATIN SMALL LETTER SALTILLO A78E ; Ll # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A791 ; Ll # LATIN SMALL LETTER N WITH DESCENDER A793..A795 ; Ll # [3] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER H WITH PALATAL HOOK A797 ; Ll # LATIN SMALL LETTER B WITH FLOURISH A799 ; Ll # LATIN SMALL LETTER F WITH STROKE A79B ; Ll # LATIN SMALL LETTER VOLAPUK AE A79D ; Ll # LATIN SMALL LETTER VOLAPUK OE A79F ; Ll # LATIN SMALL LETTER VOLAPUK UE A7A1 ; Ll # LATIN SMALL LETTER G WITH OBLIQUE STROKE A7A3 ; Ll # LATIN SMALL LETTER K WITH OBLIQUE STROKE A7A5 ; Ll # LATIN SMALL LETTER N WITH OBLIQUE STROKE A7A7 ; Ll # LATIN SMALL LETTER R WITH OBLIQUE STROKE A7A9 ; Ll # LATIN SMALL LETTER S WITH OBLIQUE STROKE A7AF ; Ll # LATIN LETTER SMALL CAPITAL Q A7B5 ; Ll # LATIN SMALL LETTER BETA A7B7 ; Ll # LATIN SMALL LETTER OMEGA A7B9 ; Ll # LATIN SMALL LETTER U WITH STROKE A7BB ; Ll # LATIN SMALL LETTER GLOTTAL A A7BD ; Ll # LATIN SMALL LETTER GLOTTAL I A7BF ; Ll # LATIN SMALL LETTER GLOTTAL U A7C1 ; Ll # LATIN SMALL LETTER OLD POLISH O A7C3 ; Ll # LATIN SMALL LETTER ANGLICANA W A7C8 ; Ll # LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY A7CA ; Ll # LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY A7CD ; Ll # LATIN SMALL LETTER S WITH DIAGONAL STROKE A7CF ; Ll # LATIN SMALL LETTER PHARYNGEAL VOICED FRICATIVE A7D1 ; Ll # LATIN SMALL LETTER CLOSED INSULAR G A7D3 ; Ll # LATIN SMALL LETTER DOUBLE THORN A7D5 ; Ll # LATIN SMALL LETTER DOUBLE WYNN A7D7 ; Ll # LATIN SMALL LETTER MIDDLE SCOTS S A7D9 ; Ll # LATIN SMALL LETTER SIGMOID S A7DB ; Ll # LATIN SMALL LETTER LAMBDA A7F6 ; Ll # LATIN SMALL LETTER REVERSED HALF H A7FA ; Ll # LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Ll # [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB60..AB68 ; Ll # [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE AB70..ABBF ; Ll # [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Ll # [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Ll # [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF41..FF5A ; Ll # [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Ll # [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Ll # [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10597..105A1 ; Ll # [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA 105A3..105B1 ; Ll # [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE 105B3..105B9 ; Ll # [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE 105BB..105BC ; Ll # [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE 10CC0..10CF2 ; Ll # [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10D70..10D85 ; Ll # [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 118C0..118DF ; Ll # [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 16E60..16E7F ; Ll # [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y 16EBB..16ED3 ; Ll # [25] BERIA ERFE SMALL LETTER ARKAB..BERIA ERFE SMALL LETTER AY 1D41A..1D433 ; Ll # [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z 1D44E..1D454 ; Ll # [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G 1D456..1D467 ; Ll # [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z 1D482..1D49B ; Ll # [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z 1D4B6..1D4B9 ; Ll # [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D 1D4BB ; Ll # MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; Ll # [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D4CF ; Ll # [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z 1D4EA..1D503 ; Ll # [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z 1D51E..1D537 ; Ll # [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z 1D552..1D56B ; Ll # [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z 1D586..1D59F ; Ll # [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z 1D5BA..1D5D3 ; Ll # [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z 1D5EE..1D607 ; Ll # [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z 1D622..1D63B ; Ll # [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z 1D656..1D66F ; Ll # [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z 1D68A..1D6A5 ; Ll # [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6C2..1D6DA ; Ll # [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6E1 ; Ll # [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL 1D6FC..1D714 ; Ll # [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D71B ; Ll # [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL 1D736..1D74E ; Ll # [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D755 ; Ll # [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL 1D770..1D788 ; Ll # [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D78F ; Ll # [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL 1D7AA..1D7C2 ; Ll # [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7C9 ; Ll # [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL 1D7CB ; Ll # MATHEMATICAL BOLD SMALL DIGAMMA 1DF00..1DF09 ; Ll # [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0B..1DF1E ; Ll # [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL 1DF25..1DF2A ; Ll # [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E922..1E943 ; Ll # [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA # Total code points: 2283 # ================================================ # General_Category=Titlecase_Letter 01C5 ; Lt # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON 01C8 ; Lt # LATIN CAPITAL LETTER L WITH SMALL LETTER J 01CB ; Lt # LATIN CAPITAL LETTER N WITH SMALL LETTER J 01F2 ; Lt # LATIN CAPITAL LETTER D WITH SMALL LETTER Z 1F88..1F8F ; Lt # [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1F98..1F9F ; Lt # [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1FA8..1FAF ; Lt # [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1FBC ; Lt # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FCC ; Lt # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FFC ; Lt # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI # Total code points: 31 # ================================================ # General_Category=Modifier_Letter 02B0..02C1 ; Lm # [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C6..02D1 ; Lm # [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02E0..02E4 ; Lm # [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02EC ; Lm # MODIFIER LETTER VOICING 02EE ; Lm # MODIFIER LETTER DOUBLE APOSTROPHE 0374 ; Lm # GREEK NUMERAL SIGN 037A ; Lm # GREEK YPOGEGRAMMENI 0559 ; Lm # ARMENIAN MODIFIER LETTER LEFT HALF RING 0640 ; Lm # ARABIC TATWEEL 06E5..06E6 ; Lm # [2] ARABIC SMALL WAW..ARABIC SMALL YEH 07F4..07F5 ; Lm # [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; Lm # NKO LAJANYALAN 081A ; Lm # SAMARITAN MODIFIER LETTER EPENTHETIC YUT 0824 ; Lm # SAMARITAN MODIFIER LETTER SHORT A 0828 ; Lm # SAMARITAN MODIFIER LETTER I 08C9 ; Lm # ARABIC SMALL FARSI YEH 0971 ; Lm # DEVANAGARI SIGN HIGH SPACING DOT 0E46 ; Lm # THAI CHARACTER MAIYAMOK 0EC6 ; Lm # LAO KO LA 10FC ; Lm # MODIFIER LETTER GEORGIAN NAR 17D7 ; Lm # KHMER SIGN LEK TOO 1843 ; Lm # MONGOLIAN LETTER TODO LONG VOWEL SIGN 1AA7 ; Lm # TAI THAM SIGN MAI YAMOK 1C78..1C7D ; Lm # [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1D2C..1D6A ; Lm # [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D78 ; Lm # MODIFIER LETTER CYRILLIC EN 1D9B..1DBF ; Lm # [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 2071 ; Lm # SUPERSCRIPT LATIN SMALL LETTER I 207F ; Lm # SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; Lm # [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 2C7C..2C7D ; Lm # [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2D6F ; Lm # TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2E2F ; Lm # VERTICAL TILDE 3005 ; Lm # IDEOGRAPHIC ITERATION MARK 3031..3035 ; Lm # [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 303B ; Lm # VERTICAL IDEOGRAPHIC ITERATION MARK 309D..309E ; Lm # [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 30FC..30FE ; Lm # [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK A015 ; Lm # YI SYLLABLE WU A4F8..A4FD ; Lm # [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A60C ; Lm # VAI SYLLABLE LENGTHENER A67F ; Lm # CYRILLIC PAYEROK A69C..A69D ; Lm # [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A717..A71F ; Lm # [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A770 ; Lm # MODIFIER LETTER US A788 ; Lm # MODIFIER LETTER LOW CIRCUMFLEX ACCENT A7F1..A7F4 ; Lm # [4] MODIFIER LETTER CAPITAL S..MODIFIER LETTER CAPITAL Q A7F8..A7F9 ; Lm # [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A9CF ; Lm # JAVANESE PANGRANGKEP A9E6 ; Lm # MYANMAR MODIFIER LETTER SHAN REDUPLICATION AA70 ; Lm # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AADD ; Lm # TAI VIET SYMBOL SAM AAF3..AAF4 ; Lm # [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AB5C..AB5F ; Lm # [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB69 ; Lm # MODIFIER LETTER SMALL TURNED W FF70 ; Lm # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF9E..FF9F ; Lm # [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK 10780..10785 ; Lm # [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK 10787..107B0 ; Lm # [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK 107B2..107BA ; Lm # [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10D4E ; Lm # GARAY VOWEL LENGTH MARK 10D6F ; Lm # GARAY REDUPLICATION MARK 10EC5 ; Lm # ARABIC SMALL YEH BARREE WITH TWO DOTS BELOW 11DD9 ; Lm # TOLONG SIKI SIGN SELA 16B40..16B43 ; Lm # [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16D40..16D42 ; Lm # [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA 16D6B..16D6C ; Lm # [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT 16F93..16F9F ; Lm # [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0..16FE1 ; Lm # [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK 16FE3 ; Lm # OLD CHINESE ITERATION MARK 16FF2..16FF3 ; Lm # [2] CHINESE SMALL SIMPLIFIED ER..CHINESE SMALL TRADITIONAL ER 1AFF0..1AFF3 ; Lm # [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 1AFF5..1AFFB ; Lm # [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 1AFFD..1AFFE ; Lm # [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1E030..1E06D ; Lm # [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E137..1E13D ; Lm # [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E4EB ; Lm # NAG MUNDARI SIGN OJOD 1E6FF ; Lm # TAI YO XAM LAI 1E94B ; Lm # ADLAM NASALIZATION MARK # Total code points: 410 # ================================================ # General_Category=Other_Letter 00AA ; Lo # FEMININE ORDINAL INDICATOR 00BA ; Lo # MASCULINE ORDINAL INDICATOR 01BB ; Lo # LATIN LETTER TWO WITH STROKE 01C0..01C3 ; Lo # [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 0294..0295 ; Lo # [2] LATIN LETTER GLOTTAL STOP..LATIN LETTER PHARYNGEAL VOICED FRICATIVE 05D0..05EA ; Lo # [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05EF..05F2 ; Lo # [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD 0620..063F ; Lo # [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0641..064A ; Lo # [10] ARABIC LETTER FEH..ARABIC LETTER YEH 066E..066F ; Lo # [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; Lo # [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D5 ; Lo # ARABIC LETTER AE 06EE..06EF ; Lo # [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06FA..06FC ; Lo # [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FF ; Lo # ARABIC LETTER HEH WITH INVERTED V 0710 ; Lo # SYRIAC LETTER ALAPH 0712..072F ; Lo # [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 074D..07A5 ; Lo # [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07B1 ; Lo # THAANA LETTER NAA 07CA..07EA ; Lo # [33] NKO LETTER A..NKO LETTER JONA RA 0800..0815 ; Lo # [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 0840..0858 ; Lo # [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0860..086A ; Lo # [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA 0870..0887 ; Lo # [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT 0889..088F ; Lo # [7] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC LETTER NOON WITH RING ABOVE 08A0..08C8 ; Lo # [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF 0904..0939 ; Lo # [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; Lo # DEVANAGARI SIGN AVAGRAHA 0950 ; Lo # DEVANAGARI OM 0958..0961 ; Lo # [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0972..0980 ; Lo # [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0985..098C ; Lo # [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; Lo # [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; Lo # [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; Lo # [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; Lo # BENGALI LETTER LA 09B6..09B9 ; Lo # [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BD ; Lo # BENGALI SIGN AVAGRAHA 09CE ; Lo # BENGALI LETTER KHANDA TA 09DC..09DD ; Lo # [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; Lo # [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09F0..09F1 ; Lo # [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 09FC ; Lo # BENGALI LETTER VEDIC ANUSVARA 0A05..0A0A ; Lo # [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; Lo # [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; Lo # [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; Lo # [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; Lo # [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; Lo # [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; Lo # [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A59..0A5C ; Lo # [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; Lo # GURMUKHI LETTER FA 0A72..0A74 ; Lo # [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A85..0A8D ; Lo # [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; Lo # [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; Lo # [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; Lo # [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; Lo # [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; Lo # [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABD ; Lo # GUJARATI SIGN AVAGRAHA 0AD0 ; Lo # GUJARATI OM 0AE0..0AE1 ; Lo # [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AF9 ; Lo # GUJARATI LETTER ZHA 0B05..0B0C ; Lo # [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; Lo # [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; Lo # [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; Lo # [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; Lo # [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; Lo # [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3D ; Lo # ORIYA SIGN AVAGRAHA 0B5C..0B5D ; Lo # [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; Lo # [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B71 ; Lo # ORIYA LETTER WA 0B83 ; Lo # TAMIL SIGN VISARGA 0B85..0B8A ; Lo # [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; Lo # [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; Lo # [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; Lo # [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; Lo # TAMIL LETTER JA 0B9E..0B9F ; Lo # [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; Lo # [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; Lo # [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; Lo # [12] TAMIL LETTER MA..TAMIL LETTER HA 0BD0 ; Lo # TAMIL OM 0C05..0C0C ; Lo # [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; Lo # [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; Lo # [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; Lo # [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; Lo # TELUGU SIGN AVAGRAHA 0C58..0C5A ; Lo # [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C5C..0C5D ; Lo # [2] TELUGU ARCHAIC SHRII..TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; Lo # [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C80 ; Lo # KANNADA SIGN SPACING CANDRABINDU 0C85..0C8C ; Lo # [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; Lo # [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; Lo # [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; Lo # [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; Lo # [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; Lo # KANNADA SIGN AVAGRAHA 0CDC..0CDE ; Lo # [3] KANNADA ARCHAIC SHRII..KANNADA LETTER FA 0CE0..0CE1 ; Lo # [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CF1..0CF2 ; Lo # [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D04..0D0C ; Lo # [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; Lo # [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; Lo # [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; Lo # MALAYALAM SIGN AVAGRAHA 0D4E ; Lo # MALAYALAM LETTER DOT REPH 0D54..0D56 ; Lo # [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D5F..0D61 ; Lo # [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D7A..0D7F ; Lo # [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D85..0D96 ; Lo # [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; Lo # [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; Lo # [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; Lo # SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; Lo # [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0E01..0E30 ; Lo # [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E32..0E33 ; Lo # [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E40..0E45 ; Lo # [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E81..0E82 ; Lo # [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; Lo # LAO LETTER KHO TAM 0E86..0E8A ; Lo # [5] LAO LETTER PALI GHA..LAO LETTER SO TAM 0E8C..0EA3 ; Lo # [24] LAO LETTER PALI JHA..LAO LETTER LO LING 0EA5 ; Lo # LAO LETTER LO LOOT 0EA7..0EB0 ; Lo # [10] LAO LETTER WO..LAO VOWEL SIGN A 0EB2..0EB3 ; Lo # [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EBD ; Lo # LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; Lo # [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EDC..0EDF ; Lo # [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; Lo # TIBETAN SYLLABLE OM 0F40..0F47 ; Lo # [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; Lo # [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F88..0F8C ; Lo # [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 1000..102A ; Lo # [43] MYANMAR LETTER KA..MYANMAR LETTER AU 103F ; Lo # MYANMAR LETTER GREAT SA 1050..1055 ; Lo # [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 105A..105D ; Lo # [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 1061 ; Lo # MYANMAR LETTER SGAW KAREN SHA 1065..1066 ; Lo # [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 106E..1070 ; Lo # [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1075..1081 ; Lo # [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 108E ; Lo # MYANMAR LETTER RUMAI PALAUNG FA 1100..1248 ; Lo # [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA 124A..124D ; Lo # [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; Lo # [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; Lo # ETHIOPIC SYLLABLE QHWA 125A..125D ; Lo # [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; Lo # [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; Lo # [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; Lo # [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; Lo # [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; Lo # [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; Lo # ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; Lo # [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; Lo # [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; Lo # [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; Lo # [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; Lo # [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 1380..138F ; Lo # [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 1401..166C ; Lo # [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; Lo # [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; Lo # [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 16A0..16EA ; Lo # [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16F1..16F8 ; Lo # [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..1711 ; Lo # [18] TAGALOG LETTER A..TAGALOG LETTER HA 171F..1731 ; Lo # [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA 1740..1751 ; Lo # [18] BUHID LETTER A..BUHID LETTER HA 1760..176C ; Lo # [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; Lo # [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1780..17B3 ; Lo # [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17DC ; Lo # KHMER SIGN AVAKRAHASANYA 1820..1842 ; Lo # [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1844..1878 ; Lo # [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS 1880..1884 ; Lo # [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1887..18A8 ; Lo # [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18AA ; Lo # MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; Lo # [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; Lo # [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1950..196D ; Lo # [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; Lo # [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; Lo # [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; Lo # [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 1A00..1A16 ; Lo # [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A20..1A54 ; Lo # [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1B05..1B33 ; Lo # [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B45..1B4C ; Lo # [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B83..1BA0 ; Lo # [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BAE..1BAF ; Lo # [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBA..1BE5 ; Lo # [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1C00..1C23 ; Lo # [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C4D..1C4F ; Lo # [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; Lo # [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1CE9..1CEC ; Lo # [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CEE..1CF3 ; Lo # [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA 1CF5..1CF6 ; Lo # [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1CFA ; Lo # VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA 2135..2138 ; Lo # [4] ALEF SYMBOL..DALET SYMBOL 2D30..2D67 ; Lo # [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D80..2D96 ; Lo # [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; Lo # [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; Lo # [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; Lo # [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; Lo # [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; Lo # [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; Lo # [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; Lo # [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; Lo # [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 3006 ; Lo # IDEOGRAPHIC CLOSING MARK 303C ; Lo # MASU MARK 3041..3096 ; Lo # [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 309F ; Lo # HIRAGANA DIGRAPH YORI 30A1..30FA ; Lo # [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FF ; Lo # KATAKANA DIGRAPH KOTO 3105..312F ; Lo # [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN 3131..318E ; Lo # [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 31A0..31BF ; Lo # [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31F0..31FF ; Lo # [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DBF ; Lo # [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF 4E00..A014 ; Lo # [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E A016..A48C ; Lo # [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; Lo # [40] LISU LETTER BA..LISU LETTER OE A500..A60B ; Lo # [268] VAI SYLLABLE EE..VAI SYLLABLE NG A610..A61F ; Lo # [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A62A..A62B ; Lo # [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A66E ; Lo # CYRILLIC LETTER MULTIOCULAR O A6A0..A6E5 ; Lo # [70] BAMUM LETTER A..BAMUM LETTER KI A78F ; Lo # LATIN LETTER SINOLOGICAL DOT A7F7 ; Lo # LATIN EPIGRAPHIC LETTER SIDEWAYS I A7FB..A801 ; Lo # [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A803..A805 ; Lo # [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A807..A80A ; Lo # [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80C..A822 ; Lo # [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A840..A873 ; Lo # [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A882..A8B3 ; Lo # [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8F2..A8F7 ; Lo # [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; Lo # DEVANAGARI HEADSTROKE A8FD..A8FE ; Lo # [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY A90A..A925 ; Lo # [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A930..A946 ; Lo # [23] REJANG LETTER KA..REJANG LETTER A A960..A97C ; Lo # [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A984..A9B2 ; Lo # [47] JAVANESE LETTER A..JAVANESE LETTER HA A9E0..A9E4 ; Lo # [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E7..A9EF ; Lo # [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9FA..A9FE ; Lo # [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; Lo # [41] CHAM LETTER A..CHAM LETTER HA AA40..AA42 ; Lo # [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA44..AA4B ; Lo # [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA60..AA6F ; Lo # [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA71..AA76 ; Lo # [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA7A ; Lo # MYANMAR LETTER AITON RA AA7E..AAAF ; Lo # [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB1 ; Lo # TAI VIET VOWEL AA AAB5..AAB6 ; Lo # [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9..AABD ; Lo # [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AAC0 ; Lo # TAI VIET TONE MAI NUENG AAC2 ; Lo # TAI VIET TONE MAI SONG AADB..AADC ; Lo # [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AAE0..AAEA ; Lo # [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAF2 ; Lo # MEETEI MAYEK ANJI AB01..AB06 ; Lo # [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; Lo # [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; Lo # [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; Lo # [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; Lo # [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO ABC0..ABE2 ; Lo # [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM AC00..D7A3 ; Lo # [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; Lo # [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; Lo # [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; Lo # [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Lo # [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB1D ; Lo # HEBREW LETTER YOD WITH HIRIQ FB1F..FB28 ; Lo # [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB2A..FB36 ; Lo # [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; Lo # [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; Lo # HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; Lo # [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; Lo # [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; Lo # [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FD3D ; Lo # [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD50..FD8F ; Lo # [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; Lo # [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDFB ; Lo # [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FE70..FE74 ; Lo # [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; Lo # [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF66..FF6F ; Lo # [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF71..FF9D ; Lo # [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FFA0..FFBE ; Lo # [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; Lo # [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; Lo # [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; Lo # [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; Lo # [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I 10000..1000B ; Lo # [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; Lo # [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; Lo # [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; Lo # [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; Lo # [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; Lo # [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; Lo # [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10280..1029C ; Lo # [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; Lo # [49] CARIAN LETTER A..CARIAN LETTER UUU3 10300..1031F ; Lo # [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 1032D..10340 ; Lo # [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA 10342..10349 ; Lo # [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 10350..10375 ; Lo # [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10380..1039D ; Lo # [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 103A0..103C3 ; Lo # [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; Lo # [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 10450..1049D ; Lo # [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 10500..10527 ; Lo # [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; Lo # [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 105C0..105F3 ; Lo # [52] TODHRI LETTER A..TODHRI LETTER OO 10600..10736 ; Lo # [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; Lo # [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; Lo # [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; Lo # [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; Lo # CYPRIOT SYLLABLE JO 1080A..10835 ; Lo # [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; Lo # [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; Lo # CYPRIOT SYLLABLE ZA 1083F..10855 ; Lo # [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; Lo # [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; Lo # [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108E0..108F2 ; Lo # [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; Lo # [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; Lo # [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; Lo # [26] LYDIAN LETTER A..LYDIAN LETTER C 10940..10959 ; Lo # [26] SIDETIC LETTER N01..SIDETIC LETTER N26 10980..109B7 ; Lo # [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; Lo # [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 10A00 ; Lo # KHAROSHTHI LETTER A 10A10..10A13 ; Lo # [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; Lo # [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A35 ; Lo # [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA 10A60..10A7C ; Lo # [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A80..10A9C ; Lo # [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10AC0..10AC7 ; Lo # [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; Lo # [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10B00..10B35 ; Lo # [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B40..10B55 ; Lo # [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B60..10B72 ; Lo # [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; Lo # [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; Lo # [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10D00..10D23 ; Lo # [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA 10D4A..10D4D ; Lo # [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE 10D4F ; Lo # GARAY SUKUN 10E80..10EA9 ; Lo # [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EB0..10EB1 ; Lo # [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE 10EC2..10EC4 ; Lo # [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW 10EC6..10EC7 ; Lo # [2] ARABIC LETTER THIN NOON..ARABIC LETTER YEH WITH FOUR DOTS BELOW 10F00..10F1C ; Lo # [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; Lo # OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; Lo # [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN 10F70..10F81 ; Lo # [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH 10FB0..10FC4 ; Lo # [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW 10FE0..10FF6 ; Lo # [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11003..11037 ; Lo # [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11071..11072 ; Lo # [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O 11075 ; Lo # BRAHMI LETTER OLD TAMIL LLA 11083..110AF ; Lo # [45] KAITHI LETTER A..KAITHI LETTER HA 110D0..110E8 ; Lo # [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11103..11126 ; Lo # [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 11144 ; Lo # CHAKMA LETTER LHAA 11147 ; Lo # CHAKMA LETTER VAA 11150..11172 ; Lo # [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11176 ; Lo # MAHAJANI LIGATURE SHRI 11183..111B2 ; Lo # [48] SHARADA LETTER A..SHARADA LETTER HA 111C1..111C4 ; Lo # [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111DA ; Lo # SHARADA EKAM 111DC ; Lo # SHARADA HEADSTROKE 11200..11211 ; Lo # [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; Lo # [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 1123F..11240 ; Lo # [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I 11280..11286 ; Lo # [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; Lo # MULTANI LETTER GHA 1128A..1128D ; Lo # [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; Lo # [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; Lo # [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; Lo # [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 11305..1130C ; Lo # [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Lo # [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; Lo # [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; Lo # [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; Lo # [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; Lo # [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; Lo # GRANTHA SIGN AVAGRAHA 11350 ; Lo # GRANTHA OM 1135D..11361 ; Lo # [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11380..11389 ; Lo # [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL 1138B ; Lo # TULU-TIGALARI LETTER EE 1138E ; Lo # TULU-TIGALARI LETTER AI 11390..113B5 ; Lo # [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA 113B7 ; Lo # TULU-TIGALARI SIGN AVAGRAHA 113D1 ; Lo # TULU-TIGALARI REPHA 113D3 ; Lo # TULU-TIGALARI SIGN PLUTA 11400..11434 ; Lo # [53] NEWA LETTER A..NEWA LETTER HA 11447..1144A ; Lo # [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 1145F..11461 ; Lo # [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA 11480..114AF ; Lo # [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114C4..114C5 ; Lo # [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; Lo # TIRHUTA OM 11580..115AE ; Lo # [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115D8..115DB ; Lo # [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1162F ; Lo # [48] MODI LETTER A..MODI LETTER LLA 11644 ; Lo # MODI SIGN HUVA 11680..116AA ; Lo # [43] TAKRI LETTER A..TAKRI LETTER RRA 116B8 ; Lo # TAKRI LETTER ARCHAIC KHA 11700..1171A ; Lo # [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA 11740..11746 ; Lo # [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B ; Lo # [44] DOGRA LETTER A..DOGRA LETTER RRA 118FF..11906 ; Lo # [8] WARANG CITI OM..DIVES AKURU LETTER E 11909 ; Lo # DIVES AKURU LETTER O 1190C..11913 ; Lo # [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA 11915..11916 ; Lo # [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA 11918..1192F ; Lo # [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA 1193F ; Lo # DIVES AKURU PREFIXED NASAL SIGN 11941 ; Lo # DIVES AKURU INITIAL RA 119A0..119A7 ; Lo # [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR 119AA..119D0 ; Lo # [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA 119E1 ; Lo # NANDINAGARI SIGN AVAGRAHA 119E3 ; Lo # NANDINAGARI HEADSTROKE 11A00 ; Lo # ZANABAZAR SQUARE LETTER A 11A0B..11A32 ; Lo # [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA 11A3A ; Lo # ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA 11A50 ; Lo # SOYOMBO LETTER A 11A5C..11A89 ; Lo # [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA 11A9D ; Lo # SOYOMBO MARK PLUTA 11AB0..11AF8 ; Lo # [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL 11BC0..11BE0 ; Lo # [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO 11C00..11C08 ; Lo # [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; Lo # [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C40 ; Lo # BHAIKSUKI SIGN AVAGRAHA 11C72..11C8F ; Lo # [30] MARCHEN LETTER KA..MARCHEN LETTER A 11D00..11D06 ; Lo # [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E 11D08..11D09 ; Lo # [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O 11D0B..11D30 ; Lo # [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA 11D46 ; Lo # MASARAM GONDI REPHA 11D60..11D65 ; Lo # [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU 11D67..11D68 ; Lo # [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI 11D6A..11D89 ; Lo # [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA 11D98 ; Lo # GUNJALA GONDI OM 11DB0..11DD8 ; Lo # [41] TOLONG SIKI LETTER I..TOLONG SIKI LETTER RRH 11DDA..11DDB ; Lo # [2] TOLONG SIKI SIGN HECAKA..TOLONG SIKI UNGGA 11EE0..11EF2 ; Lo # [19] MAKASAR LETTER KA..MAKASAR ANGKA 11F02 ; Lo # KAWI SIGN REPHA 11F04..11F10 ; Lo # [13] KAWI LETTER A..KAWI LETTER O 11F12..11F33 ; Lo # [34] KAWI LETTER KA..KAWI LETTER JNYA 11FB0 ; Lo # LISU LETTER YHA 12000..12399 ; Lo # [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12480..12543 ; Lo # [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0 ; Lo # [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 13000..1342F ; Lo # [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D 13441..13446 ; Lo # [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN 13460..143FA ; Lo # [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA 14400..14646 ; Lo # [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16100..1611D ; Lo # [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA 16800..16A38 ; Lo # [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; Lo # [31] MRO LETTER TA..MRO LETTER TEK 16A70..16ABE ; Lo # [79] TANGSA LETTER OZ..TANGSA LETTER ZA 16AD0..16AED ; Lo # [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; Lo # [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B63..16B77 ; Lo # [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; Lo # [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16D43..16D6A ; Lo # [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU 16F00..16F4A ; Lo # [75] MIAO LETTER PA..MIAO LETTER RTE 16F50 ; Lo # MIAO LETTER NASALIZATION 17000..18CD5 ; Lo # [7382] TANGUT IDEOGRAPH-17000..KHITAN SMALL SCRIPT CHARACTER-18CD5 18CFF..18D1E ; Lo # [32] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D1E 18D80..18DF2 ; Lo # [115] TANGUT COMPONENT-769..TANGUT COMPONENT-883 1B000..1B122 ; Lo # [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU 1B132 ; Lo # HIRAGANA LETTER SMALL KO 1B150..1B152 ; Lo # [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO 1B155 ; Lo # KATAKANA LETTER SMALL KO 1B164..1B167 ; Lo # [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; Lo # [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; Lo # [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; Lo # [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; Lo # [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; Lo # [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1DF0A ; Lo # LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1E100..1E12C ; Lo # [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E14E ; Lo # NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ 1E290..1E2AD ; Lo # [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; Lo # [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E4D0..1E4EA ; Lo # [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL 1E5D0..1E5ED ; Lo # [30] OL ONAL LETTER O..OL ONAL LETTER EG 1E5F0 ; Lo # OL ONAL SIGN HODDOND 1E6C0..1E6DE ; Lo # [31] TAI YO LETTER LOW KO..TAI YO LETTER HIGH KVO 1E6E0..1E6E2 ; Lo # [3] TAI YO LETTER AA..TAI YO LETTER UE 1E6E4..1E6E5 ; Lo # [2] TAI YO LETTER U..TAI YO LETTER AE 1E6E7..1E6ED ; Lo # [7] TAI YO LETTER O..TAI YO LETTER AUE 1E6F0..1E6F4 ; Lo # [5] TAI YO LETTER AN..TAI YO LETTER AP 1E6FE ; Lo # TAI YO SYMBOL MUEANG 1E7E0..1E7E6 ; Lo # [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB ; Lo # [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE ; Lo # [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE 1E7F0..1E7FE ; Lo # [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4 ; Lo # [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1EE00..1EE03 ; Lo # [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; Lo # [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; Lo # [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; Lo # ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; Lo # ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; Lo # [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; Lo # [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; Lo # ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; Lo # ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; Lo # ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; Lo # ARABIC MATHEMATICAL TAILED HAH 1EE49 ; Lo # ARABIC MATHEMATICAL TAILED YEH 1EE4B ; Lo # ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; Lo # [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; Lo # [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; Lo # ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; Lo # ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; Lo # ARABIC MATHEMATICAL TAILED DAD 1EE5B ; Lo # ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; Lo # ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; Lo # ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; Lo # [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; Lo # ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; Lo # [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; Lo # [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; Lo # [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; Lo # [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; Lo # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; Lo # [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; Lo # [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; Lo # [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; Lo # [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; Lo # [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6DF ; Lo # [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF 2A700..2B81D ; Lo # [4382] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEAD ; Lo # [5774] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEAD 2CEB0..2EBE0 ; Lo # [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2EBF0..2EE5D ; Lo # [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; Lo # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; Lo # [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A 31350..33479 ; Lo # [8490] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-33479 # Total code points: 141062 # ================================================ # General_Category=Nonspacing_Mark 0300..036F ; Mn # [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X 0483..0487 ; Mn # [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE 0591..05BD ; Mn # [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG 05BF ; Mn # HEBREW POINT RAFE 05C1..05C2 ; Mn # [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT 05C4..05C5 ; Mn # [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT 05C7 ; Mn # HEBREW POINT QAMATS QATAN 0610..061A ; Mn # [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 064B..065F ; Mn # [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW 0670 ; Mn # ARABIC LETTER SUPERSCRIPT ALEF 06D6..06DC ; Mn # [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN 06DF..06E4 ; Mn # [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA 06E7..06E8 ; Mn # [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON 06EA..06ED ; Mn # [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM 0711 ; Mn # SYRIAC LETTER SUPERSCRIPT ALAPH 0730..074A ; Mn # [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH 07A6..07B0 ; Mn # [11] THAANA ABAFILI..THAANA SUKUN 07EB..07F3 ; Mn # [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07FD ; Mn # NKO DANTAYALAN 0816..0819 ; Mn # [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH 081B..0823 ; Mn # [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0825..0827 ; Mn # [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082D ; Mn # [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Mn # [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 0897..089F ; Mn # [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA 08CA..08E1 ; Mn # [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E3..0902 ; Mn # [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 093A ; Mn # DEVANAGARI VOWEL SIGN OE 093C ; Mn # DEVANAGARI SIGN NUKTA 0941..0948 ; Mn # [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 094D ; Mn # DEVANAGARI SIGN VIRAMA 0951..0957 ; Mn # [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE 0962..0963 ; Mn # [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 0981 ; Mn # BENGALI SIGN CANDRABINDU 09BC ; Mn # BENGALI SIGN NUKTA 09C1..09C4 ; Mn # [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09CD ; Mn # BENGALI SIGN VIRAMA 09E2..09E3 ; Mn # [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 09FE ; Mn # BENGALI SANDHI MARK 0A01..0A02 ; Mn # [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A3C ; Mn # GURMUKHI SIGN NUKTA 0A41..0A42 ; Mn # [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; Mn # [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4D ; Mn # [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA 0A51 ; Mn # GURMUKHI SIGN UDAAT 0A70..0A71 ; Mn # [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A75 ; Mn # GURMUKHI SIGN YAKASH 0A81..0A82 ; Mn # [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0ABC ; Mn # GUJARATI SIGN NUKTA 0AC1..0AC5 ; Mn # [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; Mn # [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0ACD ; Mn # GUJARATI SIGN VIRAMA 0AE2..0AE3 ; Mn # [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0AFA..0AFF ; Mn # [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE 0B01 ; Mn # ORIYA SIGN CANDRABINDU 0B3C ; Mn # ORIYA SIGN NUKTA 0B3F ; Mn # ORIYA VOWEL SIGN I 0B41..0B44 ; Mn # [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B4D ; Mn # ORIYA SIGN VIRAMA 0B55..0B56 ; Mn # [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK 0B62..0B63 ; Mn # [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0B82 ; Mn # TAMIL SIGN ANUSVARA 0BC0 ; Mn # TAMIL VOWEL SIGN II 0BCD ; Mn # TAMIL SIGN VIRAMA 0C00 ; Mn # TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C04 ; Mn # TELUGU SIGN COMBINING ANUSVARA ABOVE 0C3C ; Mn # TELUGU SIGN NUKTA 0C3E..0C40 ; Mn # [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C46..0C48 ; Mn # [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Mn # [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Mn # [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C62..0C63 ; Mn # [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C81 ; Mn # KANNADA SIGN CANDRABINDU 0CBC ; Mn # KANNADA SIGN NUKTA 0CBF ; Mn # KANNADA VOWEL SIGN I 0CC6 ; Mn # KANNADA VOWEL SIGN E 0CCC..0CCD ; Mn # [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CE2..0CE3 ; Mn # [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0D00..0D01 ; Mn # [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D3B..0D3C ; Mn # [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA 0D41..0D44 ; Mn # [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D4D ; Mn # MALAYALAM SIGN VIRAMA 0D62..0D63 ; Mn # [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D81 ; Mn # SINHALA SIGN CANDRABINDU 0DCA ; Mn # SINHALA SIGN AL-LAKUNA 0DD2..0DD4 ; Mn # [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; Mn # SINHALA VOWEL SIGN DIGA PAA-PILLA 0E31 ; Mn # THAI CHARACTER MAI HAN-AKAT 0E34..0E3A ; Mn # [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU 0E47..0E4E ; Mn # [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN 0EB1 ; Mn # LAO VOWEL SIGN MAI KAN 0EB4..0EBC ; Mn # [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO 0EC8..0ECE ; Mn # [7] LAO TONE MAI EK..LAO YAMAKKAN 0F18..0F19 ; Mn # [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F35 ; Mn # TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Mn # TIBETAN MARK NGAS BZUNG SGOR RTAGS 0F39 ; Mn # TIBETAN MARK TSA -PHRU 0F71..0F7E ; Mn # [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F80..0F84 ; Mn # [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA 0F86..0F87 ; Mn # [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS 0F8D..0F97 ; Mn # [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Mn # [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FC6 ; Mn # TIBETAN SYMBOL PADMA GDAN 102D..1030 ; Mn # [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1032..1037 ; Mn # [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW 1039..103A ; Mn # [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT 103D..103E ; Mn # [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 1058..1059 ; Mn # [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105E..1060 ; Mn # [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1071..1074 ; Mn # [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1082 ; Mn # MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1085..1086 ; Mn # [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 108D ; Mn # MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 109D ; Mn # MYANMAR VOWEL SIGN AITON AI 135D..135F ; Mn # [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK 1712..1714 ; Mn # [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA 1732..1733 ; Mn # [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U 1752..1753 ; Mn # [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1772..1773 ; Mn # [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 17B4..17B5 ; Mn # [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 17B7..17BD ; Mn # [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17C6 ; Mn # KHMER SIGN NIKAHIT 17C9..17D3 ; Mn # [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT 17DD ; Mn # KHMER SIGN ATTHACAN 180B..180D ; Mn # [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180F ; Mn # MONGOLIAN FREE VARIATION SELECTOR FOUR 1885..1886 ; Mn # [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 18A9 ; Mn # MONGOLIAN LETTER ALI GALI DAGALGA 1920..1922 ; Mn # [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1927..1928 ; Mn # [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 1932 ; Mn # LIMBU SMALL LETTER ANUSVARA 1939..193B ; Mn # [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I 1A17..1A18 ; Mn # [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A1B ; Mn # BUGINESE VOWEL SIGN AE 1A56 ; Mn # TAI THAM CONSONANT SIGN MEDIAL LA 1A58..1A5E ; Mn # [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1A60 ; Mn # TAI THAM SIGN SAKOT 1A62 ; Mn # TAI THAM VOWEL SIGN MAI SAT 1A65..1A6C ; Mn # [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A73..1A7C ; Mn # [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; Mn # TAI THAM COMBINING CRYPTOGRAMMIC DOT 1AB0..1ABD ; Mn # [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABF..1ADD ; Mn # [31] COMBINING LATIN SMALL LETTER W BELOW..COMBINING DOT-AND-RING BELOW 1AE0..1AEB ; Mn # [12] COMBINING LEFT TACK ABOVE..COMBINING DOUBLE RIGHTWARDS ARROW ABOVE 1B00..1B03 ; Mn # [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B34 ; Mn # BALINESE SIGN REREKAN 1B36..1B3A ; Mn # [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3C ; Mn # BALINESE VOWEL SIGN LA LENGA 1B42 ; Mn # BALINESE VOWEL SIGN PEPET 1B6B..1B73 ; Mn # [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; Mn # [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1BA2..1BA5 ; Mn # [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU 1BA8..1BA9 ; Mn # [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BAB..1BAD ; Mn # [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BE6 ; Mn # BATAK SIGN TOMPI 1BE8..1BE9 ; Mn # [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BED ; Mn # BATAK VOWEL SIGN KARO O 1BEF..1BF1 ; Mn # [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1C2C..1C33 ; Mn # [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T 1C36..1C37 ; Mn # [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA 1CD0..1CD2 ; Mn # [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; Mn # [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE2..1CE8 ; Mn # [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CED ; Mn # VEDIC SIGN TIRYAK 1CF4 ; Mn # VEDIC TONE CANDRA ABOVE 1CF8..1CF9 ; Mn # [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1DC0..1DFF ; Mn # [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 20D0..20DC ; Mn # [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20E1 ; Mn # COMBINING LEFT RIGHT ARROW ABOVE 20E5..20F0 ; Mn # [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE 2CEF..2CF1 ; Mn # [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS 2D7F ; Mn # TIFINAGH CONSONANT JOINER 2DE0..2DFF ; Mn # [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 302A..302D ; Mn # [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK 3099..309A ; Mn # [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK A66F ; Mn # COMBINING CYRILLIC VZMET A674..A67D ; Mn # [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK A69E..A69F ; Mn # [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6F0..A6F1 ; Mn # [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A802 ; Mn # SYLOTI NAGRI SIGN DVISVARA A806 ; Mn # SYLOTI NAGRI SIGN HASANTA A80B ; Mn # SYLOTI NAGRI SIGN ANUSVARA A825..A826 ; Mn # [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A82C ; Mn # SYLOTI NAGRI SIGN ALTERNATE HASANTA A8C4..A8C5 ; Mn # [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU A8E0..A8F1 ; Mn # [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A8FF ; Mn # DEVANAGARI VOWEL SIGN AY A926..A92D ; Mn # [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU A947..A951 ; Mn # [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R A980..A982 ; Mn # [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A9B3 ; Mn # JAVANESE SIGN CECAK TELU A9B6..A9B9 ; Mn # [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BC..A9BD ; Mn # [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET A9E5 ; Mn # MYANMAR SIGN SHAN SAW AA29..AA2E ; Mn # [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA31..AA32 ; Mn # [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AA35..AA36 ; Mn # [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AA43 ; Mn # CHAM CONSONANT SIGN FINAL NG AA4C ; Mn # CHAM CONSONANT SIGN FINAL M AA7C ; Mn # MYANMAR SIGN TAI LAING TONE-2 AAB0 ; Mn # TAI VIET MAI KANG AAB2..AAB4 ; Mn # [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB7..AAB8 ; Mn # [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AABE..AABF ; Mn # [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK AAC1 ; Mn # TAI VIET TONE MAI THO AAEC..AAED ; Mn # [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAF6 ; Mn # MEETEI MAYEK VIRAMA ABE5 ; Mn # MEETEI MAYEK VOWEL SIGN ANAP ABE8 ; Mn # MEETEI MAYEK VOWEL SIGN UNAP ABED ; Mn # MEETEI MAYEK APUN IYEK FB1E ; Mn # HEBREW POINT JUDEO-SPANISH VARIKA FE00..FE0F ; Mn # [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE20..FE2F ; Mn # [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF 101FD ; Mn # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Mn # COPTIC EPACT THOUSANDS MARK 10376..1037A ; Mn # [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10A01..10A03 ; Mn # [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; Mn # [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; Mn # [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A38..10A3A ; Mn # [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F ; Mn # KHAROSHTHI VIRAMA 10AE5..10AE6 ; Mn # [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10D24..10D27 ; Mn # [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10D69..10D6D ; Mn # [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK 10EAB..10EAC ; Mn # [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EFA..10EFF ; Mn # [6] ARABIC DOUBLE VERTICAL BAR BELOW..ARABIC SMALL LOW WORD MADDA 10F46..10F50 ; Mn # [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW 10F82..10F85 ; Mn # [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW 11001 ; Mn # BRAHMI SIGN ANUSVARA 11038..11046 ; Mn # [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 11070 ; Mn # BRAHMI SIGN OLD TAMIL VIRAMA 11073..11074 ; Mn # [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O 1107F..11081 ; Mn # [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 110B3..110B6 ; Mn # [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B9..110BA ; Mn # [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 110C2 ; Mn # KAITHI VOWEL SIGN VOCALIC R 11100..11102 ; Mn # [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11127..1112B ; Mn # [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112D..11134 ; Mn # [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA 11173 ; Mn # MAHAJANI SIGN NUKTA 11180..11181 ; Mn # [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 111B6..111BE ; Mn # [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111C9..111CC ; Mn # [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK 111CF ; Mn # SHARADA SIGN INVERTED CANDRABINDU 1122F..11231 ; Mn # [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11234 ; Mn # KHOJKI SIGN ANUSVARA 11236..11237 ; Mn # [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; Mn # KHOJKI SIGN SUKUN 11241 ; Mn # KHOJKI VOWEL SIGN VOCALIC R 112DF ; Mn # KHUDAWADI SIGN ANUSVARA 112E3..112EA ; Mn # [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 11300..11301 ; Mn # [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 1133B..1133C ; Mn # [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA 11340 ; Mn # GRANTHA VOWEL SIGN II 11366..1136C ; Mn # [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Mn # [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 113BB..113C0 ; Mn # [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL 113CE ; Mn # TULU-TIGALARI SIGN VIRAMA 113D0 ; Mn # TULU-TIGALARI CONJOINER 113D2 ; Mn # TULU-TIGALARI GEMINATION MARK 113E1..113E2 ; Mn # [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA 11438..1143F ; Mn # [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11442..11444 ; Mn # [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA 11446 ; Mn # NEWA SIGN NUKTA 1145E ; Mn # NEWA SANDHI MARK 114B3..114B8 ; Mn # [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114BA ; Mn # TIRHUTA VOWEL SIGN SHORT E 114BF..114C0 ; Mn # [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 114C2..114C3 ; Mn # [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA 115B2..115B5 ; Mn # [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115BC..115BD ; Mn # [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BF..115C0 ; Mn # [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115DC..115DD ; Mn # [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11633..1163A ; Mn # [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163D ; Mn # MODI SIGN ANUSVARA 1163F..11640 ; Mn # [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA 116AB ; Mn # TAKRI SIGN ANUSVARA 116AD ; Mn # TAKRI VOWEL SIGN AA 116B0..116B5 ; Mn # [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B7 ; Mn # TAKRI SIGN NUKTA 1171D ; Mn # AHOM CONSONANT SIGN MEDIAL LA 1171F ; Mn # AHOM CONSONANT SIGN MEDIAL LIGATING RA 11722..11725 ; Mn # [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11727..1172B ; Mn # [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 1182F..11837 ; Mn # [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA 11839..1183A ; Mn # [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA 1193B..1193C ; Mn # [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU 1193E ; Mn # DIVES AKURU VIRAMA 11943 ; Mn # DIVES AKURU SIGN NUKTA 119D4..119D7 ; Mn # [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR 119DA..119DB ; Mn # [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI 119E0 ; Mn # NANDINAGARI SIGN VIRAMA 11A01..11A0A ; Mn # [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK 11A33..11A38 ; Mn # [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA 11A3B..11A3E ; Mn # [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA 11A47 ; Mn # ZANABAZAR SQUARE SUBJOINER 11A51..11A56 ; Mn # [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE 11A59..11A5B ; Mn # [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK 11A8A..11A96 ; Mn # [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA 11A98..11A99 ; Mn # [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER 11B60 ; Mn # SHARADA VOWEL SIGN OE 11B62..11B64 ; Mn # [3] SHARADA VOWEL SIGN UE..SHARADA VOWEL SIGN SHORT E 11B66 ; Mn # SHARADA VOWEL SIGN CANDRA E 11C30..11C36 ; Mn # [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L 11C38..11C3D ; Mn # [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA 11C3F ; Mn # BHAIKSUKI SIGN VIRAMA 11C92..11CA7 ; Mn # [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CAA..11CB0 ; Mn # [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA 11CB2..11CB3 ; Mn # [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E 11CB5..11CB6 ; Mn # [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 11D31..11D36 ; Mn # [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R 11D3A ; Mn # MASARAM GONDI VOWEL SIGN E 11D3C..11D3D ; Mn # [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O 11D3F..11D45 ; Mn # [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA 11D47 ; Mn # MASARAM GONDI RA-KARA 11D90..11D91 ; Mn # [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI 11D95 ; Mn # GUNJALA GONDI SIGN ANUSVARA 11D97 ; Mn # GUNJALA GONDI VIRAMA 11EF3..11EF4 ; Mn # [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11F00..11F01 ; Mn # [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA 11F36..11F3A ; Mn # [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R 11F40 ; Mn # KAWI VOWEL SIGN EU 11F42 ; Mn # KAWI CONJOINER 11F5A ; Mn # KAWI SIGN NUKTA 13440 ; Mn # EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY 13447..13455 ; Mn # [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 1611E..16129 ; Mn # [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK 1612D..1612F ; Mn # [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA 16AF0..16AF4 ; Mn # [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Mn # [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F4F ; Mn # MIAO SIGN CONSONANT MODIFIER BAR 16F8F..16F92 ; Mn # [4] MIAO TONE RIGHT..MIAO TONE BELOW 16FE4 ; Mn # KHITAN SMALL SCRIPT FILLER 1BC9D..1BC9E ; Mn # [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1CF00..1CF2D ; Mn # [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT 1CF30..1CF46 ; Mn # [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG 1D167..1D169 ; Mn # [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D17B..1D182 ; Mn # [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; Mn # [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Mn # [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; Mn # [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1DA00..1DA36 ; Mn # [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN 1DA3B..1DA6C ; Mn # [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT 1DA75 ; Mn # SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS 1DA84 ; Mn # SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; Mn # [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; Mn # [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E000..1E006 ; Mn # [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Mn # [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Mn # [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Mn # [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Mn # [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E08F ; Mn # COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E130..1E136 ; Mn # [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E2AE ; Mn # TOTO SIGN RISING TONE 1E2EC..1E2EF ; Mn # [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E4EC..1E4EF ; Mn # [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH 1E5EE..1E5EF ; Mn # [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR 1E6E3 ; Mn # TAI YO SIGN UE 1E6E6 ; Mn # TAI YO SIGN AU 1E6EE..1E6EF ; Mn # [2] TAI YO SIGN AY..TAI YO SIGN ANG 1E6F5 ; Mn # TAI YO SIGN OM 1E8D0..1E8D6 ; Mn # [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E944..1E94A ; Mn # [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA E0100..E01EF ; Mn # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 # Total code points: 2059 # ================================================ # General_Category=Enclosing_Mark 0488..0489 ; Me # [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN 1ABE ; Me # COMBINING PARENTHESES OVERLAY 20DD..20E0 ; Me # [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH 20E2..20E4 ; Me # [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE A670..A672 ; Me # [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN # Total code points: 13 # ================================================ # General_Category=Spacing_Mark 0903 ; Mc # DEVANAGARI SIGN VISARGA 093B ; Mc # DEVANAGARI VOWEL SIGN OOE 093E..0940 ; Mc # [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II 0949..094C ; Mc # [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094E..094F ; Mc # [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW 0982..0983 ; Mc # [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA 09BE..09C0 ; Mc # [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II 09C7..09C8 ; Mc # [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CC ; Mc # [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 09D7 ; Mc # BENGALI AU LENGTH MARK 0A03 ; Mc # GURMUKHI SIGN VISARGA 0A3E..0A40 ; Mc # [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II 0A83 ; Mc # GUJARATI SIGN VISARGA 0ABE..0AC0 ; Mc # [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II 0AC9 ; Mc # GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACC ; Mc # [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0B02..0B03 ; Mc # [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B3E ; Mc # ORIYA VOWEL SIGN AA 0B40 ; Mc # ORIYA VOWEL SIGN II 0B47..0B48 ; Mc # [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; Mc # [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B57 ; Mc # ORIYA AU LENGTH MARK 0BBE..0BBF ; Mc # [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I 0BC1..0BC2 ; Mc # [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; Mc # [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCC ; Mc # [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0BD7 ; Mc # TAMIL AU LENGTH MARK 0C01..0C03 ; Mc # [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C41..0C44 ; Mc # [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C82..0C83 ; Mc # [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0CBE ; Mc # KANNADA VOWEL SIGN AA 0CC0..0CC4 ; Mc # [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR 0CC7..0CC8 ; Mc # [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; Mc # [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CD5..0CD6 ; Mc # [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CF3 ; Mc # KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D02..0D03 ; Mc # [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D3E..0D40 ; Mc # [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D46..0D48 ; Mc # [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4C ; Mc # [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D57 ; Mc # MALAYALAM AU LENGTH MARK 0D82..0D83 ; Mc # [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0DCF..0DD1 ; Mc # [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD8..0DDF ; Mc # [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA 0DF2..0DF3 ; Mc # [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0F3E..0F3F ; Mc # [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES 0F7F ; Mc # TIBETAN SIGN RNAM BCAD 102B..102C ; Mc # [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 1031 ; Mc # MYANMAR VOWEL SIGN E 1038 ; Mc # MYANMAR SIGN VISARGA 103B..103C ; Mc # [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA 1056..1057 ; Mc # [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 1062..1064 ; Mc # [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO 1067..106D ; Mc # [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 1083..1084 ; Mc # [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E 1087..108C ; Mc # [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 108F ; Mc # MYANMAR SIGN RUMAI PALAUNG TONE-5 109A..109C ; Mc # [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A 1715 ; Mc # TAGALOG SIGN PAMUDPOD 1734 ; Mc # HANUNOO SIGN PAMUDPOD 17B6 ; Mc # KHMER VOWEL SIGN AA 17BE..17C5 ; Mc # [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU 17C7..17C8 ; Mc # [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU 1923..1926 ; Mc # [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU 1929..192B ; Mc # [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; Mc # [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1933..1938 ; Mc # [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1A19..1A1A ; Mc # [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A55 ; Mc # TAI THAM CONSONANT SIGN MEDIAL RA 1A57 ; Mc # TAI THAM CONSONANT SIGN LA TANG LAI 1A61 ; Mc # TAI THAM VOWEL SIGN A 1A63..1A64 ; Mc # [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A6D..1A72 ; Mc # [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1B04 ; Mc # BALINESE SIGN BISAH 1B35 ; Mc # BALINESE VOWEL SIGN TEDUNG 1B3B ; Mc # BALINESE VOWEL SIGN RA REPA TEDUNG 1B3D..1B41 ; Mc # [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B43..1B44 ; Mc # [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG 1B82 ; Mc # SUNDANESE SIGN PANGWISAD 1BA1 ; Mc # SUNDANESE CONSONANT SIGN PAMINGKAL 1BA6..1BA7 ; Mc # [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG 1BAA ; Mc # SUNDANESE SIGN PAMAAEH 1BE7 ; Mc # BATAK VOWEL SIGN E 1BEA..1BEC ; Mc # [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BEE ; Mc # BATAK VOWEL SIGN U 1BF2..1BF3 ; Mc # [2] BATAK PANGOLAT..BATAK PANONGONAN 1C24..1C2B ; Mc # [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU 1C34..1C35 ; Mc # [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG 1CE1 ; Mc # VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA 1CF7 ; Mc # VEDIC SIGN ATIKRAMA 302E..302F ; Mc # [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK A823..A824 ; Mc # [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A827 ; Mc # SYLOTI NAGRI VOWEL SIGN OO A880..A881 ; Mc # [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA A8B4..A8C3 ; Mc # [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU A952..A953 ; Mc # [2] REJANG CONSONANT SIGN H..REJANG VIRAMA A983 ; Mc # JAVANESE SIGN WIGNYAN A9B4..A9B5 ; Mc # [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9BA..A9BB ; Mc # [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE A9BE..A9C0 ; Mc # [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON AA2F..AA30 ; Mc # [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA33..AA34 ; Mc # [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA AA4D ; Mc # CHAM CONSONANT SIGN FINAL H AA7B ; Mc # MYANMAR SIGN PAO KAREN TONE AA7D ; Mc # MYANMAR SIGN TAI LAING TONE-5 AAEB ; Mc # MEETEI MAYEK VOWEL SIGN II AAEE..AAEF ; Mc # [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU AAF5 ; Mc # MEETEI MAYEK VOWEL SIGN VISARGA ABE3..ABE4 ; Mc # [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE6..ABE7 ; Mc # [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE9..ABEA ; Mc # [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG ABEC ; Mc # MEETEI MAYEK LUM IYEK 11000 ; Mc # BRAHMI SIGN CANDRABINDU 11002 ; Mc # BRAHMI SIGN VISARGA 11082 ; Mc # KAITHI SIGN VISARGA 110B0..110B2 ; Mc # [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B7..110B8 ; Mc # [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 1112C ; Mc # CHAKMA VOWEL SIGN E 11145..11146 ; Mc # [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI 11182 ; Mc # SHARADA SIGN VISARGA 111B3..111B5 ; Mc # [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111BF..111C0 ; Mc # [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111CE ; Mc # SHARADA VOWEL SIGN PRISHTHAMATRA E 1122C..1122E ; Mc # [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 11232..11233 ; Mc # [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU 11235 ; Mc # KHOJKI SIGN VIRAMA 112E0..112E2 ; Mc # [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 11302..11303 ; Mc # [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 1133E..1133F ; Mc # [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11341..11344 ; Mc # [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Mc # [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; Mc # [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA 11357 ; Mc # GRANTHA AU LENGTH MARK 11362..11363 ; Mc # [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 113B8..113BA ; Mc # [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II 113C2 ; Mc # TULU-TIGALARI VOWEL SIGN EE 113C5 ; Mc # TULU-TIGALARI VOWEL SIGN AI 113C7..113CA ; Mc # [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA 113CC..113CD ; Mc # [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA 113CF ; Mc # TULU-TIGALARI SIGN LOOPED VIRAMA 11435..11437 ; Mc # [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11440..11441 ; Mc # [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU 11445 ; Mc # NEWA SIGN VISARGA 114B0..114B2 ; Mc # [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B9 ; Mc # TIRHUTA VOWEL SIGN E 114BB..114BE ; Mc # [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU 114C1 ; Mc # TIRHUTA SIGN VISARGA 115AF..115B1 ; Mc # [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II 115B8..115BB ; Mc # [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BE ; Mc # SIDDHAM SIGN VISARGA 11630..11632 ; Mc # [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 1163B..1163C ; Mc # [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163E ; Mc # MODI SIGN VISARGA 116AC ; Mc # TAKRI SIGN VISARGA 116AE..116AF ; Mc # [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B6 ; Mc # TAKRI SIGN VIRAMA 1171E ; Mc # AHOM CONSONANT SIGN MEDIAL RA 11720..11721 ; Mc # [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11726 ; Mc # AHOM VOWEL SIGN E 1182C..1182E ; Mc # [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 11838 ; Mc # DOGRA SIGN VISARGA 11930..11935 ; Mc # [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E 11937..11938 ; Mc # [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O 1193D ; Mc # DIVES AKURU SIGN HALANTA 11940 ; Mc # DIVES AKURU MEDIAL YA 11942 ; Mc # DIVES AKURU MEDIAL RA 119D1..119D3 ; Mc # [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II 119DC..119DF ; Mc # [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA 119E4 ; Mc # NANDINAGARI VOWEL SIGN PRISHTHAMATRA E 11A39 ; Mc # ZANABAZAR SQUARE SIGN VISARGA 11A57..11A58 ; Mc # [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU 11A97 ; Mc # SOYOMBO SIGN VISARGA 11B61 ; Mc # SHARADA VOWEL SIGN OOE 11B65 ; Mc # SHARADA VOWEL SIGN SHORT O 11B67 ; Mc # SHARADA VOWEL SIGN CANDRA O 11C2F ; Mc # BHAIKSUKI VOWEL SIGN AA 11C3E ; Mc # BHAIKSUKI SIGN VISARGA 11CA9 ; Mc # MARCHEN SUBJOINED LETTER YA 11CB1 ; Mc # MARCHEN VOWEL SIGN I 11CB4 ; Mc # MARCHEN VOWEL SIGN O 11D8A..11D8E ; Mc # [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU 11D93..11D94 ; Mc # [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU 11D96 ; Mc # GUNJALA GONDI SIGN VISARGA 11EF5..11EF6 ; Mc # [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O 11F03 ; Mc # KAWI SIGN VISARGA 11F34..11F35 ; Mc # [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA 11F3E..11F3F ; Mc # [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI 11F41 ; Mc # KAWI SIGN KILLER 1612A..1612C ; Mc # [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA 16F51..16F87 ; Mc # [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 16FF0..16FF1 ; Mc # [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 1D165..1D166 ; Mc # [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D16D..1D172 ; Mc # [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 # Total code points: 471 # ================================================ # General_Category=Decimal_Number 0030..0039 ; Nd # [10] DIGIT ZERO..DIGIT NINE 0660..0669 ; Nd # [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 06F0..06F9 ; Nd # [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE 07C0..07C9 ; Nd # [10] NKO DIGIT ZERO..NKO DIGIT NINE 0966..096F ; Nd # [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE 09E6..09EF ; Nd # [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE 0A66..0A6F ; Nd # [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE 0AE6..0AEF ; Nd # [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0B66..0B6F ; Nd # [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE 0BE6..0BEF ; Nd # [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE 0C66..0C6F ; Nd # [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0CE6..0CEF ; Nd # [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0D66..0D6F ; Nd # [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0DE6..0DEF ; Nd # [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE 0E50..0E59 ; Nd # [10] THAI DIGIT ZERO..THAI DIGIT NINE 0ED0..0ED9 ; Nd # [10] LAO DIGIT ZERO..LAO DIGIT NINE 0F20..0F29 ; Nd # [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE 1040..1049 ; Nd # [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE 1090..1099 ; Nd # [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE 17E0..17E9 ; Nd # [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 1810..1819 ; Nd # [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1946..194F ; Nd # [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE 19D0..19D9 ; Nd # [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 1A80..1A89 ; Nd # [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE 1A90..1A99 ; Nd # [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1B50..1B59 ; Nd # [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1BB0..1BB9 ; Nd # [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE 1C40..1C49 ; Nd # [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE 1C50..1C59 ; Nd # [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE A620..A629 ; Nd # [10] VAI DIGIT ZERO..VAI DIGIT NINE A8D0..A8D9 ; Nd # [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE A900..A909 ; Nd # [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A9D0..A9D9 ; Nd # [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE A9F0..A9F9 ; Nd # [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE AA50..AA59 ; Nd # [10] CHAM DIGIT ZERO..CHAM DIGIT NINE ABF0..ABF9 ; Nd # [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE FF10..FF19 ; Nd # [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE 104A0..104A9 ; Nd # [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE 10D30..10D39 ; Nd # [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE 10D40..10D49 ; Nd # [10] GARAY DIGIT ZERO..GARAY DIGIT NINE 11066..1106F ; Nd # [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE 110F0..110F9 ; Nd # [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11136..1113F ; Nd # [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE 111D0..111D9 ; Nd # [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 112F0..112F9 ; Nd # [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE 11450..11459 ; Nd # [10] NEWA DIGIT ZERO..NEWA DIGIT NINE 114D0..114D9 ; Nd # [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11650..11659 ; Nd # [10] MODI DIGIT ZERO..MODI DIGIT NINE 116C0..116C9 ; Nd # [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 116D0..116E3 ; Nd # [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE 11730..11739 ; Nd # [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 118E0..118E9 ; Nd # [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 11950..11959 ; Nd # [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE 11BF0..11BF9 ; Nd # [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE 11C50..11C59 ; Nd # [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE 11D50..11D59 ; Nd # [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE 11DA0..11DA9 ; Nd # [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE 11DE0..11DE9 ; Nd # [10] TOLONG SIKI DIGIT ZERO..TOLONG SIKI DIGIT NINE 11F50..11F59 ; Nd # [10] KAWI DIGIT ZERO..KAWI DIGIT NINE 16130..16139 ; Nd # [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE 16A60..16A69 ; Nd # [10] MRO DIGIT ZERO..MRO DIGIT NINE 16AC0..16AC9 ; Nd # [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE 16B50..16B59 ; Nd # [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16D70..16D79 ; Nd # [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE 1CCF0..1CCF9 ; Nd # [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE 1D7CE..1D7FF ; Nd # [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE 1E140..1E149 ; Nd # [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE 1E2F0..1E2F9 ; Nd # [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE 1E4F0..1E4F9 ; Nd # [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE 1E5F1..1E5FA ; Nd # [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE 1E950..1E959 ; Nd # [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE 1FBF0..1FBF9 ; Nd # [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE # Total code points: 770 # ================================================ # General_Category=Letter_Number 16EE..16F0 ; Nl # [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 2160..2182 ; Nl # [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2185..2188 ; Nl # [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 3007 ; Nl # IDEOGRAPHIC NUMBER ZERO 3021..3029 ; Nl # [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3038..303A ; Nl # [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY A6E6..A6EF ; Nl # [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM 10140..10174 ; Nl # [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 10341 ; Nl # GOTHIC LETTER NINETY 1034A ; Nl # GOTHIC LETTER NINE HUNDRED 103D1..103D5 ; Nl # [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 12400..1246E ; Nl # [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 16FF4..16FF6 ; Nl # [3] YANGQIN SIGN SLOW ONE BEAT..YANGQIN SIGN SLOW TWO BEATS # Total code points: 239 # ================================================ # General_Category=Other_Number 00B2..00B3 ; No # [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE 00B9 ; No # SUPERSCRIPT ONE 00BC..00BE ; No # [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS 09F4..09F9 ; No # [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN 0B72..0B77 ; No # [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS 0BF0..0BF2 ; No # [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND 0C78..0C7E ; No # [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0D58..0D5E ; No # [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH 0D70..0D78 ; No # [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS 0F2A..0F33 ; No # [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO 1369..137C ; No # [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND 17F0..17F9 ; No # [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON 19DA ; No # NEW TAI LUE THAM DIGIT ONE 2070 ; No # SUPERSCRIPT ZERO 2074..2079 ; No # [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE 2080..2089 ; No # [10] SUBSCRIPT ZERO..SUBSCRIPT NINE 2150..215F ; No # [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE 2189 ; No # VULGAR FRACTION ZERO THIRDS 2460..249B ; No # [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP 24EA..24FF ; No # [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO 2776..2793 ; No # [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN 2CFD ; No # COPTIC FRACTION ONE HALF 3192..3195 ; No # [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK 3220..3229 ; No # [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN 3248..324F ; No # [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE 3251..325F ; No # [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE 3280..3289 ; No # [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN 32B1..32BF ; No # [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY A830..A835 ; No # [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS 10107..10133 ; No # [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND 10175..10178 ; No # [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN 1018A..1018B ; No # [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN 102E1..102FB ; No # [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED 10320..10323 ; No # [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY 10858..1085F ; No # [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND 10879..1087F ; No # [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY 108A7..108AF ; No # [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED 108FB..108FF ; No # [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED 10916..1091B ; No # [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE 109BC..109BD ; No # [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109C0..109CF ; No # [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY 109D2..109FF ; No # [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS 10A40..10A48 ; No # [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF 10A7D..10A7E ; No # [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY 10A9D..10A9F ; No # [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY 10AEB..10AEF ; No # [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED 10B58..10B5F ; No # [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND 10B78..10B7F ; No # [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND 10BA9..10BAF ; No # [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED 10CFA..10CFF ; No # [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND 10E60..10E7E ; No # [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS 10F1D..10F26 ; No # [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF 10F51..10F54 ; No # [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED 10FC5..10FCB ; No # [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED 11052..11065 ; No # [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND 111E1..111F4 ; No # [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND 1173A..1173B ; No # [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY 118EA..118F2 ; No # [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY 11C5A..11C6C ; No # [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK 11FC0..11FD4 ; No # [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH 16B5B..16B61 ; No # [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS 16E80..16E96 ; No # [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM 1D2C0..1D2D3 ; No # [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN 1D2E0..1D2F3 ; No # [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN 1D360..1D378 ; No # [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE 1E8C7..1E8CF ; No # [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE 1EC71..1ECAB ; No # [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE 1ECAD..1ECAF ; No # [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS 1ECB1..1ECB4 ; No # [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK 1ED01..1ED2D ; No # [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND 1ED2F..1ED3D ; No # [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH 1F100..1F10C ; No # [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO # Total code points: 915 # ================================================ # General_Category=Space_Separator 0020 ; Zs # SPACE 00A0 ; Zs # NO-BREAK SPACE 1680 ; Zs # OGHAM SPACE MARK 2000..200A ; Zs # [11] EN QUAD..HAIR SPACE 202F ; Zs # NARROW NO-BREAK SPACE 205F ; Zs # MEDIUM MATHEMATICAL SPACE 3000 ; Zs # IDEOGRAPHIC SPACE # Total code points: 17 # ================================================ # General_Category=Line_Separator 2028 ; Zl # LINE SEPARATOR # Total code points: 1 # ================================================ # General_Category=Paragraph_Separator 2029 ; Zp # PARAGRAPH SEPARATOR # Total code points: 1 # ================================================ # General_Category=Control 0000..001F ; Cc # [32] .. 007F..009F ; Cc # [33] .. # Total code points: 65 # ================================================ # General_Category=Format 00AD ; Cf # SOFT HYPHEN 0600..0605 ; Cf # [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE 061C ; Cf # ARABIC LETTER MARK 06DD ; Cf # ARABIC END OF AYAH 070F ; Cf # SYRIAC ABBREVIATION MARK 0890..0891 ; Cf # [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE 08E2 ; Cf # ARABIC DISPUTED END OF AYAH 180E ; Cf # MONGOLIAN VOWEL SEPARATOR 200B..200F ; Cf # [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK 202A..202E ; Cf # [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE 2060..2064 ; Cf # [5] WORD JOINER..INVISIBLE PLUS 2066..206F ; Cf # [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES FEFF ; Cf # ZERO WIDTH NO-BREAK SPACE FFF9..FFFB ; Cf # [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR 110BD ; Cf # KAITHI NUMBER SIGN 110CD ; Cf # KAITHI NUMBER SIGN ABOVE 13430..1343F ; Cf # [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE 1BCA0..1BCA3 ; Cf # [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP 1D173..1D17A ; Cf # [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE E0001 ; Cf # LANGUAGE TAG E0020..E007F ; Cf # [96] TAG SPACE..CANCEL TAG # Total code points: 170 # ================================================ # General_Category=Private_Use E000..F8FF ; Co # [6400] .. F0000..FFFFD ; Co # [65534] .. 100000..10FFFD; Co # [65534] .. # Total code points: 137468 # ================================================ # General_Category=Surrogate D800..DFFF ; Cs # [2048] .. # Total code points: 2048 # ================================================ # General_Category=Dash_Punctuation 002D ; Pd # HYPHEN-MINUS 058A ; Pd # ARMENIAN HYPHEN 05BE ; Pd # HEBREW PUNCTUATION MAQAF 1400 ; Pd # CANADIAN SYLLABICS HYPHEN 1806 ; Pd # MONGOLIAN TODO SOFT HYPHEN 2010..2015 ; Pd # [6] HYPHEN..HORIZONTAL BAR 2E17 ; Pd # DOUBLE OBLIQUE HYPHEN 2E1A ; Pd # HYPHEN WITH DIAERESIS 2E3A..2E3B ; Pd # [2] TWO-EM DASH..THREE-EM DASH 2E40 ; Pd # DOUBLE HYPHEN 2E5D ; Pd # OBLIQUE HYPHEN 301C ; Pd # WAVE DASH 3030 ; Pd # WAVY DASH 30A0 ; Pd # KATAKANA-HIRAGANA DOUBLE HYPHEN FE31..FE32 ; Pd # [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH FE58 ; Pd # SMALL EM DASH FE63 ; Pd # SMALL HYPHEN-MINUS FF0D ; Pd # FULLWIDTH HYPHEN-MINUS 10D6E ; Pd # GARAY HYPHEN 10EAD ; Pd # YEZIDI HYPHENATION MARK # Total code points: 27 # ================================================ # General_Category=Open_Punctuation 0028 ; Ps # LEFT PARENTHESIS 005B ; Ps # LEFT SQUARE BRACKET 007B ; Ps # LEFT CURLY BRACKET 0F3A ; Ps # TIBETAN MARK GUG RTAGS GYON 0F3C ; Ps # TIBETAN MARK ANG KHANG GYON 169B ; Ps # OGHAM FEATHER MARK 201A ; Ps # SINGLE LOW-9 QUOTATION MARK 201E ; Ps # DOUBLE LOW-9 QUOTATION MARK 2045 ; Ps # LEFT SQUARE BRACKET WITH QUILL 207D ; Ps # SUPERSCRIPT LEFT PARENTHESIS 208D ; Ps # SUBSCRIPT LEFT PARENTHESIS 2308 ; Ps # LEFT CEILING 230A ; Ps # LEFT FLOOR 2329 ; Ps # LEFT-POINTING ANGLE BRACKET 2768 ; Ps # MEDIUM LEFT PARENTHESIS ORNAMENT 276A ; Ps # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT 276C ; Ps # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT 276E ; Ps # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT 2770 ; Ps # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT 2772 ; Ps # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT 2774 ; Ps # MEDIUM LEFT CURLY BRACKET ORNAMENT 27C5 ; Ps # LEFT S-SHAPED BAG DELIMITER 27E6 ; Ps # MATHEMATICAL LEFT WHITE SQUARE BRACKET 27E8 ; Ps # MATHEMATICAL LEFT ANGLE BRACKET 27EA ; Ps # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET 27EC ; Ps # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET 27EE ; Ps # MATHEMATICAL LEFT FLATTENED PARENTHESIS 2983 ; Ps # LEFT WHITE CURLY BRACKET 2985 ; Ps # LEFT WHITE PARENTHESIS 2987 ; Ps # Z NOTATION LEFT IMAGE BRACKET 2989 ; Ps # Z NOTATION LEFT BINDING BRACKET 298B ; Ps # LEFT SQUARE BRACKET WITH UNDERBAR 298D ; Ps # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 298F ; Ps # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2991 ; Ps # LEFT ANGLE BRACKET WITH DOT 2993 ; Ps # LEFT ARC LESS-THAN BRACKET 2995 ; Ps # DOUBLE LEFT ARC GREATER-THAN BRACKET 2997 ; Ps # LEFT BLACK TORTOISE SHELL BRACKET 29D8 ; Ps # LEFT WIGGLY FENCE 29DA ; Ps # LEFT DOUBLE WIGGLY FENCE 29FC ; Ps # LEFT-POINTING CURVED ANGLE BRACKET 2E22 ; Ps # TOP LEFT HALF BRACKET 2E24 ; Ps # BOTTOM LEFT HALF BRACKET 2E26 ; Ps # LEFT SIDEWAYS U BRACKET 2E28 ; Ps # LEFT DOUBLE PARENTHESIS 2E42 ; Ps # DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E55 ; Ps # LEFT SQUARE BRACKET WITH STROKE 2E57 ; Ps # LEFT SQUARE BRACKET WITH DOUBLE STROKE 2E59 ; Ps # TOP HALF LEFT PARENTHESIS 2E5B ; Ps # BOTTOM HALF LEFT PARENTHESIS 3008 ; Ps # LEFT ANGLE BRACKET 300A ; Ps # LEFT DOUBLE ANGLE BRACKET 300C ; Ps # LEFT CORNER BRACKET 300E ; Ps # LEFT WHITE CORNER BRACKET 3010 ; Ps # LEFT BLACK LENTICULAR BRACKET 3014 ; Ps # LEFT TORTOISE SHELL BRACKET 3016 ; Ps # LEFT WHITE LENTICULAR BRACKET 3018 ; Ps # LEFT WHITE TORTOISE SHELL BRACKET 301A ; Ps # LEFT WHITE SQUARE BRACKET 301D ; Ps # REVERSED DOUBLE PRIME QUOTATION MARK FD3F ; Ps # ORNATE RIGHT PARENTHESIS FE17 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET FE35 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS FE37 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET FE39 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET FE3B ; Ps # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET FE3D ; Ps # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET FE3F ; Ps # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET FE41 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET FE43 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET FE47 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET FE59 ; Ps # SMALL LEFT PARENTHESIS FE5B ; Ps # SMALL LEFT CURLY BRACKET FE5D ; Ps # SMALL LEFT TORTOISE SHELL BRACKET FF08 ; Ps # FULLWIDTH LEFT PARENTHESIS FF3B ; Ps # FULLWIDTH LEFT SQUARE BRACKET FF5B ; Ps # FULLWIDTH LEFT CURLY BRACKET FF5F ; Ps # FULLWIDTH LEFT WHITE PARENTHESIS FF62 ; Ps # HALFWIDTH LEFT CORNER BRACKET # Total code points: 79 # ================================================ # General_Category=Close_Punctuation 0029 ; Pe # RIGHT PARENTHESIS 005D ; Pe # RIGHT SQUARE BRACKET 007D ; Pe # RIGHT CURLY BRACKET 0F3B ; Pe # TIBETAN MARK GUG RTAGS GYAS 0F3D ; Pe # TIBETAN MARK ANG KHANG GYAS 169C ; Pe # OGHAM REVERSED FEATHER MARK 2046 ; Pe # RIGHT SQUARE BRACKET WITH QUILL 207E ; Pe # SUPERSCRIPT RIGHT PARENTHESIS 208E ; Pe # SUBSCRIPT RIGHT PARENTHESIS 2309 ; Pe # RIGHT CEILING 230B ; Pe # RIGHT FLOOR 232A ; Pe # RIGHT-POINTING ANGLE BRACKET 2769 ; Pe # MEDIUM RIGHT PARENTHESIS ORNAMENT 276B ; Pe # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT 276D ; Pe # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT 276F ; Pe # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT 2771 ; Pe # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT 2773 ; Pe # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT 2775 ; Pe # MEDIUM RIGHT CURLY BRACKET ORNAMENT 27C6 ; Pe # RIGHT S-SHAPED BAG DELIMITER 27E7 ; Pe # MATHEMATICAL RIGHT WHITE SQUARE BRACKET 27E9 ; Pe # MATHEMATICAL RIGHT ANGLE BRACKET 27EB ; Pe # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27ED ; Pe # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET 27EF ; Pe # MATHEMATICAL RIGHT FLATTENED PARENTHESIS 2984 ; Pe # RIGHT WHITE CURLY BRACKET 2986 ; Pe # RIGHT WHITE PARENTHESIS 2988 ; Pe # Z NOTATION RIGHT IMAGE BRACKET 298A ; Pe # Z NOTATION RIGHT BINDING BRACKET 298C ; Pe # RIGHT SQUARE BRACKET WITH UNDERBAR 298E ; Pe # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990 ; Pe # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER 2992 ; Pe # RIGHT ANGLE BRACKET WITH DOT 2994 ; Pe # RIGHT ARC GREATER-THAN BRACKET 2996 ; Pe # DOUBLE RIGHT ARC LESS-THAN BRACKET 2998 ; Pe # RIGHT BLACK TORTOISE SHELL BRACKET 29D9 ; Pe # RIGHT WIGGLY FENCE 29DB ; Pe # RIGHT DOUBLE WIGGLY FENCE 29FD ; Pe # RIGHT-POINTING CURVED ANGLE BRACKET 2E23 ; Pe # TOP RIGHT HALF BRACKET 2E25 ; Pe # BOTTOM RIGHT HALF BRACKET 2E27 ; Pe # RIGHT SIDEWAYS U BRACKET 2E29 ; Pe # RIGHT DOUBLE PARENTHESIS 2E56 ; Pe # RIGHT SQUARE BRACKET WITH STROKE 2E58 ; Pe # RIGHT SQUARE BRACKET WITH DOUBLE STROKE 2E5A ; Pe # TOP HALF RIGHT PARENTHESIS 2E5C ; Pe # BOTTOM HALF RIGHT PARENTHESIS 3009 ; Pe # RIGHT ANGLE BRACKET 300B ; Pe # RIGHT DOUBLE ANGLE BRACKET 300D ; Pe # RIGHT CORNER BRACKET 300F ; Pe # RIGHT WHITE CORNER BRACKET 3011 ; Pe # RIGHT BLACK LENTICULAR BRACKET 3015 ; Pe # RIGHT TORTOISE SHELL BRACKET 3017 ; Pe # RIGHT WHITE LENTICULAR BRACKET 3019 ; Pe # RIGHT WHITE TORTOISE SHELL BRACKET 301B ; Pe # RIGHT WHITE SQUARE BRACKET 301E..301F ; Pe # [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK FD3E ; Pe # ORNATE LEFT PARENTHESIS FE18 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET FE36 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS FE38 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET FE3A ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET FE3C ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET FE3E ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET FE40 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET FE42 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET FE44 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET FE48 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET FE5A ; Pe # SMALL RIGHT PARENTHESIS FE5C ; Pe # SMALL RIGHT CURLY BRACKET FE5E ; Pe # SMALL RIGHT TORTOISE SHELL BRACKET FF09 ; Pe # FULLWIDTH RIGHT PARENTHESIS FF3D ; Pe # FULLWIDTH RIGHT SQUARE BRACKET FF5D ; Pe # FULLWIDTH RIGHT CURLY BRACKET FF60 ; Pe # FULLWIDTH RIGHT WHITE PARENTHESIS FF63 ; Pe # HALFWIDTH RIGHT CORNER BRACKET # Total code points: 77 # ================================================ # General_Category=Connector_Punctuation 005F ; Pc # LOW LINE 203F..2040 ; Pc # [2] UNDERTIE..CHARACTER TIE 2054 ; Pc # INVERTED UNDERTIE FE33..FE34 ; Pc # [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE FE4D..FE4F ; Pc # [3] DASHED LOW LINE..WAVY LOW LINE FF3F ; Pc # FULLWIDTH LOW LINE # Total code points: 10 # ================================================ # General_Category=Other_Punctuation 0021..0023 ; Po # [3] EXCLAMATION MARK..NUMBER SIGN 0025..0027 ; Po # [3] PERCENT SIGN..APOSTROPHE 002A ; Po # ASTERISK 002C ; Po # COMMA 002E..002F ; Po # [2] FULL STOP..SOLIDUS 003A..003B ; Po # [2] COLON..SEMICOLON 003F..0040 ; Po # [2] QUESTION MARK..COMMERCIAL AT 005C ; Po # REVERSE SOLIDUS 00A1 ; Po # INVERTED EXCLAMATION MARK 00A7 ; Po # SECTION SIGN 00B6..00B7 ; Po # [2] PILCROW SIGN..MIDDLE DOT 00BF ; Po # INVERTED QUESTION MARK 037E ; Po # GREEK QUESTION MARK 0387 ; Po # GREEK ANO TELEIA 055A..055F ; Po # [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK 0589 ; Po # ARMENIAN FULL STOP 05C0 ; Po # HEBREW PUNCTUATION PASEQ 05C3 ; Po # HEBREW PUNCTUATION SOF PASUQ 05C6 ; Po # HEBREW PUNCTUATION NUN HAFUKHA 05F3..05F4 ; Po # [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM 0609..060A ; Po # [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN 060C..060D ; Po # [2] ARABIC COMMA..ARABIC DATE SEPARATOR 061B ; Po # ARABIC SEMICOLON 061D..061F ; Po # [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK 066A..066D ; Po # [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR 06D4 ; Po # ARABIC FULL STOP 0700..070D ; Po # [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS 07F7..07F9 ; Po # [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK 0830..083E ; Po # [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU 085E ; Po # MANDAIC PUNCTUATION 0964..0965 ; Po # [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0970 ; Po # DEVANAGARI ABBREVIATION SIGN 09FD ; Po # BENGALI ABBREVIATION SIGN 0A76 ; Po # GURMUKHI ABBREVIATION SIGN 0AF0 ; Po # GUJARATI ABBREVIATION SIGN 0C77 ; Po # TELUGU SIGN SIDDHAM 0C84 ; Po # KANNADA SIGN SIDDHAM 0DF4 ; Po # SINHALA PUNCTUATION KUNDDALIYA 0E4F ; Po # THAI CHARACTER FONGMAN 0E5A..0E5B ; Po # [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT 0F04..0F12 ; Po # [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD 0F14 ; Po # TIBETAN MARK GTER TSHEG 0F85 ; Po # TIBETAN MARK PALUTA 0FD0..0FD4 ; Po # [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA 0FD9..0FDA ; Po # [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS 104A..104F ; Po # [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE 10FB ; Po # GEORGIAN PARAGRAPH SEPARATOR 1360..1368 ; Po # [9] ETHIOPIC SECTION MARK..ETHIOPIC PARAGRAPH SEPARATOR 166E ; Po # CANADIAN SYLLABICS FULL STOP 16EB..16ED ; Po # [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION 1735..1736 ; Po # [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION 17D4..17D6 ; Po # [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH 17D8..17DA ; Po # [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT 1800..1805 ; Po # [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS 1807..180A ; Po # [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU 1944..1945 ; Po # [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK 1A1E..1A1F ; Po # [2] BUGINESE PALLAWA..BUGINESE END OF SECTION 1AA0..1AA6 ; Po # [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA 1AA8..1AAD ; Po # [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG 1B4E..1B4F ; Po # [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN 1B5A..1B60 ; Po # [7] BALINESE PANTI..BALINESE PAMENENG 1B7D..1B7F ; Po # [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK 1BFC..1BFF ; Po # [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT 1C3B..1C3F ; Po # [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK 1C7E..1C7F ; Po # [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD 1CC0..1CC7 ; Po # [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA 1CD3 ; Po # VEDIC SIGN NIHSHVASA 2016..2017 ; Po # [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE 2020..2027 ; Po # [8] DAGGER..HYPHENATION POINT 2030..2038 ; Po # [9] PER MILLE SIGN..CARET 203B..203E ; Po # [4] REFERENCE MARK..OVERLINE 2041..2043 ; Po # [3] CARET INSERTION POINT..HYPHEN BULLET 2047..2051 ; Po # [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY 2053 ; Po # SWUNG DASH 2055..205E ; Po # [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS 2CF9..2CFC ; Po # [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER 2CFE..2CFF ; Po # [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER 2D70 ; Po # TIFINAGH SEPARATOR MARK 2E00..2E01 ; Po # [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E06..2E08 ; Po # [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER 2E0B ; Po # RAISED SQUARE 2E0E..2E16 ; Po # [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE 2E18..2E19 ; Po # [2] INVERTED INTERROBANG..PALM BRANCH 2E1B ; Po # TILDE WITH RING ABOVE 2E1E..2E1F ; Po # [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW 2E2A..2E2E ; Po # [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK 2E30..2E39 ; Po # [10] RING POINT..TOP HALF SECTION SIGN 2E3C..2E3F ; Po # [4] STENOGRAPHIC FULL STOP..CAPITULUM 2E41 ; Po # REVERSED COMMA 2E43..2E4F ; Po # [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER 2E52..2E54 ; Po # [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK 3001..3003 ; Po # [3] IDEOGRAPHIC COMMA..DITTO MARK 303D ; Po # PART ALTERNATION MARK 30FB ; Po # KATAKANA MIDDLE DOT A4FE..A4FF ; Po # [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP A60D..A60F ; Po # [3] VAI COMMA..VAI QUESTION MARK A673 ; Po # SLAVONIC ASTERISK A67E ; Po # CYRILLIC KAVYKA A6F2..A6F7 ; Po # [6] BAMUM NJAEMLI..BAMUM QUESTION MARK A874..A877 ; Po # [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD A8CE..A8CF ; Po # [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA A8F8..A8FA ; Po # [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FC ; Po # DEVANAGARI SIGN SIDDHAM A92E..A92F ; Po # [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA A95F ; Po # REJANG SECTION MARK A9C1..A9CD ; Po # [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH A9DE..A9DF ; Po # [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN AA5C..AA5F ; Po # [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA AADE..AADF ; Po # [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI AAF0..AAF1 ; Po # [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM ABEB ; Po # MEETEI MAYEK CHEIKHEI FE10..FE16 ; Po # [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK FE19 ; Po # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS FE30 ; Po # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER FE45..FE46 ; Po # [2] SESAME DOT..WHITE SESAME DOT FE49..FE4C ; Po # [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE FE50..FE52 ; Po # [3] SMALL COMMA..SMALL FULL STOP FE54..FE57 ; Po # [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK FE5F..FE61 ; Po # [3] SMALL NUMBER SIGN..SMALL ASTERISK FE68 ; Po # SMALL REVERSE SOLIDUS FE6A..FE6B ; Po # [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT FF01..FF03 ; Po # [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN FF05..FF07 ; Po # [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE FF0A ; Po # FULLWIDTH ASTERISK FF0C ; Po # FULLWIDTH COMMA FF0E..FF0F ; Po # [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS FF1A..FF1B ; Po # [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON FF1F..FF20 ; Po # [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT FF3C ; Po # FULLWIDTH REVERSE SOLIDUS FF61 ; Po # HALFWIDTH IDEOGRAPHIC FULL STOP FF64..FF65 ; Po # [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT 10100..10102 ; Po # [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK 1039F ; Po # UGARITIC WORD DIVIDER 103D0 ; Po # OLD PERSIAN WORD DIVIDER 1056F ; Po # CAUCASIAN ALBANIAN CITATION MARK 10857 ; Po # IMPERIAL ARAMAIC SECTION SIGN 1091F ; Po # PHOENICIAN WORD SEPARATOR 1093F ; Po # LYDIAN TRIANGULAR MARK 10A50..10A58 ; Po # [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES 10A7F ; Po # OLD SOUTH ARABIAN NUMERIC INDICATOR 10AF0..10AF6 ; Po # [7] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION LINE FILLER 10B39..10B3F ; Po # [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION 10B99..10B9C ; Po # [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT 10ED0 ; Po # ARABIC BIBLICAL END OF VERSE 10F55..10F59 ; Po # [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT 10F86..10F89 ; Po # [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS 11047..1104D ; Po # [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS 110BB..110BC ; Po # [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN 110BE..110C1 ; Po # [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA 11140..11143 ; Po # [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK 11174..11175 ; Po # [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK 111C5..111C8 ; Po # [4] SHARADA DANDA..SHARADA SEPARATOR 111CD ; Po # SHARADA SUTRA MARK 111DB ; Po # SHARADA SIGN SIDDHAM 111DD..111DF ; Po # [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 11238..1123D ; Po # [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN 112A9 ; Po # MULTANI SECTION MARK 113D4..113D5 ; Po # [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA 113D7..113D8 ; Po # [2] TULU-TIGALARI SIGN OM PUSHPIKA..TULU-TIGALARI SIGN SHRII PUSHPIKA 1144B..1144F ; Po # [5] NEWA DANDA..NEWA ABBREVIATION SIGN 1145A..1145B ; Po # [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK 1145D ; Po # NEWA INSERTION SIGN 114C6 ; Po # TIRHUTA ABBREVIATION SIGN 115C1..115D7 ; Po # [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11643 ; Po # [3] MODI DANDA..MODI ABBREVIATION SIGN 11660..1166C ; Po # [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT 116B9 ; Po # TAKRI ABBREVIATION SIGN 1173C..1173E ; Po # [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 1183B ; Po # DOGRA ABBREVIATION SIGN 11944..11946 ; Po # [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK 119E2 ; Po # NANDINAGARI SIGN SIDDHAM 11A3F..11A46 ; Po # [8] ZANABAZAR SQUARE INITIAL HEAD MARK..ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK 11A9A..11A9C ; Po # [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD 11A9E..11AA2 ; Po # [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2 11B00..11B09 ; Po # [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU 11BE1 ; Po # SUNUWAR SIGN PVO 11C41..11C45 ; Po # [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2 11C70..11C71 ; Po # [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD 11EF7..11EF8 ; Po # [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION 11F43..11F4F ; Po # [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL 11FFF ; Po # TAMIL PUNCTUATION END OF TEXT 12470..12474 ; Po # [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12FF1..12FF2 ; Po # [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 16A6E..16A6F ; Po # [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; Po # BASSA VAH FULL STOP 16B37..16B3B ; Po # [5] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS FEEM 16B44 ; Po # PAHAWH HMONG SIGN XAUS 16D6D..16D6F ; Po # [3] KIRAT RAI SIGN YUPI..KIRAT RAI DOUBLE DANDA 16E97..16E9A ; Po # [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH 16FE2 ; Po # OLD CHINESE HOOK MARK 1BC9F ; Po # DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1DA87..1DA8B ; Po # [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS 1E5FF ; Po # OL ONAL ABBREVIATION SIGN 1E95E..1E95F ; Po # [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK # Total code points: 641 # ================================================ # General_Category=Math_Symbol 002B ; Sm # PLUS SIGN 003C..003E ; Sm # [3] LESS-THAN SIGN..GREATER-THAN SIGN 007C ; Sm # VERTICAL LINE 007E ; Sm # TILDE 00AC ; Sm # NOT SIGN 00B1 ; Sm # PLUS-MINUS SIGN 00D7 ; Sm # MULTIPLICATION SIGN 00F7 ; Sm # DIVISION SIGN 03F6 ; Sm # GREEK REVERSED LUNATE EPSILON SYMBOL 0606..0608 ; Sm # [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY 2044 ; Sm # FRACTION SLASH 2052 ; Sm # COMMERCIAL MINUS SIGN 207A..207C ; Sm # [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN 208A..208C ; Sm # [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 2118 ; Sm # SCRIPT CAPITAL P 2140..2144 ; Sm # [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y 214B ; Sm # TURNED AMPERSAND 2190..2194 ; Sm # [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 219A..219B ; Sm # [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE 21A0 ; Sm # RIGHTWARDS TWO HEADED ARROW 21A3 ; Sm # RIGHTWARDS ARROW WITH TAIL 21A6 ; Sm # RIGHTWARDS ARROW FROM BAR 21AE ; Sm # LEFT RIGHT ARROW WITH STROKE 21CE..21CF ; Sm # [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE 21D2 ; Sm # RIGHTWARDS DOUBLE ARROW 21D4 ; Sm # LEFT RIGHT DOUBLE ARROW 21F4..22FF ; Sm # [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP 2320..2321 ; Sm # [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL 237C ; Sm # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW 239B..23B3 ; Sm # [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM 23DC..23E1 ; Sm # [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET 25B7 ; Sm # WHITE RIGHT-POINTING TRIANGLE 25C1 ; Sm # WHITE LEFT-POINTING TRIANGLE 25F8..25FF ; Sm # [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE 266F ; Sm # MUSIC SHARP SIGN 27C0..27C4 ; Sm # [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET 27C7..27E5 ; Sm # [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK 27F0..27FF ; Sm # [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW 2900..2982 ; Sm # [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON 2999..29D7 ; Sm # [63] DOTTED FENCE..BLACK HOURGLASS 29DC..29FB ; Sm # [32] INCOMPLETE INFINITY..TRIPLE PLUS 29FE..2AFF ; Sm # [258] TINY..N-ARY WHITE VERTICAL BAR 2B30..2B44 ; Sm # [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET 2B47..2B4C ; Sm # [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR FB29 ; Sm # HEBREW LETTER ALTERNATIVE PLUS SIGN FE62 ; Sm # SMALL PLUS SIGN FE64..FE66 ; Sm # [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN FF0B ; Sm # FULLWIDTH PLUS SIGN FF1C..FF1E ; Sm # [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN FF5C ; Sm # FULLWIDTH VERTICAL LINE FF5E ; Sm # FULLWIDTH TILDE FFE2 ; Sm # FULLWIDTH NOT SIGN FFE9..FFEC ; Sm # [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW 10D8E..10D8F ; Sm # [2] GARAY PLUS SIGN..GARAY MINUS SIGN 1CEF0 ; Sm # MEDIUM SMALL WHITE CIRCLE WITH HORIZONTAL BAR 1D6C1 ; Sm # MATHEMATICAL BOLD NABLA 1D6DB ; Sm # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL 1D6FB ; Sm # MATHEMATICAL ITALIC NABLA 1D715 ; Sm # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL 1D735 ; Sm # MATHEMATICAL BOLD ITALIC NABLA 1D74F ; Sm # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL 1D76F ; Sm # MATHEMATICAL SANS-SERIF BOLD NABLA 1D789 ; Sm # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL 1D7A9 ; Sm # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA 1D7C3 ; Sm # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL 1EEF0..1EEF1 ; Sm # [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL 1F8D0..1F8D8 ; Sm # [9] LONG RIGHTWARDS ARROW OVER LONG LEFTWARDS ARROW..LONG LEFT RIGHT ARROW WITH DEPENDENT LOBE # Total code points: 960 # ================================================ # General_Category=Currency_Symbol 0024 ; Sc # DOLLAR SIGN 00A2..00A5 ; Sc # [4] CENT SIGN..YEN SIGN 058F ; Sc # ARMENIAN DRAM SIGN 060B ; Sc # AFGHANI SIGN 07FE..07FF ; Sc # [2] NKO DOROME SIGN..NKO TAMAN SIGN 09F2..09F3 ; Sc # [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN 09FB ; Sc # BENGALI GANDA MARK 0AF1 ; Sc # GUJARATI RUPEE SIGN 0BF9 ; Sc # TAMIL RUPEE SIGN 0E3F ; Sc # THAI CURRENCY SYMBOL BAHT 17DB ; Sc # KHMER CURRENCY SYMBOL RIEL 20A0..20C1 ; Sc # [34] EURO-CURRENCY SIGN..SAUDI RIYAL SIGN A838 ; Sc # NORTH INDIC RUPEE MARK FDFC ; Sc # RIAL SIGN FE69 ; Sc # SMALL DOLLAR SIGN FF04 ; Sc # FULLWIDTH DOLLAR SIGN FFE0..FFE1 ; Sc # [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN FFE5..FFE6 ; Sc # [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN 11FDD..11FE0 ; Sc # [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN 1E2FF ; Sc # WANCHO NGUN SIGN 1ECB0 ; Sc # INDIC SIYAQ RUPEE MARK # Total code points: 64 # ================================================ # General_Category=Modifier_Symbol 005E ; Sk # CIRCUMFLEX ACCENT 0060 ; Sk # GRAVE ACCENT 00A8 ; Sk # DIAERESIS 00AF ; Sk # MACRON 00B4 ; Sk # ACUTE ACCENT 00B8 ; Sk # CEDILLA 02C2..02C5 ; Sk # [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD 02D2..02DF ; Sk # [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT 02E5..02EB ; Sk # [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK 02ED ; Sk # MODIFIER LETTER UNASPIRATED 02EF..02FF ; Sk # [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW 0375 ; Sk # GREEK LOWER NUMERAL SIGN 0384..0385 ; Sk # [2] GREEK TONOS..GREEK DIALYTIKA TONOS 0888 ; Sk # ARABIC RAISED ROUND DOT 1FBD ; Sk # GREEK KORONIS 1FBF..1FC1 ; Sk # [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI 1FCD..1FCF ; Sk # [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI 1FDD..1FDF ; Sk # [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI 1FED..1FEF ; Sk # [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA 1FFD..1FFE ; Sk # [2] GREEK OXIA..GREEK DASIA 309B..309C ; Sk # [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK A700..A716 ; Sk # [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR A720..A721 ; Sk # [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE A789..A78A ; Sk # [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN AB5B ; Sk # MODIFIER BREVE WITH INVERTED BREVE AB6A..AB6B ; Sk # [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK FBB2..FBC2 ; Sk # [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE FF3E ; Sk # FULLWIDTH CIRCUMFLEX ACCENT FF40 ; Sk # FULLWIDTH GRAVE ACCENT FFE3 ; Sk # FULLWIDTH MACRON 1F3FB..1F3FF ; Sk # [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 # Total code points: 125 # ================================================ # General_Category=Other_Symbol 00A6 ; So # BROKEN BAR 00A9 ; So # COPYRIGHT SIGN 00AE ; So # REGISTERED SIGN 00B0 ; So # DEGREE SIGN 0482 ; So # CYRILLIC THOUSANDS SIGN 058D..058E ; So # [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN 060E..060F ; So # [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA 06DE ; So # ARABIC START OF RUB EL HIZB 06E9 ; So # ARABIC PLACE OF SAJDAH 06FD..06FE ; So # [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 07F6 ; So # NKO SYMBOL OO DENNEN 09FA ; So # BENGALI ISSHAR 0B70 ; So # ORIYA ISSHAR 0BF3..0BF8 ; So # [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN 0BFA ; So # TAMIL NUMBER SIGN 0C7F ; So # TELUGU SIGN TUUMU 0D4F ; So # MALAYALAM SIGN PARA 0D79 ; So # MALAYALAM DATE MARK 0F01..0F03 ; So # [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA 0F13 ; So # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN 0F15..0F17 ; So # [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS 0F1A..0F1F ; So # [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG 0F34 ; So # TIBETAN MARK BSDUS RTAGS 0F36 ; So # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN 0F38 ; So # TIBETAN MARK CHE MGO 0FBE..0FC5 ; So # [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE 0FC7..0FCC ; So # [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL 0FCE..0FCF ; So # [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM 0FD5..0FD8 ; So # [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS 109E..109F ; So # [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION 1390..1399 ; So # [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT 166D ; So # CANADIAN SYLLABICS CHI SIGN 1940 ; So # LIMBU SIGN LOO 19DE..19FF ; So # [34] NEW TAI LUE SIGN LAE..KHMER SYMBOL DAP-PRAM ROC 1B61..1B6A ; So # [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE 1B74..1B7C ; So # [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING 2100..2101 ; So # [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2103..2106 ; So # [4] DEGREE CELSIUS..CADA UNA 2108..2109 ; So # [2] SCRUPLE..DEGREE FAHRENHEIT 2114 ; So # L B BAR SYMBOL 2116..2117 ; So # [2] NUMERO SIGN..SOUND RECORDING COPYRIGHT 211E..2123 ; So # [6] PRESCRIPTION TAKE..VERSICLE 2125 ; So # OUNCE SIGN 2127 ; So # INVERTED OHM SIGN 2129 ; So # TURNED GREEK SMALL LETTER IOTA 212E ; So # ESTIMATED SYMBOL 213A..213B ; So # [2] ROTATED CAPITAL Q..FACSIMILE SIGN 214A ; So # PROPERTY LINE 214C..214D ; So # [2] PER SIGN..AKTIESELSKAB 214F ; So # SYMBOL FOR SAMARITAN SOURCE 218A..218B ; So # [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2195..2199 ; So # [5] UP DOWN ARROW..SOUTH WEST ARROW 219C..219F ; So # [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW 21A1..21A2 ; So # [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL 21A4..21A5 ; So # [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR 21A7..21AD ; So # [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW 21AF..21CD ; So # [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE 21D0..21D1 ; So # [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW 21D3 ; So # DOWNWARDS DOUBLE ARROW 21D5..21F3 ; So # [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW 2300..2307 ; So # [8] DIAMETER SIGN..WAVY LINE 230C..231F ; So # [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER 2322..2328 ; So # [7] FROWN..KEYBOARD 232B..237B ; So # [81] ERASE TO THE LEFT..NOT CHECK MARK 237D..239A ; So # [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL 23B4..23DB ; So # [40] TOP SQUARE BRACKET..FUSE 23E2..2429 ; So # [72] WHITE TRAPEZIUM..SYMBOL FOR DELETE MEDIUM SHADE FORM 2440..244A ; So # [11] OCR HOOK..OCR DOUBLE BACKSLASH 249C..24E9 ; So # [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z 2500..25B6 ; So # [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE 25B8..25C0 ; So # [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE 25C2..25F7 ; So # [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT 2600..266E ; So # [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN 2670..2767 ; So # [248] WEST SYRIAC CROSS..ROTATED FLORAL HEART BULLET 2794..27BF ; So # [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP 2800..28FF ; So # [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 2B00..2B2F ; So # [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE 2B45..2B46 ; So # [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW 2B4D..2B73 ; So # [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2BFF ; So # [138] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..HELLSCHREIBER PAUSE SYMBOL 2CE5..2CEA ; So # [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA 2E50..2E51 ; So # [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR 2E80..2E99 ; So # [26] CJK RADICAL REPEAT..CJK RADICAL RAP 2E9B..2EF3 ; So # [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE 2F00..2FD5 ; So # [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE 2FF0..2FFF ; So # [16] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION 3004 ; So # JAPANESE INDUSTRIAL STANDARD SYMBOL 3012..3013 ; So # [2] POSTAL MARK..GETA MARK 3020 ; So # POSTAL MARK FACE 3036..3037 ; So # [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL 303E..303F ; So # [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE 3190..3191 ; So # [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK 3196..319F ; So # [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK 31C0..31E5 ; So # [38] CJK STROKE T..CJK STROKE SZP 31EF ; So # IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION 3200..321E ; So # [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU 322A..3247 ; So # [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO 3250 ; So # PARTNERSHIP SIGN 3260..327F ; So # [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL 328A..32B0 ; So # [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT 32C0..33FF ; So # [320] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE GAL 4DC0..4DFF ; So # [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION A490..A4C6 ; So # [55] YI RADICAL QOT..YI RADICAL KE A828..A82B ; So # [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 A836..A837 ; So # [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK A839 ; So # NORTH INDIC QUANTITY MARK AA77..AA79 ; So # [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO FBC3..FBD2 ; So # [16] ARABIC LIGATURE JALLA WA-ALAA..ARABIC LIGATURE ALAYHI AR-RAHMAH FD40..FD4F ; So # [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH FD90..FD91 ; So # [2] ARABIC LIGATURE RAHMATU ALLAAHI ALAYH..ARABIC LIGATURE RAHMATU ALLAAHI ALAYHAA FDC8..FDCF ; So # [8] ARABIC LIGATURE RAHIMAHU ALLAAH TAAALAA..ARABIC LIGATURE SALAAMUHU ALAYNAA FDFD..FDFF ; So # [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL FFE4 ; So # FULLWIDTH BROKEN BAR FFE8 ; So # HALFWIDTH FORMS LIGHT VERTICAL FFED..FFEE ; So # [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE FFFC..FFFD ; So # [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER 10137..1013F ; So # [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT 10179..10189 ; So # [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN 1018C..1018E ; So # [3] GREEK SINUSOID SIGN..NOMISMA SIGN 10190..1019C ; So # [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL 101A0 ; So # GREEK SYMBOL TAU RHO 101D0..101FC ; So # [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND 10877..10878 ; So # [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON 10AC8 ; So # MANICHAEAN SIGN UD 10ED1..10ED8 ; So # [8] ARABIC LIGATURE ALAYHAA AS-SALAATU WAS-SALAAM..ARABIC LIGATURE NAWWARA ALLAAHU MARQADAH 1173F ; So # AHOM SYMBOL VI 11FD5..11FDC ; So # [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI 11FE1..11FF1 ; So # [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA 16B3C..16B3F ; So # [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB 16B45 ; So # PAHAWH HMONG SIGN CIM TSOV ROG 1BC9C ; So # DUPLOYAN SIGN O WITH CROSS 1CC00..1CCEF ; So # [240] UP-POINTING GO-KART..OUTLINED LATIN CAPITAL LETTER Z 1CCFA..1CCFC ; So # [3] SNAKE SYMBOL..NOSE SYMBOL 1CD00..1CEB3 ; So # [436] BLOCK OCTANT-3..BLACK RIGHT TRIANGLE CARET 1CEBA..1CED0 ; So # [23] FRAGILE SYMBOL..LEUKOTHEA 1CEE0..1CEEF ; So # [16] GEOMANTIC FIGURE POPULUS..GEOMANTIC FIGURE VIA 1CF50..1CFC3 ; So # [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK 1D000..1D0F5 ; So # [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO 1D100..1D126 ; So # [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 1D129..1D164 ; So # [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE 1D16A..1D16C ; So # [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 1D183..1D184 ; So # [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D18C..1D1A9 ; So # [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH 1D1AE..1D1EA ; So # [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON 1D200..1D241 ; So # [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D245 ; So # GREEK MUSICAL LEIMMA 1D300..1D356 ; So # [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D800..1D9FF ; So # [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD 1DA37..1DA3A ; So # [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE 1DA6D..1DA74 ; So # [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING 1DA76..1DA83 ; So # [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH 1DA85..1DA86 ; So # [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS 1E14F ; So # NYIAKENG PUACHUE HMONG CIRCLED CA 1ECAC ; So # INDIC SIYAQ PLACEHOLDER 1ED2E ; So # OTTOMAN SIYAQ MARRATAN 1F000..1F02B ; So # [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK 1F030..1F093 ; So # [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 1F0A0..1F0AE ; So # [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES 1F0B1..1F0BF ; So # [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER 1F0C1..1F0CF ; So # [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER 1F0D1..1F0F5 ; So # [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 1F10D..1F1AD ; So # [161] CIRCLED ZERO WITH SLASH..MASK WORK SYMBOL 1F1E6..1F202 ; So # [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA 1F210..1F23B ; So # [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D 1F240..1F248 ; So # [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F250..1F251 ; So # [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT 1F260..1F265 ; So # [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI 1F300..1F3FA ; So # [251] CYCLONE..AMPHORA 1F400..1F6D8 ; So # [729] RAT..LANDSLIDE 1F6DC..1F6EC ; So # [17] WIRELESS..AIRPLANE ARRIVING 1F6F0..1F6FC ; So # [13] SATELLITE..ROLLER SKATE 1F700..1F7D9 ; So # [218] ALCHEMICAL SYMBOL FOR QUINTESSENCE..NINE POINTED WHITE STAR 1F7E0..1F7EB ; So # [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE 1F7F0 ; So # HEAVY EQUALS SIGN 1F800..1F80B ; So # [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F810..1F847 ; So # [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW 1F850..1F859 ; So # [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; So # [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; So # [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS 1F8B0..1F8BB ; So # [12] ARROW POINTING UPWARDS THEN NORTH WEST..SOUTH WEST ARROW FROM BAR 1F8C0..1F8C1 ; So # [2] LEFTWARDS ARROW FROM DOWNWARDS ARROW..RIGHTWARDS ARROW FROM DOWNWARDS ARROW 1F900..1FA57 ; So # [344] CIRCLED CROSS FORMEE WITH FOUR DOTS..BLACK CHESS ALFIL 1FA60..1FA6D ; So # [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER 1FA70..1FA7C ; So # [13] BALLET SHOES..CRUTCH 1FA80..1FA8A ; So # [11] YO-YO..TROMBONE 1FA8E..1FAC6 ; So # [57] TREASURE CHEST..FINGERPRINT 1FAC8 ; So # HAIRY CREATURE 1FACD..1FADC ; So # [16] ORCA..ROOT VEGETABLE 1FADF..1FAEA ; So # [12] SPLATTER..DISTORTED FACE 1FAEF..1FAF8 ; So # [10] FIGHT CLOUD..RIGHTWARDS PUSHING HAND 1FB00..1FB92 ; So # [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK 1FB94..1FBEF ; So # [92] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE 1FBFA ; So # ALARM BELL SYMBOL # Total code points: 7468 # ================================================ # General_Category=Initial_Punctuation 00AB ; Pi # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 2018 ; Pi # LEFT SINGLE QUOTATION MARK 201B..201C ; Pi # [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK 201F ; Pi # DOUBLE HIGH-REVERSED-9 QUOTATION MARK 2039 ; Pi # SINGLE LEFT-POINTING ANGLE QUOTATION MARK 2E02 ; Pi # LEFT SUBSTITUTION BRACKET 2E04 ; Pi # LEFT DOTTED SUBSTITUTION BRACKET 2E09 ; Pi # LEFT TRANSPOSITION BRACKET 2E0C ; Pi # LEFT RAISED OMISSION BRACKET 2E1C ; Pi # LEFT LOW PARAPHRASE BRACKET 2E20 ; Pi # LEFT VERTICAL BAR WITH QUILL # Total code points: 12 # ================================================ # General_Category=Final_Punctuation 00BB ; Pf # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 2019 ; Pf # RIGHT SINGLE QUOTATION MARK 201D ; Pf # RIGHT DOUBLE QUOTATION MARK 203A ; Pf # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 2E03 ; Pf # RIGHT SUBSTITUTION BRACKET 2E05 ; Pf # RIGHT DOTTED SUBSTITUTION BRACKET 2E0A ; Pf # RIGHT TRANSPOSITION BRACKET 2E0D ; Pf # RIGHT RAISED OMISSION BRACKET 2E1D ; Pf # RIGHT LOW PARAPHRASE BRACKET 2E21 ; Pf # RIGHT VERTICAL BAR WITH QUILL # Total code points: 10 # EOF node-unicode-data-main/data/17.0.0-derived-binary-properties.txt0000644000175000017500000004210415106571514023203 0ustar yaddyadd# DerivedBinaryProperties-17.0.0.txt # Date: 2025-01-27, 18:09:10 GMT # © 2025 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use and license, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see https://www.unicode.org/reports/tr44/ # ================================================ # Bidi_Mirrored (listing UnicodeData.txt, field 9: see UAX #44: https://www.unicode.org/reports/tr44/) 0028 ; Bidi_Mirrored # Ps LEFT PARENTHESIS 0029 ; Bidi_Mirrored # Pe RIGHT PARENTHESIS 003C ; Bidi_Mirrored # Sm LESS-THAN SIGN 003E ; Bidi_Mirrored # Sm GREATER-THAN SIGN 005B ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET 005D ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET 007B ; Bidi_Mirrored # Ps LEFT CURLY BRACKET 007D ; Bidi_Mirrored # Pe RIGHT CURLY BRACKET 00AB ; Bidi_Mirrored # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00BB ; Bidi_Mirrored # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0F3A ; Bidi_Mirrored # Ps TIBETAN MARK GUG RTAGS GYON 0F3B ; Bidi_Mirrored # Pe TIBETAN MARK GUG RTAGS GYAS 0F3C ; Bidi_Mirrored # Ps TIBETAN MARK ANG KHANG GYON 0F3D ; Bidi_Mirrored # Pe TIBETAN MARK ANG KHANG GYAS 169B ; Bidi_Mirrored # Ps OGHAM FEATHER MARK 169C ; Bidi_Mirrored # Pe OGHAM REVERSED FEATHER MARK 2039 ; Bidi_Mirrored # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK 203A ; Bidi_Mirrored # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 2045 ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH QUILL 2046 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH QUILL 207D ; Bidi_Mirrored # Ps SUPERSCRIPT LEFT PARENTHESIS 207E ; Bidi_Mirrored # Pe SUPERSCRIPT RIGHT PARENTHESIS 208D ; Bidi_Mirrored # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Bidi_Mirrored # Pe SUBSCRIPT RIGHT PARENTHESIS 2140 ; Bidi_Mirrored # Sm DOUBLE-STRUCK N-ARY SUMMATION 2201..2204 ; Bidi_Mirrored # Sm [4] COMPLEMENT..THERE DOES NOT EXIST 2208..220D ; Bidi_Mirrored # Sm [6] ELEMENT OF..SMALL CONTAINS AS MEMBER 2211 ; Bidi_Mirrored # Sm N-ARY SUMMATION 2215..2216 ; Bidi_Mirrored # Sm [2] DIVISION SLASH..SET MINUS 221A..221D ; Bidi_Mirrored # Sm [4] SQUARE ROOT..PROPORTIONAL TO 221F..2222 ; Bidi_Mirrored # Sm [4] RIGHT ANGLE..SPHERICAL ANGLE 2224 ; Bidi_Mirrored # Sm DOES NOT DIVIDE 2226 ; Bidi_Mirrored # Sm NOT PARALLEL TO 222B..2233 ; Bidi_Mirrored # Sm [9] INTEGRAL..ANTICLOCKWISE CONTOUR INTEGRAL 2239 ; Bidi_Mirrored # Sm EXCESS 223B..224C ; Bidi_Mirrored # Sm [18] HOMOTHETIC..ALL EQUAL TO 2252..2255 ; Bidi_Mirrored # Sm [4] APPROXIMATELY EQUAL TO OR THE IMAGE OF..EQUALS COLON 225F..2260 ; Bidi_Mirrored # Sm [2] QUESTIONED EQUAL TO..NOT EQUAL TO 2262 ; Bidi_Mirrored # Sm NOT IDENTICAL TO 2264..226B ; Bidi_Mirrored # Sm [8] LESS-THAN OR EQUAL TO..MUCH GREATER-THAN 226D..228C ; Bidi_Mirrored # Sm [32] NOT EQUIVALENT TO..MULTISET 228F..2292 ; Bidi_Mirrored # Sm [4] SQUARE IMAGE OF..SQUARE ORIGINAL OF OR EQUAL TO 2298 ; Bidi_Mirrored # Sm CIRCLED DIVISION SLASH 22A2..22A3 ; Bidi_Mirrored # Sm [2] RIGHT TACK..LEFT TACK 22A6..22B8 ; Bidi_Mirrored # Sm [19] ASSERTION..MULTIMAP 22BE..22BF ; Bidi_Mirrored # Sm [2] RIGHT ANGLE WITH ARC..RIGHT TRIANGLE 22C9..22CD ; Bidi_Mirrored # Sm [5] LEFT NORMAL FACTOR SEMIDIRECT PRODUCT..REVERSED TILDE EQUALS 22D0..22D1 ; Bidi_Mirrored # Sm [2] DOUBLE SUBSET..DOUBLE SUPERSET 22D6..22ED ; Bidi_Mirrored # Sm [24] LESS-THAN WITH DOT..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL 22F0..22FF ; Bidi_Mirrored # Sm [16] UP RIGHT DIAGONAL ELLIPSIS..Z NOTATION BAG MEMBERSHIP 2308 ; Bidi_Mirrored # Ps LEFT CEILING 2309 ; Bidi_Mirrored # Pe RIGHT CEILING 230A ; Bidi_Mirrored # Ps LEFT FLOOR 230B ; Bidi_Mirrored # Pe RIGHT FLOOR 2320..2321 ; Bidi_Mirrored # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL 2329 ; Bidi_Mirrored # Ps LEFT-POINTING ANGLE BRACKET 232A ; Bidi_Mirrored # Pe RIGHT-POINTING ANGLE BRACKET 2768 ; Bidi_Mirrored # Ps MEDIUM LEFT PARENTHESIS ORNAMENT 2769 ; Bidi_Mirrored # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT 276A ; Bidi_Mirrored # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT 276B ; Bidi_Mirrored # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT 276C ; Bidi_Mirrored # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT 276D ; Bidi_Mirrored # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT 276E ; Bidi_Mirrored # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT 276F ; Bidi_Mirrored # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT 2770 ; Bidi_Mirrored # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT 2771 ; Bidi_Mirrored # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT 2772 ; Bidi_Mirrored # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT 2773 ; Bidi_Mirrored # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT 2774 ; Bidi_Mirrored # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT 2775 ; Bidi_Mirrored # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT 27C0 ; Bidi_Mirrored # Sm THREE DIMENSIONAL ANGLE 27C3..27C4 ; Bidi_Mirrored # Sm [2] OPEN SUBSET..OPEN SUPERSET 27C5 ; Bidi_Mirrored # Ps LEFT S-SHAPED BAG DELIMITER 27C6 ; Bidi_Mirrored # Pe RIGHT S-SHAPED BAG DELIMITER 27C8..27C9 ; Bidi_Mirrored # Sm [2] REVERSE SOLIDUS PRECEDING SUBSET..SUPERSET PRECEDING SOLIDUS 27CB..27CD ; Bidi_Mirrored # Sm [3] MATHEMATICAL RISING DIAGONAL..MATHEMATICAL FALLING DIAGONAL 27D3..27D6 ; Bidi_Mirrored # Sm [4] LOWER RIGHT CORNER WITH DOT..RIGHT OUTER JOIN 27DC..27DE ; Bidi_Mirrored # Sm [3] LEFT MULTIMAP..LONG LEFT TACK 27E2..27E5 ; Bidi_Mirrored # Sm [4] WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK..WHITE SQUARE WITH RIGHTWARDS TICK 27E6 ; Bidi_Mirrored # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET 27E7 ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET 27E8 ; Bidi_Mirrored # Ps MATHEMATICAL LEFT ANGLE BRACKET 27E9 ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT ANGLE BRACKET 27EA ; Bidi_Mirrored # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET 27EB ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27EC ; Bidi_Mirrored # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET 27ED ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET 27EE ; Bidi_Mirrored # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS 27EF ; Bidi_Mirrored # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS 2983 ; Bidi_Mirrored # Ps LEFT WHITE CURLY BRACKET 2984 ; Bidi_Mirrored # Pe RIGHT WHITE CURLY BRACKET 2985 ; Bidi_Mirrored # Ps LEFT WHITE PARENTHESIS 2986 ; Bidi_Mirrored # Pe RIGHT WHITE PARENTHESIS 2987 ; Bidi_Mirrored # Ps Z NOTATION LEFT IMAGE BRACKET 2988 ; Bidi_Mirrored # Pe Z NOTATION RIGHT IMAGE BRACKET 2989 ; Bidi_Mirrored # Ps Z NOTATION LEFT BINDING BRACKET 298A ; Bidi_Mirrored # Pe Z NOTATION RIGHT BINDING BRACKET 298B ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH UNDERBAR 298C ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH UNDERBAR 298D ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 298E ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 298F ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER 2991 ; Bidi_Mirrored # Ps LEFT ANGLE BRACKET WITH DOT 2992 ; Bidi_Mirrored # Pe RIGHT ANGLE BRACKET WITH DOT 2993 ; Bidi_Mirrored # Ps LEFT ARC LESS-THAN BRACKET 2994 ; Bidi_Mirrored # Pe RIGHT ARC GREATER-THAN BRACKET 2995 ; Bidi_Mirrored # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET 2996 ; Bidi_Mirrored # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET 2997 ; Bidi_Mirrored # Ps LEFT BLACK TORTOISE SHELL BRACKET 2998 ; Bidi_Mirrored # Pe RIGHT BLACK TORTOISE SHELL BRACKET 299B..29A0 ; Bidi_Mirrored # Sm [6] MEASURED ANGLE OPENING LEFT..SPHERICAL ANGLE OPENING LEFT 29A2..29AF ; Bidi_Mirrored # Sm [14] TURNED ANGLE..MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN 29B8 ; Bidi_Mirrored # Sm CIRCLED REVERSE SOLIDUS 29C0..29C5 ; Bidi_Mirrored # Sm [6] CIRCLED LESS-THAN..SQUARED FALLING DIAGONAL SLASH 29C9 ; Bidi_Mirrored # Sm TWO JOINED SQUARES 29CE..29D2 ; Bidi_Mirrored # Sm [5] RIGHT TRIANGLE ABOVE LEFT TRIANGLE..BOWTIE WITH RIGHT HALF BLACK 29D4..29D5 ; Bidi_Mirrored # Sm [2] TIMES WITH LEFT HALF BLACK..TIMES WITH RIGHT HALF BLACK 29D8 ; Bidi_Mirrored # Ps LEFT WIGGLY FENCE 29D9 ; Bidi_Mirrored # Pe RIGHT WIGGLY FENCE 29DA ; Bidi_Mirrored # Ps LEFT DOUBLE WIGGLY FENCE 29DB ; Bidi_Mirrored # Pe RIGHT DOUBLE WIGGLY FENCE 29DC ; Bidi_Mirrored # Sm INCOMPLETE INFINITY 29E1 ; Bidi_Mirrored # Sm INCREASES AS 29E3..29E5 ; Bidi_Mirrored # Sm [3] EQUALS SIGN AND SLANTED PARALLEL..IDENTICAL TO AND SLANTED PARALLEL 29E8..29E9 ; Bidi_Mirrored # Sm [2] DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK..DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK 29F4..29F9 ; Bidi_Mirrored # Sm [6] RULE-DELAYED..BIG REVERSE SOLIDUS 29FC ; Bidi_Mirrored # Ps LEFT-POINTING CURVED ANGLE BRACKET 29FD ; Bidi_Mirrored # Pe RIGHT-POINTING CURVED ANGLE BRACKET 2A0A..2A1C ; Bidi_Mirrored # Sm [19] MODULO TWO SUM..INTEGRAL WITH UNDERBAR 2A1E..2A21 ; Bidi_Mirrored # Sm [4] LARGE LEFT TRIANGLE OPERATOR..Z NOTATION SCHEMA PROJECTION 2A24 ; Bidi_Mirrored # Sm PLUS SIGN WITH TILDE ABOVE 2A26 ; Bidi_Mirrored # Sm PLUS SIGN WITH TILDE BELOW 2A29 ; Bidi_Mirrored # Sm MINUS SIGN WITH COMMA ABOVE 2A2B..2A2E ; Bidi_Mirrored # Sm [4] MINUS SIGN WITH FALLING DOTS..PLUS SIGN IN RIGHT HALF CIRCLE 2A34..2A35 ; Bidi_Mirrored # Sm [2] MULTIPLICATION SIGN IN LEFT HALF CIRCLE..MULTIPLICATION SIGN IN RIGHT HALF CIRCLE 2A3C..2A3E ; Bidi_Mirrored # Sm [3] INTERIOR PRODUCT..Z NOTATION RELATIONAL COMPOSITION 2A57..2A58 ; Bidi_Mirrored # Sm [2] SLOPING LARGE OR..SLOPING LARGE AND 2A64..2A65 ; Bidi_Mirrored # Sm [2] Z NOTATION DOMAIN ANTIRESTRICTION..Z NOTATION RANGE ANTIRESTRICTION 2A6A..2A6D ; Bidi_Mirrored # Sm [4] TILDE OPERATOR WITH DOT ABOVE..CONGRUENT WITH DOT ABOVE 2A6F..2A70 ; Bidi_Mirrored # Sm [2] ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT..APPROXIMATELY EQUAL OR EQUAL TO 2A73..2A74 ; Bidi_Mirrored # Sm [2] EQUALS SIGN ABOVE TILDE OPERATOR..DOUBLE COLON EQUAL 2A79..2AA3 ; Bidi_Mirrored # Sm [43] LESS-THAN WITH CIRCLE INSIDE..DOUBLE NESTED LESS-THAN WITH UNDERBAR 2AA6..2AAD ; Bidi_Mirrored # Sm [8] LESS-THAN CLOSED BY CURVE..LARGER THAN OR EQUAL TO 2AAF..2AD6 ; Bidi_Mirrored # Sm [40] PRECEDES ABOVE SINGLE-LINE EQUALS SIGN..SUPERSET ABOVE SUPERSET 2ADC ; Bidi_Mirrored # Sm FORKING 2ADE ; Bidi_Mirrored # Sm SHORT LEFT TACK 2AE2..2AE6 ; Bidi_Mirrored # Sm [5] VERTICAL BAR TRIPLE RIGHT TURNSTILE..LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL 2AEC..2AEE ; Bidi_Mirrored # Sm [3] DOUBLE STROKE NOT SIGN..DOES NOT DIVIDE WITH REVERSED NEGATION SLASH 2AF3 ; Bidi_Mirrored # Sm PARALLEL WITH TILDE OPERATOR 2AF7..2AFB ; Bidi_Mirrored # Sm [5] TRIPLE NESTED LESS-THAN..TRIPLE SOLIDUS BINARY RELATION 2AFD ; Bidi_Mirrored # Sm DOUBLE SOLIDUS OPERATOR 2BFE ; Bidi_Mirrored # So REVERSED RIGHT ANGLE 2E02 ; Bidi_Mirrored # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Bidi_Mirrored # Pf RIGHT SUBSTITUTION BRACKET 2E04 ; Bidi_Mirrored # Pi LEFT DOTTED SUBSTITUTION BRACKET 2E05 ; Bidi_Mirrored # Pf RIGHT DOTTED SUBSTITUTION BRACKET 2E09 ; Bidi_Mirrored # Pi LEFT TRANSPOSITION BRACKET 2E0A ; Bidi_Mirrored # Pf RIGHT TRANSPOSITION BRACKET 2E0C ; Bidi_Mirrored # Pi LEFT RAISED OMISSION BRACKET 2E0D ; Bidi_Mirrored # Pf RIGHT RAISED OMISSION BRACKET 2E1C ; Bidi_Mirrored # Pi LEFT LOW PARAPHRASE BRACKET 2E1D ; Bidi_Mirrored # Pf RIGHT LOW PARAPHRASE BRACKET 2E20 ; Bidi_Mirrored # Pi LEFT VERTICAL BAR WITH QUILL 2E21 ; Bidi_Mirrored # Pf RIGHT VERTICAL BAR WITH QUILL 2E22 ; Bidi_Mirrored # Ps TOP LEFT HALF BRACKET 2E23 ; Bidi_Mirrored # Pe TOP RIGHT HALF BRACKET 2E24 ; Bidi_Mirrored # Ps BOTTOM LEFT HALF BRACKET 2E25 ; Bidi_Mirrored # Pe BOTTOM RIGHT HALF BRACKET 2E26 ; Bidi_Mirrored # Ps LEFT SIDEWAYS U BRACKET 2E27 ; Bidi_Mirrored # Pe RIGHT SIDEWAYS U BRACKET 2E28 ; Bidi_Mirrored # Ps LEFT DOUBLE PARENTHESIS 2E29 ; Bidi_Mirrored # Pe RIGHT DOUBLE PARENTHESIS 2E55 ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH STROKE 2E56 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH STROKE 2E57 ; Bidi_Mirrored # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE 2E58 ; Bidi_Mirrored # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE 2E59 ; Bidi_Mirrored # Ps TOP HALF LEFT PARENTHESIS 2E5A ; Bidi_Mirrored # Pe TOP HALF RIGHT PARENTHESIS 2E5B ; Bidi_Mirrored # Ps BOTTOM HALF LEFT PARENTHESIS 2E5C ; Bidi_Mirrored # Pe BOTTOM HALF RIGHT PARENTHESIS 3008 ; Bidi_Mirrored # Ps LEFT ANGLE BRACKET 3009 ; Bidi_Mirrored # Pe RIGHT ANGLE BRACKET 300A ; Bidi_Mirrored # Ps LEFT DOUBLE ANGLE BRACKET 300B ; Bidi_Mirrored # Pe RIGHT DOUBLE ANGLE BRACKET 300C ; Bidi_Mirrored # Ps LEFT CORNER BRACKET 300D ; Bidi_Mirrored # Pe RIGHT CORNER BRACKET 300E ; Bidi_Mirrored # Ps LEFT WHITE CORNER BRACKET 300F ; Bidi_Mirrored # Pe RIGHT WHITE CORNER BRACKET 3010 ; Bidi_Mirrored # Ps LEFT BLACK LENTICULAR BRACKET 3011 ; Bidi_Mirrored # Pe RIGHT BLACK LENTICULAR BRACKET 3014 ; Bidi_Mirrored # Ps LEFT TORTOISE SHELL BRACKET 3015 ; Bidi_Mirrored # Pe RIGHT TORTOISE SHELL BRACKET 3016 ; Bidi_Mirrored # Ps LEFT WHITE LENTICULAR BRACKET 3017 ; Bidi_Mirrored # Pe RIGHT WHITE LENTICULAR BRACKET 3018 ; Bidi_Mirrored # Ps LEFT WHITE TORTOISE SHELL BRACKET 3019 ; Bidi_Mirrored # Pe RIGHT WHITE TORTOISE SHELL BRACKET 301A ; Bidi_Mirrored # Ps LEFT WHITE SQUARE BRACKET 301B ; Bidi_Mirrored # Pe RIGHT WHITE SQUARE BRACKET FE59 ; Bidi_Mirrored # Ps SMALL LEFT PARENTHESIS FE5A ; Bidi_Mirrored # Pe SMALL RIGHT PARENTHESIS FE5B ; Bidi_Mirrored # Ps SMALL LEFT CURLY BRACKET FE5C ; Bidi_Mirrored # Pe SMALL RIGHT CURLY BRACKET FE5D ; Bidi_Mirrored # Ps SMALL LEFT TORTOISE SHELL BRACKET FE5E ; Bidi_Mirrored # Pe SMALL RIGHT TORTOISE SHELL BRACKET FE64..FE65 ; Bidi_Mirrored # Sm [2] SMALL LESS-THAN SIGN..SMALL GREATER-THAN SIGN FF08 ; Bidi_Mirrored # Ps FULLWIDTH LEFT PARENTHESIS FF09 ; Bidi_Mirrored # Pe FULLWIDTH RIGHT PARENTHESIS FF1C ; Bidi_Mirrored # Sm FULLWIDTH LESS-THAN SIGN FF1E ; Bidi_Mirrored # Sm FULLWIDTH GREATER-THAN SIGN FF3B ; Bidi_Mirrored # Ps FULLWIDTH LEFT SQUARE BRACKET FF3D ; Bidi_Mirrored # Pe FULLWIDTH RIGHT SQUARE BRACKET FF5B ; Bidi_Mirrored # Ps FULLWIDTH LEFT CURLY BRACKET FF5D ; Bidi_Mirrored # Pe FULLWIDTH RIGHT CURLY BRACKET FF5F ; Bidi_Mirrored # Ps FULLWIDTH LEFT WHITE PARENTHESIS FF60 ; Bidi_Mirrored # Pe FULLWIDTH RIGHT WHITE PARENTHESIS FF62 ; Bidi_Mirrored # Ps HALFWIDTH LEFT CORNER BRACKET FF63 ; Bidi_Mirrored # Pe HALFWIDTH RIGHT CORNER BRACKET 1D6DB ; Bidi_Mirrored # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL 1D715 ; Bidi_Mirrored # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL 1D74F ; Bidi_Mirrored # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL 1D789 ; Bidi_Mirrored # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL 1D7C3 ; Bidi_Mirrored # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL # Total code points: 554 # EOF node-unicode-data-main/.nvmrc0000644000175000017500000000000315106571514015030 0ustar yaddyadd22 node-unicode-data-main/clone-repos.sh0000755000175000017500000000034515106571514016500 0ustar yaddyadd#!/usr/bin/env bash cd "$(dirname "${BASH_SOURCE}")"; VERSIONS=$(node scripts/log-versions.js); mkdir -p output; cd output; for version in $VERSIONS; do git clone "git@github.com:node-unicode/unicode-${version}.git"; done; node-unicode-data-main/README.md0000644000175000017500000002375215106571514015201 0ustar yaddyadd# node-unicode-data JavaScript-compatible Unicode data generator. Arrays of code points, arrays of symbols, and regular expressions for every Unicode version’s categories, scripts, script extensions, blocks, bidi data, and other properties — neatly packaged into a separate npm package per Unicode version. ## Using the data in your scripts To use the generated data, simply install one of [the npm modules generated by this script](https://www.npmjs.com/org/unicode). Separate packages are available for each Unicode version. This allows you to do stuff like: ```js // Get an array of all code points with the `White_Space` property: const codePoints = require('@unicode/unicode-6.3.0/Binary_Property/White_Space/code-points'); // Get an array of strings (containing one symbol each) in the `Lu` category: const symbols = require('@unicode/unicode-6.3.0/General_Category/Uppercase_Letter/symbols'); // Get a regular expression that matches any symbol in the `Aegean Numbers` block: const regex = require('@unicode/unicode-6.3.0/Block/Aegean_Numbers/regex'); // Get an array of all code points in the `Egyptian_Hieroglyphs` script: const hieroglyphs = require('@unicode/unicode-6.3.0/Script/Egyptian_Hieroglyphs/code-points'); // Get the canonical category a given code point belongs to: // (Note: U+0041 is LATIN CAPITAL LETTER A) const category = require('@unicode/unicode-6.3.0/General_Category').get(0x41); // Get an array of all code points with a given bidi class: const lre = require('@unicode/unicode-6.3.0/Bidi_Class/Left_To_Right_Embedding/code-points'); // Get the directionality of a given code point: const directionality = require('@unicode/unicode-6.3.0/Bidi_Class').get(0x41); // What glyph is the mirror image of `«` (U+00AB)? const mirrored = require('@unicode/unicode-6.3.0/Bidi_Mirroring_Glyph').get( 0xab, ); // Get a regular expression that matches all opening brackets: const openingBrackets = require('@unicode/unicode-6.3.0/Bidi_Paired_Bracket_Type/Open/regex'); // …you get the idea. ``` For more information, see the README for the package you’re interested in. [Here’s the full list of npm packages generated by this script](https://www.npmjs.com/org/unicode): - [_@unicode/unicode-1.1.5_](https://npmjs.org/package/@unicode/unicode-1.1.5#readme) ([repository](https://github.com/node-unicode/unicode-1.1.5#readme)) - [_@unicode/unicode-2.0.14_](https://npmjs.org/package/@unicode/unicode-2.0.14#readme) ([repository](https://github.com/node-unicode/unicode-2.0.14#readme)) - [_@unicode/unicode-2.1.2_](https://npmjs.org/package/@unicode/unicode-2.1.2#readme) ([repository](https://github.com/node-unicode/unicode-2.1.2#readme)) - [_@unicode/unicode-2.1.5_](https://npmjs.org/package/@unicode/unicode-2.1.5#readme) ([repository](https://github.com/node-unicode/unicode-2.1.5#readme)) - [_@unicode/unicode-2.1.8_](https://npmjs.org/package/@unicode/unicode-2.1.8#readme) ([repository](https://github.com/node-unicode/unicode-2.1.8#readme)) - [_@unicode/unicode-2.1.9_](https://npmjs.org/package/@unicode/unicode-2.1.9#readme) ([repository](https://github.com/node-unicode/unicode-2.1.9#readme)) - [_@unicode/unicode-3.0.0_](https://npmjs.org/package/@unicode/unicode-3.0.0#readme) ([repository](https://github.com/node-unicode/unicode-3.0.0#readme)) - [_@unicode/unicode-3.0.1_](https://npmjs.org/package/@unicode/unicode-3.0.1#readme) ([repository](https://github.com/node-unicode/unicode-3.0.1#readme)) - [_@unicode/unicode-3.1.0_](https://npmjs.org/package/@unicode/unicode-3.1.0#readme) ([repository](https://github.com/node-unicode/unicode-3.1.0#readme)) - [_@unicode/unicode-3.1.1_](https://npmjs.org/package/@unicode/unicode-3.1.1#readme) ([repository](https://github.com/node-unicode/unicode-3.1.1#readme)) - [_@unicode/unicode-3.2.0_](https://npmjs.org/package/@unicode/unicode-3.2.0#readme) ([repository](https://github.com/node-unicode/unicode-3.2.0#readme)) - [_@unicode/unicode-4.0.0_](https://npmjs.org/package/@unicode/unicode-4.0.0#readme) ([repository](https://github.com/node-unicode/unicode-4.0.0#readme)) - [_@unicode/unicode-4.0.1_](https://npmjs.org/package/@unicode/unicode-4.0.1#readme) ([repository](https://github.com/node-unicode/unicode-4.0.1#readme)) - [_@unicode/unicode-4.1.0_](https://npmjs.org/package/@unicode/unicode-4.1.0#readme) ([repository](https://github.com/node-unicode/unicode-4.1.0#readme)) - [_@unicode/unicode-5.0.0_](https://npmjs.org/package/@unicode/unicode-5.0.0#readme) ([repository](https://github.com/node-unicode/unicode-5.0.0#readme)) - [_@unicode/unicode-5.1.0_](https://npmjs.org/package/@unicode/unicode-5.1.0#readme) ([repository](https://github.com/node-unicode/unicode-5.1.0#readme)) - [_@unicode/unicode-5.2.0_](https://npmjs.org/package/@unicode/unicode-5.2.0#readme) ([repository](https://github.com/node-unicode/unicode-5.2.0#readme)) - [_@unicode/unicode-6.0.0_](https://npmjs.org/package/@unicode/unicode-6.0.0#readme) ([repository](https://github.com/node-unicode/unicode-6.0.0#readme)) - [_@unicode/unicode-6.1.0_](https://npmjs.org/package/@unicode/unicode-6.1.0#readme) ([repository](https://github.com/node-unicode/unicode-6.1.0#readme)) - [_@unicode/unicode-6.2.0_](https://npmjs.org/package/@unicode/unicode-6.2.0#readme) ([repository](https://github.com/node-unicode/unicode-6.2.0#readme)) - [_@unicode/unicode-6.3.0_](https://npmjs.org/package/@unicode/unicode-6.3.0#readme) ([repository](https://github.com/node-unicode/unicode-6.3.0#readme)) - [_@unicode/unicode-7.0.0_](https://npmjs.org/package/@unicode/unicode-7.0.0#readme) ([repository](https://github.com/node-unicode/unicode-7.0.0#readme)) - [_@unicode/unicode-8.0.0_](https://npmjs.org/package/@unicode/unicode-8.0.0#readme) ([repository](https://github.com/node-unicode/unicode-8.0.0#readme)) - [_@unicode/unicode-9.0.0_](https://npmjs.org/package/@unicode/unicode-9.0.0#readme) ([repository](https://github.com/node-unicode/unicode-9.0.0#readme)) - [_@unicode/unicode-10.0.0_](https://npmjs.org/package/@unicode/unicode-10.0.0#readme) ([repository](https://github.com/node-unicode/unicode-10.0.0#readme)) - [_@unicode/unicode-11.0.0_](https://npmjs.org/package/@unicode/unicode-11.0.0#readme) ([repository](https://github.com/node-unicode/unicode-11.0.0#readme)) - [_@unicode/unicode-12.0.0_](https://npmjs.org/package/@unicode/unicode-12.0.0#readme) ([repository](https://github.com/node-unicode/unicode-12.0.0#readme)) - [_@unicode/unicode-12.1.0_](https://npmjs.org/package/@unicode/unicode-12.1.0#readme) ([repository](https://github.com/node-unicode/unicode-12.1.0#readme)) - [_@unicode/unicode-13.0.0_](https://npmjs.org/package/@unicode/unicode-13.0.0#readme) ([repository](https://github.com/node-unicode/unicode-13.0.0#readme)) - [_@unicode/unicode-14.0.0_](https://npmjs.org/package/@unicode/unicode-14.0.0#readme) ([repository](https://github.com/node-unicode/unicode-14.0.0#readme)) - [_@unicode/unicode-15.0.0_](https://npmjs.org/package/@unicode/unicode-15.0.0#readme) ([repository](https://github.com/node-unicode/unicode-15.0.0#readme)) - [_@unicode/unicode-15.1.0_](https://npmjs.org/package/@unicode/unicode-15.1.0#readme) ([repository](https://github.com/node-unicode/unicode-15.1.0#readme)) - [_@unicode/unicode-16.0.0_](https://npmjs.org/package/@unicode/unicode-16.0.0#readme) ([repository](https://github.com/node-unicode/unicode-16.0.0#readme)) - [_@unicode/unicode-17.0.0_](https://npmjs.org/package/@unicode/unicode-17.0.0#readme) ([repository](https://github.com/node-unicode/unicode-17.0.0#readme)) Note that these READMEs are auto-generated by this script, too – they describe all the data that is available for that particular Unicode version. To programmatically get this list of available categories, scripts, script extensions, blocks, and properties for a given Unicode version, just `require` the main module for that version: ```js > require('unicode-6.3.0'); { 'Binary_Property': [ 'Alphabetic', 'Any', 'ASCII', 'ASCII_Hex_Digit', 'Assigned', … ], 'General_Category': [ 'Cased_Letter','Close_Punctuation','Connector_Punctuation', … ], 'Script': [ 'Arabic', 'Armenian', 'Avestan', … ], 'Script_Extensions': [ 'Arabic', 'Armenian', 'Avestan', … ], 'Block': [ 'Aegean Numbers', 'Alchemical Symbols', … ], 'Case_Folding': [ 'C', 'F', 'S', 'T' ], 'Simple_Case_Mapping': [ 'Uppercase', 'Lowercase', 'Titlecase' ], 'Special_Casing': [ 'Uppercase', 'Lowercase', 'Titlecase', … ], 'Bidi_Class': [ 'Arabic_Letter', 'Arabic_Number', 'Boundary_Neutral', … ], 'Bidi_Mirroring_Glyph': [], 'Bidi_Paired_Bracket_Type': [ 'Close', 'None', 'Open' ] } ``` ## For project maintainers After cloning this repository, before doing anything else, run: ```sh ./clone-repos.sh ``` This clones all the generated repositories to your local `output` folder. You can then make changes to node-unicode-data, and use `./bootstrap.sh` to commit and push changes to each of these repositories. ## Generating the data `npm run download` (re-)downloads the Unicode source files for all the Unicode versions defined in `data/resources.js`, saving them in the `data` folder. `npm run build` generates data for all the Unicode versions defined in `data/resources.js`. This may take a few minutes… The regular expressions are generated using [Regenerate](https://mths.be/regenerate). ## Testing `npm test` generates the data for the oldest and latest available Unicode version. This is a good way to test changes to the generator scripts before running `npm run-script generate`. `npm run-script cover` generates [the code coverage report](http://rawgithub.com/node-unicode/node-unicode-data/master/coverage/index.html). ## Author | [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias 'Follow @mathias on Twitter') | | ------------------------------------------------------------------------------------------------------------------------------------------------- | | [Mathias Bynens](https://mathiasbynens.be/) | ## License This module is available under the [MIT](https://mths.be/mit) license. node-unicode-data-main/.gitignore0000644000175000017500000000040015106571514015673 0ustar yaddyadd# Generated data output # Coverage report coverage # Installed npm modules node_modules # Folder view configuration files .DS_Store Desktop.ini # Thumbnail cache files ._* Thumbs.db # Files that might appear on external disks .Spotlight-V100 .Trashes node-unicode-data-main/static/0000755000175000017500000000000015106571514015200 5ustar yaddyaddnode-unicode-data-main/static/.npmignore0000644000175000017500000000002715106571514017176 0ustar yaddyadd.gitattributes .github node-unicode-data-main/static/decode-property-map.js0000644000175000017500000000064515106571514021423 0ustar yaddyadd/** * Generate [codePoint, value] pairs from RLE array of values. */ function * generateEntries(runs) { const len = runs.length - 2; for (let cp = 0, i = 0; i < len; ) { cp += runs[i++]; const end = cp + runs[i++]; const value = runs[i++]; while (cp < end) { yield [cp++, value]; } } } function decodePropertyMap(runs) { return new Map(generateEntries(runs)); } module.exports = decodePropertyMap; node-unicode-data-main/static/decode-ranges.d.ts0000644000175000017500000000071515106571514020475 0ustar yaddyadddeclare namespace decodeRanges { class UnicodeRange { readonly begin: number; readonly end: number; readonly length: number; private constructor(begin: number, end: number); keys(): Generator; values(): Generator; } export type { UnicodeRange }; } /** * RLE + base64 decode code point ranges. */ declare function decodeRanges(input: string): decodeRanges.UnicodeRange[]; export = decodeRanges; node-unicode-data-main/static/.github/0000755000175000017500000000000015106571514016540 5ustar yaddyaddnode-unicode-data-main/static/.github/workflows/0000755000175000017500000000000015106571514020575 5ustar yaddyaddnode-unicode-data-main/static/.github/workflows/publish-on-tag.yml0000644000175000017500000000103415106571514024147 0ustar yaddyaddname: publish-on-tag on: push: tags: - '*' jobs: publish: runs-on: ubuntu-latest permissions: contents: read id-token: write steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 20 registry-url: 'https://registry.npmjs.org' - name: Update npm run: npm install -g npm@latest - name: Publish run: | npm publish --provenance --access public node-unicode-data-main/static/decode-property-map.d.ts0000644000175000017500000000017015106571514021650 0ustar yaddyadddeclare function decodePropertyMap( runs: Array, ): Map; export = decodePropertyMap; node-unicode-data-main/static/.gitignore0000644000175000017500000000035315106571514017171 0ustar yaddyadd# npm error logs npm-debug.log # Installed npm modules node_modules # Folder view configuration files .DS_Store Desktop.ini # Thumbnail cache files ._* Thumbs.db # Files that might appear on external disks .Spotlight-V100 .Trashes node-unicode-data-main/static/decode-ranges.js0000644000175000017500000000335215106571514020241 0ustar yaddyadd/** * This file ships to end users. * See scripts/encode-ranges.js for encode utilities */ const base64enc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'; const base64dec = Object.freeze(Object.fromEntries( Array.from(base64enc, (c, i) => [c, i]) )); class UnicodeRange { /** * @param {number} begin * @param {number} end */ constructor(begin, end) { this.begin = begin; this.end = end; this.length = end - begin; } *keys() { const { begin, end } = this; for (let i = begin; i < end; ++i) { yield i; } } *values() { const { begin, end } = this; for (let i = begin; i < end; ++i) { yield String.fromCodePoint(i); } } } /** * Base64 decode variable-length deltas (5/10/15/21-bit). * @param {string} input */ function decodeDeltas(input) { /** @type {number[]} */ const output = []; for (let i = 0; i < input.length; ) { let x = base64dec[input[i++]]; switch (x & 56) { case 32: case 40: x = (x & 15) << 6; x |= base64dec[input[i++]]; break; case 48: x = (x & 7) << 12; x |= base64dec[input[i++]] << 6; x |= base64dec[input[i++]]; break; case 56: x = (x & 7) << 18; x |= base64dec[input[i++]] << 12; x |= base64dec[input[i++]] << 6; x |= base64dec[input[i++]]; break; } output.push(x); } return output; } /** * RLE + base64 decode code point ranges. * @param {string} input */ function decodeRanges(input) { const deltas = decodeDeltas(input); const ranges = []; for (let end = -1, i = 1; i < deltas.length; i += 2) { const begin = end + 1 + deltas[i - 1]; const length = 1 + deltas[i]; end = begin + length; ranges.push(new UnicodeRange(begin, end)); } return ranges; } module.exports = decodeRanges; node-unicode-data-main/static/.gitattributes0000644000175000017500000000011415106571514020067 0ustar yaddyadd# Automatically normalize line endings for all text-based files * text=auto node-unicode-data-main/bootstrap.sh0000755000175000017500000000051515106571514016266 0ustar yaddyadd#!/usr/bin/env bash cd "$(dirname "${BASH_SOURCE}")"; #rm -rf -- output/*/*!(.git); npm run build; cd output; for dir in $(find unicode-* -maxdepth 0 -type d | sort -r); do cd "${dir}"; echo "Taking care of ${dir}…"; git add -A; git commit -m 'Release v1.6.16'; git tag v1.6.16; git push; git push --tags; cd ..; done; node-unicode-data-main/templates/0000755000175000017500000000000015106571514015707 5ustar yaddyaddnode-unicode-data-main/templates/package.json0000644000175000017500000000145115106571514020176 0ustar yaddyadd{ "name": "@unicode/unicode-<%= version %>", "version": "1.6.16", "description": "JavaScript-compatible Unicode data. Arrays of code points, arrays of symbols, and regular expressions for Unicode v<%= version %>’s categories, scripts, blocks, bidi, and other properties.", "homepage": "https://github.com/node-unicode/unicode-<%= version %>", "main": "index.js", "keywords": [ "unicode", "unicode-data", "code points", "symbols", "characters", "bidi", "case-folding", "regex", "regexp", "data" ], "license": "MIT", "author": { "name": "Mathias Bynens", "url": "https://mathiasbynens.be/" }, "repository": { "type": "git", "url": "git+https://github.com/node-unicode/unicode-<%= version %>.git" }, "bugs": "https://github.com/node-unicode/node-unicode-data/issues" } node-unicode-data-main/templates/README.md0000644000175000017500000001315115106571514017167 0ustar yaddyadd# Unicode v<%= version %> data [![@unicode/unicode-<%= version %> on npm](https://img.shields.io/npm/v/@unicode/unicode-<%= version %>)](https://www.npmjs.com/package/@unicode/unicode-<%= version %>) JavaScript-compatible Unicode data for use in Node.js. Included: arrays of code points, arrays of symbols, and regular expressions for Unicode v<%= version %>’s categories, scripts, script extensions, blocks, and properties, as well as bidi mirroring and case folding data. The data files in this module are generated as part of the [node-unicode-data](https://mths.be/node-unicode-data) project. **Please report any bugs or requests [in the appropriate issue tracker](https://github.com/node-unicode/node-unicode-data/issues).** ## Installation ```bash npm install @unicode/unicode-<%= version %> --save-dev ``` **Note:** _@unicode/unicode-<%= version %>_ is supposed to be used in build scripts (i.e. as a `devDependency`), and not at runtime (i.e. as a regular `dependency`). ## Regular expressions The Unicode data modules ship with pre-compiled regular expressions for categories, scripts, script extensions, blocks, and properties. But maybe you want to create a single regular expression that combines several categories, scripts, etc. In that case, [***you should use Regenerate***](https://mths.be/regenerate). For example, to construct a regex that matches all symbols in the Arabic and Greek scripts as per Unicode v6.3.0: ```js const regenerate = require('regenerate'); const set = regenerate() .add(require('@unicode/unicode-6.3.0/Script_Extensions/Arabic/code-points.js')) // or `…/symbols`, doesn’t matter .add(require('@unicode/unicode-6.3.0/Script_Extensions/Greek/code-points.js')); // or `…/symbols`, doesn’t matter console.log(set.toString()); // Then you might want to use a template like this to write the result to a file, along with any regex flags you might need: // const regex = /<%= regenerateExample %>/gim; ``` ## Usage ```js // Get an array of code points in a given Unicode category: const codePoints = require('@unicode/unicode-<%= version %>/General_Category/Uppercase_Letter/code-points.js'); // Get an array of symbols (strings) in a given Unicode category: const symbols = require('@unicode/unicode-<%= version %>/General_Category/Uppercase_Letter/symbols.js'); // Get a regular expression that matches any symbol in a given Unicode category: const regex = require('@unicode/unicode-<%= version %>/General_Category/Uppercase_Letter/regex.js'); // Get the canonical category a given code point belongs to: // (Note: U+0041 is LATIN CAPITAL LETTER A) const category = require('@unicode/unicode-<%= version %>/General_Category').get(0x41); // Get an array of all code points with a given bidi class: const on = require('@unicode/unicode-<%= version %>/Bidi_Class/Other_Neutral/code-points.js'); // Get a map from code points to bidi classes: const bidiClassMap = require('@unicode/unicode-<%= version %>/Bidi_Class'); // Get the directionality of a given code point: const directionality = require('@unicode/unicode-<%= version %>/Bidi_Class').get(0x41); <% if (dirs.hasOwnProperty('Bidi_Mirroring_Glyph')) { %> // What glyph is the mirror image of `«` (U+00AB)? const mirrored = require('@unicode/unicode-<%= version %>/Bidi_Mirroring_Glyph').get(0xAB); <% } if (dirs.hasOwnProperty('Bidi_Paired_Bracket_Type')) { %> // Get a regular expression that matches all opening brackets: const openingBrackets = require('@unicode/unicode-<%= version %>/Bidi_Paired_Bracket_Type/Open/regex.js'); <% } %> // …you get the idea. ``` Other than categories, data on Unicode properties, blocks, scripts, and script extensions is available too (for recent versions of the Unicode standard). Here’s the full list of the available data for v<%= version %>: ```js // `Names`: require('@unicode/unicode-<%= version %>/Names/index.js'); // array of canonical names <% dirs.Names.forEach(function(subdir) { %>require('@unicode/unicode-<%= version %>/Names/<%= subdir %>/index.js'); // lookup map from code point to aliases <% }); %> <% Object.keys(dirs).forEach(function(type) { if (type == 'Names' && !dirs[type].subType) { return; } %> // `<%= type %>`: <% if (/^(?:Bidi_Class|Bidi_Paired_Bracket_Type|Bidi_Mirroring_Glyph|General_Category)$/.test(type)) { %> require('@unicode/unicode-<%= version %>/<%= type %>').get(codePoint); // lookup map <% } dirs[type].forEach(function(dir) { if ('Case_Folding' == type || 'Simple_Case_Mapping' == type || 'Special_Casing' == type) { %> require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/code-points.js'); // lookup map from code point to code point or array of code points require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/code-points.js').get(codePoint); require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/symbols.js'); // lookup map from symbol to symbol(s) require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/symbols.js').get(symbol); <% } else if ('Sequence_Property' == type) { %> require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/index.js'); // array containing a string for each sequence <% } else { %> require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/code-points.js'); require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/symbols.js'); require('@unicode/unicode-<%= version %>/<%= type %>/<%= dir %>/regex.js'); <% } }); }); %>``` ## Author | [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | |---| | [Mathias Bynens](https://mathiasbynens.be/) | ## License This module is available under the [MIT](https://mths.be/mit) license. node-unicode-data-main/index.js0000644000175000017500000001761515106571514015370 0ustar yaddyadd'use strict'; const fs = require('fs'); const path = require('path'); const utils = require('./scripts/utils.js'); const parsers = require('./scripts/parse-blocks-scripts-properties.js'); parsers.parseBidiBrackets = require('./scripts/parse-bidi-brackets.js'); parsers.parseCaseFolding = require('./scripts/parse-case-folding.js'); parsers.parseBidiClass = require('./scripts/parse-bidi-class.js'); parsers.parseCompositionExclusions = require('./scripts/parse-composition-exclusions.js'); parsers.parseLineBreak = require('./scripts/parse-line-break.js'); parsers.parseScriptExtensions = require('./scripts/parse-script-extensions.js'); parsers.parseSpecialCasing = require('./scripts/parse-special-casing.js'); parsers.parseSimpleCaseMapping = require('./scripts/parse-simple-case-mapping.js'); parsers.parseGraphemeWordSentenceBreak = require('./scripts/parse-grapheme-word-sentence-break.js'); parsers.parseEmoji = require('./scripts/parse-emoji.js'); parsers.parseEmojiSequences = require('./scripts/parse-emoji-sequences.js'); parsers.parseNames = require('./scripts/parse-names.js'); parsers.parseNameAliases = require('./scripts/parse-name-aliases.js'); const extend = utils.extend; const jsesc = require('jsesc'); const template = require('lodash.template'); const templatePath = path.resolve(__dirname, 'templates'); const staticPath = path.resolve(__dirname, 'static'); const compileReadMe = template(fs.readFileSync( path.resolve(templatePath, 'README.md'), 'utf-8') ); const compilePackage = template(fs.readFileSync( path.resolve(templatePath, 'package.json'), 'utf-8') ); const compileIndex = template('module.exports=<%= data %>'); const generateData = function(version) { const dirMap = {}; console.log('Generating data for Unicode v%s…', version); console.log('Parsing Unicode v%s categories…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseDerivedGeneralCategory(version), 'type': function(category) { if (/^(?:Any|ASCII|Assigned)$/.test(category)) { return 'Binary_Property'; } return 'General_Category'; } })); console.log('Parsing Unicode v%s `Bidi_Class`', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseBidiClass(version), 'type': 'Bidi_Class' })); console.log('Parsing Unicode v%s `Script`…', version); const scriptsMap = parsers.parseScripts(version) extend(dirMap, utils.writeFiles({ 'version': version, 'map': scriptsMap, 'type': 'Script' })); console.log('Parsing Unicode v%s `Script_Extensions`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseScriptExtensions(version, scriptsMap), 'type': 'Script_Extensions' })); console.log('Parsing Unicode v%s properties…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseProperties(version), 'type': 'Binary_Property' })); console.log('Parsing Unicode v%s derived core properties…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseDerivedCoreProperties(version), 'type': 'Binary_Property' })); console.log('Parsing Unicode v%s derived binary properties…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseDerivedBinaryProperties(version), 'type': 'Binary_Property' })); console.log('Parsing Unicode v%s derived normalization properties…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseDerivedNormalizationProperties(version), 'type': 'Binary_Property' })); console.log('Parsing Unicode v%s composition exclusions…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseCompositionExclusions(version), 'type': 'Binary_Property' })); console.log('Parsing Unicode v%s `Case_Folding`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseCaseFolding(version), 'type': 'Case_Folding' })); console.log('Parsing Unicode v%s `Block`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseBlocks(version), 'type': 'Block' })); console.log('Parsing Unicode v%s `Bidi_Mirroring_Glyph`', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseMirroring(version), 'type': 'Bidi_Mirroring_Glyph' })); console.log('Parsing Unicode v%s bidi brackets…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseBidiBrackets(version), 'type': 'Bidi_Paired_Bracket_Type' })); console.log('Parsing Unicode v%s `Line_Break`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseLineBreak(version), 'type': 'Line_Break' })); console.log('Parsing Unicode v%s `Grapheme_Cluster_Break`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseGraphemeWordSentenceBreak(version, 'grapheme-cluster-break'), 'type': 'Grapheme_Cluster_Break' })); console.log('Parsing Unicode v%s `Word_Break`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseGraphemeWordSentenceBreak(version, 'word-break'), 'type': 'Word_Break' })); console.log('Parsing Unicode v%s `Sentence_Break`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseGraphemeWordSentenceBreak(version, 'sentence-break'), 'type': 'Sentence_Break' })); console.log('Parsing Unicode v%s binary emoji properties…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseEmoji(version), 'type': 'Binary_Property' })); console.log('Parsing Unicode v%s emoji sequence properties…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseEmojiSequences(version), 'type': 'Sequence_Property' })); console.log('Parsing Unicode v%s `Names`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseNames(version), 'type': 'Names' })); console.log('Parsing Unicode v%s Aliases…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseNameAliases(version), 'type': 'Names', 'subType': 'name-aliases' })); console.log('Parsing Unicode v%s simple case mappings…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseSimpleCaseMapping(version), 'type': 'Simple_Case_Mapping' })); console.log('Parsing Unicode v%s `Special_Casing`…', version); extend(dirMap, utils.writeFiles({ 'version': version, 'map': parsers.parseSpecialCasing(version), 'type': 'Special_Casing' })); // Sort array values. for (const property of Object.keys(dirMap)) { if (Array.isArray(dirMap[property])) { dirMap[property] = dirMap[property].sort(); } } fs.writeFileSync( path.resolve(__dirname, `output/unicode-${version}/README.md`), compileReadMe({ 'version': version, 'dirs': dirMap, 'regenerateExample': '<%= set.toString() %>' }) ); fs.writeFileSync( path.resolve(__dirname, `output/unicode-${version}/index.js`), compileIndex({ 'version': version, 'data': jsesc(dirMap) }) ); fs.writeFileSync( path.resolve(__dirname, `output/unicode-${version}/index.d.ts`), Object.keys(dirMap) .map(key => `export const ${key}: string[];`) .join('\n') ); fs.writeFileSync( path.resolve(__dirname, `output/unicode-${version}/package.json`), compilePackage({ 'version': version }) ); fs.mkdirSync( path.resolve(__dirname, `output/unicode-${version}/.github/workflows`), { recursive: true, } ); [ '.github/workflows/publish-on-tag.yml', '.gitattributes', '.gitignore', '.npmignore', 'decode-property-map.js', 'decode-property-map.d.ts', 'decode-ranges.js', 'decode-ranges.d.ts', ].forEach(function(file) { fs.copyFileSync( path.resolve(staticPath, file), path.resolve(__dirname, `output/unicode-${version}/${file}`) ); }); return dirMap; }; module.exports = generateData; node-unicode-data-main/.gitattributes0000644000175000017500000000011415106571514016600 0ustar yaddyadd# Automatically normalize line endings for all text-based files * text=auto node-unicode-data-main/LICENSE-MIT.txt0000644000175000017500000000206515106571514016166 0ustar yaddyaddCopyright Mathias Bynens Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.