Created
August 13, 2024 07:39
-
-
Save glorat/5070ebd2fa275e2012a51300329a7a55 to your computer and use it in GitHub Desktop.
Slugify
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import transliterate from './transliterate'; | |
| const builtinOverridableReplacements = [ | |
| ['&', ' and '], | |
| ['🦄', ' unicorn '], | |
| ['♥', ' love '] | |
| ]; | |
| const matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; | |
| function escapeStringRegexp (str:string) { | |
| if (typeof str !== 'string') { | |
| throw new TypeError('Expected a string'); | |
| } | |
| return str.replace(matchOperatorsRe, '\\$&'); | |
| } | |
| interface Options { | |
| /** | |
| @default '-' | |
| @example | |
| ``` | |
| import slugify from '@sindresorhus/slugify'; | |
| slugify('BAR and baz'); | |
| //=> 'bar-and-baz' | |
| slugify('BAR and baz', {separator: '_'}); | |
| //=> 'bar_and_baz' | |
| slugify('BAR and baz', {separator: ''}); | |
| //=> 'barandbaz' | |
| ``` | |
| */ | |
| readonly separator?: string; | |
| /** | |
| Make the slug lowercase. | |
| @default true | |
| @example | |
| ``` | |
| import slugify from '@sindresorhus/slugify'; | |
| slugify('Déjà Vu!'); | |
| //=> 'deja-vu' | |
| slugify('Déjà Vu!', {lowercase: false}); | |
| //=> 'Deja-Vu' | |
| ``` | |
| */ | |
| readonly lowercase?: boolean; | |
| /** | |
| Convert camelcase to separate words. Internally it does `fooBar` → `foo bar`. | |
| @default true | |
| @example | |
| ``` | |
| import slugify from '@sindresorhus/slugify'; | |
| slugify('fooBar'); | |
| //=> 'foo-bar' | |
| slugify('fooBar', {decamelize: false}); | |
| //=> 'foobar' | |
| ``` | |
| */ | |
| readonly decamelize?: boolean; | |
| /** | |
| Add your own custom replacements. | |
| The replacements are run on the original string before any other transformations. | |
| This only overrides a default replacement if you set an item with the same key, like `&`. | |
| Add a leading and trailing space to the replacement to have it separated by dashes. | |
| @default [ ['&', ' and '], ['🦄', ' unicorn '], ['♥', ' love '] ] | |
| @example | |
| ``` | |
| import slugify from '@sindresorhus/slugify'; | |
| slugify('Foo@unicorn', { | |
| customReplacements: [ | |
| ['@', 'at'] | |
| ] | |
| }); | |
| //=> 'fooatunicorn' | |
| slugify('foo@unicorn', { | |
| customReplacements: [ | |
| ['@', ' at '] | |
| ] | |
| }); | |
| //=> 'foo-at-unicorn' | |
| slugify('I love 🐶', { | |
| customReplacements: [ | |
| ['🐶', 'dogs'] | |
| ] | |
| }); | |
| //=> 'i-love-dogs' | |
| ``` | |
| */ | |
| readonly customReplacements?: ReadonlyArray<[string, string]>; | |
| /** | |
| If your string starts with an underscore, it will be preserved in the slugified string. | |
| Sometimes leading underscores are intentional, for example, filenames representing hidden paths on a website. | |
| @default false | |
| @example | |
| ``` | |
| import slugify from '@sindresorhus/slugify'; | |
| slugify('_foo_bar'); | |
| //=> 'foo-bar' | |
| slugify('_foo_bar', {preserveLeadingUnderscore: true}); | |
| //=> '_foo-bar' | |
| ``` | |
| */ | |
| readonly preserveLeadingUnderscore?: boolean; | |
| /** | |
| If your string ends with a dash, it will be preserved in the slugified string. | |
| For example, using slugify on an input field would allow for validation while not preventing the user from writing a slug. | |
| @default false | |
| @example | |
| ``` | |
| import slugify from '@sindresorhus/slugify'; | |
| slugify('foo-bar-'); | |
| //=> 'foo-bar' | |
| slugify('foo-bar-', {preserveTrailingDash: true}); | |
| //=> 'foo-bar-' | |
| ``` | |
| */ | |
| readonly preserveTrailingDash?: boolean; | |
| } | |
| const decamelize = (string:string) => { | |
| return string | |
| // Separate capitalized words. | |
| .replace(/([A-Z]{2,})(\d+)/g, '$1 $2') | |
| .replace(/([a-z\d]+)([A-Z]{2,})/g, '$1 $2') | |
| .replace(/([a-z\d])([A-Z])/g, '$1 $2') | |
| // `[a-rt-z]` matches all lowercase characters except `s`. | |
| // This avoids matching plural acronyms like `APIs`. | |
| .replace(/([A-Z]+)([A-Z][a-rt-z\d]+)/g, '$1 $2'); | |
| }; | |
| const removeMootSeparators = (string:string, separator:string) => { | |
| const escapedSeparator = escapeStringRegexp(separator); | |
| return string | |
| .replace(new RegExp(`${escapedSeparator}{2,}`, 'g'), separator) | |
| .replace(new RegExp(`^${escapedSeparator}|${escapedSeparator}$`, 'g'), ''); | |
| }; | |
| export default function slugify(string: string, options?: Options) { | |
| if (typeof string !== 'string') { | |
| throw new TypeError(`Expected a string, got \`${typeof string}\``); | |
| } | |
| options = { | |
| separator: '-', | |
| lowercase: true, | |
| decamelize: true, | |
| customReplacements: [], | |
| preserveLeadingUnderscore: false, | |
| preserveTrailingDash: false, | |
| ...options | |
| }; | |
| const shouldPrependUnderscore = options.preserveLeadingUnderscore && string.startsWith('_'); | |
| const shouldAppendDash = options.preserveTrailingDash && string.endsWith('-'); | |
| const customReplacements = new Map([ | |
| ...builtinOverridableReplacements, | |
| ...options.customReplacements! | |
| ]); | |
| string = transliterate(string, {customReplacements}); | |
| if (options.decamelize) { | |
| string = decamelize(string); | |
| } | |
| let patternSlug = /[^a-zA-Z\d]+/g; | |
| if (options.lowercase) { | |
| string = string.toLowerCase(); | |
| patternSlug = /[^a-z\d]+/g; | |
| } | |
| string = string.replace(patternSlug, options.separator ?? '-'); | |
| string = string.replace(/\\/g, ''); | |
| // Detect contractions/possessives by looking for any word followed by a `-t` | |
| // or `-s` in isolation and then remove it. | |
| string = string.replace(/([a-zA-Z\d]+)-([ts])(-|$)/g, '$1$2$3'); | |
| if (options.separator) { | |
| string = removeMootSeparators(string, options.separator); | |
| } | |
| if (shouldPrependUnderscore) { | |
| string = `_${string}`; | |
| } | |
| if (shouldAppendDash) { | |
| string = `${string}-`; | |
| } | |
| return string; | |
| } | |
| export function slugifyWithCounter() { | |
| const occurrences = new Map(); | |
| const countable = (string: string, options?: Options) => { | |
| string = slugify(string, options); | |
| if (!string) { | |
| return ''; | |
| } | |
| const stringLower = string.toLowerCase(); | |
| const numberless = occurrences.get(stringLower.replace(/(?:-\d+?)+?$/, '')) || 0; | |
| const counter = occurrences.get(stringLower); | |
| occurrences.set(stringLower, typeof counter === 'number' ? counter + 1 : 1); | |
| const newCounter = occurrences.get(stringLower) || 2; | |
| if (newCounter >= 2 || numberless > 2) { | |
| string = `${string}-${newCounter}`; | |
| } | |
| return string; | |
| }; | |
| countable.reset = () => { | |
| occurrences.clear(); | |
| }; | |
| return countable; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const builtinReplacements = [ | |
| // German umlauts | |
| ['ß', 'ss'], | |
| ['ẞ', 'Ss'], | |
| ['ä', 'ae'], | |
| ['Ä', 'Ae'], | |
| ['ö', 'oe'], | |
| ['Ö', 'Oe'], | |
| ['ü', 'ue'], | |
| ['Ü', 'Ue'], | |
| // Latin | |
| ['À', 'A'], | |
| ['Á', 'A'], | |
| ['Â', 'A'], | |
| ['Ã', 'A'], | |
| ['Ä', 'Ae'], | |
| ['Å', 'A'], | |
| ['Æ', 'AE'], | |
| ['Ç', 'C'], | |
| ['È', 'E'], | |
| ['É', 'E'], | |
| ['Ê', 'E'], | |
| ['Ë', 'E'], | |
| ['Ì', 'I'], | |
| ['Í', 'I'], | |
| ['Î', 'I'], | |
| ['Ï', 'I'], | |
| ['Ð', 'D'], | |
| ['Ñ', 'N'], | |
| ['Ò', 'O'], | |
| ['Ó', 'O'], | |
| ['Ô', 'O'], | |
| ['Õ', 'O'], | |
| ['Ö', 'Oe'], | |
| ['Ő', 'O'], | |
| ['Ø', 'O'], | |
| ['Ù', 'U'], | |
| ['Ú', 'U'], | |
| ['Û', 'U'], | |
| ['Ü', 'Ue'], | |
| ['Ű', 'U'], | |
| ['Ý', 'Y'], | |
| ['Þ', 'TH'], | |
| ['ß', 'ss'], | |
| ['à', 'a'], | |
| ['á', 'a'], | |
| ['â', 'a'], | |
| ['ã', 'a'], | |
| ['ä', 'ae'], | |
| ['å', 'a'], | |
| ['æ', 'ae'], | |
| ['ç', 'c'], | |
| ['è', 'e'], | |
| ['é', 'e'], | |
| ['ê', 'e'], | |
| ['ë', 'e'], | |
| ['ì', 'i'], | |
| ['í', 'i'], | |
| ['î', 'i'], | |
| ['ï', 'i'], | |
| ['ð', 'd'], | |
| ['ñ', 'n'], | |
| ['ò', 'o'], | |
| ['ó', 'o'], | |
| ['ô', 'o'], | |
| ['õ', 'o'], | |
| ['ö', 'oe'], | |
| ['ő', 'o'], | |
| ['ø', 'o'], | |
| ['ù', 'u'], | |
| ['ú', 'u'], | |
| ['û', 'u'], | |
| ['ü', 'ue'], | |
| ['ű', 'u'], | |
| ['ý', 'y'], | |
| ['þ', 'th'], | |
| ['ÿ', 'y'], | |
| ['ẞ', 'SS'], | |
| // Vietnamese | |
| ['à', 'a'], | |
| ['À', 'A'], | |
| ['á', 'a'], | |
| ['Á', 'A'], | |
| ['â', 'a'], | |
| ['Â', 'A'], | |
| ['ã', 'a'], | |
| ['Ã', 'A'], | |
| ['è', 'e'], | |
| ['È', 'E'], | |
| ['é', 'e'], | |
| ['É', 'E'], | |
| ['ê', 'e'], | |
| ['Ê', 'E'], | |
| ['ì', 'i'], | |
| ['Ì', 'I'], | |
| ['í', 'i'], | |
| ['Í', 'I'], | |
| ['ò', 'o'], | |
| ['Ò', 'O'], | |
| ['ó', 'o'], | |
| ['Ó', 'O'], | |
| ['ô', 'o'], | |
| ['Ô', 'O'], | |
| ['õ', 'o'], | |
| ['Õ', 'O'], | |
| ['ù', 'u'], | |
| ['Ù', 'U'], | |
| ['ú', 'u'], | |
| ['Ú', 'U'], | |
| ['ý', 'y'], | |
| ['Ý', 'Y'], | |
| ['ă', 'a'], | |
| ['Ă', 'A'], | |
| ['Đ', 'D'], | |
| ['đ', 'd'], | |
| ['ĩ', 'i'], | |
| ['Ĩ', 'I'], | |
| ['ũ', 'u'], | |
| ['Ũ', 'U'], | |
| ['ơ', 'o'], | |
| ['Ơ', 'O'], | |
| ['ư', 'u'], | |
| ['Ư', 'U'], | |
| ['ạ', 'a'], | |
| ['Ạ', 'A'], | |
| ['ả', 'a'], | |
| ['Ả', 'A'], | |
| ['ấ', 'a'], | |
| ['Ấ', 'A'], | |
| ['ầ', 'a'], | |
| ['Ầ', 'A'], | |
| ['ẩ', 'a'], | |
| ['Ẩ', 'A'], | |
| ['ẫ', 'a'], | |
| ['Ẫ', 'A'], | |
| ['ậ', 'a'], | |
| ['Ậ', 'A'], | |
| ['ắ', 'a'], | |
| ['Ắ', 'A'], | |
| ['ằ', 'a'], | |
| ['Ằ', 'A'], | |
| ['ẳ', 'a'], | |
| ['Ẳ', 'A'], | |
| ['ẵ', 'a'], | |
| ['Ẵ', 'A'], | |
| ['ặ', 'a'], | |
| ['Ặ', 'A'], | |
| ['ẹ', 'e'], | |
| ['Ẹ', 'E'], | |
| ['ẻ', 'e'], | |
| ['Ẻ', 'E'], | |
| ['ẽ', 'e'], | |
| ['Ẽ', 'E'], | |
| ['ế', 'e'], | |
| ['Ế', 'E'], | |
| ['ề', 'e'], | |
| ['Ề', 'E'], | |
| ['ể', 'e'], | |
| ['Ể', 'E'], | |
| ['ễ', 'e'], | |
| ['Ễ', 'E'], | |
| ['ệ', 'e'], | |
| ['Ệ', 'E'], | |
| ['ỉ', 'i'], | |
| ['Ỉ', 'I'], | |
| ['ị', 'i'], | |
| ['Ị', 'I'], | |
| ['ọ', 'o'], | |
| ['Ọ', 'O'], | |
| ['ỏ', 'o'], | |
| ['Ỏ', 'O'], | |
| ['ố', 'o'], | |
| ['Ố', 'O'], | |
| ['ồ', 'o'], | |
| ['Ồ', 'O'], | |
| ['ổ', 'o'], | |
| ['Ổ', 'O'], | |
| ['ỗ', 'o'], | |
| ['Ỗ', 'O'], | |
| ['ộ', 'o'], | |
| ['Ộ', 'O'], | |
| ['ớ', 'o'], | |
| ['Ớ', 'O'], | |
| ['ờ', 'o'], | |
| ['Ờ', 'O'], | |
| ['ở', 'o'], | |
| ['Ở', 'O'], | |
| ['ỡ', 'o'], | |
| ['Ỡ', 'O'], | |
| ['ợ', 'o'], | |
| ['Ợ', 'O'], | |
| ['ụ', 'u'], | |
| ['Ụ', 'U'], | |
| ['ủ', 'u'], | |
| ['Ủ', 'U'], | |
| ['ứ', 'u'], | |
| ['Ứ', 'U'], | |
| ['ừ', 'u'], | |
| ['Ừ', 'U'], | |
| ['ử', 'u'], | |
| ['Ử', 'U'], | |
| ['ữ', 'u'], | |
| ['Ữ', 'U'], | |
| ['ự', 'u'], | |
| ['Ự', 'U'], | |
| ['ỳ', 'y'], | |
| ['Ỳ', 'Y'], | |
| ['ỵ', 'y'], | |
| ['Ỵ', 'Y'], | |
| ['ỷ', 'y'], | |
| ['Ỷ', 'Y'], | |
| ['ỹ', 'y'], | |
| ['Ỹ', 'Y'], | |
| // Arabic | |
| ['ء', 'e'], | |
| ['آ', 'a'], | |
| ['أ', 'a'], | |
| ['ؤ', 'w'], | |
| ['إ', 'i'], | |
| ['ئ', 'y'], | |
| ['ا', 'a'], | |
| ['ب', 'b'], | |
| ['ة', 't'], | |
| ['ت', 't'], | |
| ['ث', 'th'], | |
| ['ج', 'j'], | |
| ['ح', 'h'], | |
| ['خ', 'kh'], | |
| ['د', 'd'], | |
| ['ذ', 'dh'], | |
| ['ر', 'r'], | |
| ['ز', 'z'], | |
| ['س', 's'], | |
| ['ش', 'sh'], | |
| ['ص', 's'], | |
| ['ض', 'd'], | |
| ['ط', 't'], | |
| ['ظ', 'z'], | |
| ['ع', 'e'], | |
| ['غ', 'gh'], | |
| ['ـ', '_'], | |
| ['ف', 'f'], | |
| ['ق', 'q'], | |
| ['ك', 'k'], | |
| ['ل', 'l'], | |
| ['م', 'm'], | |
| ['ن', 'n'], | |
| ['ه', 'h'], | |
| ['و', 'w'], | |
| ['ى', 'a'], | |
| ['ي', 'y'], | |
| ['َ', 'a'], | |
| ['ُ', 'u'], | |
| ['ِ', 'i'], | |
| ['٠', '0'], | |
| ['١', '1'], | |
| ['٢', '2'], | |
| ['٣', '3'], | |
| ['٤', '4'], | |
| ['٥', '5'], | |
| ['٦', '6'], | |
| ['٧', '7'], | |
| ['٨', '8'], | |
| ['٩', '9'], | |
| // Persian / Farsi | |
| ['چ', 'ch'], | |
| ['ک', 'k'], | |
| ['گ', 'g'], | |
| ['پ', 'p'], | |
| ['ژ', 'zh'], | |
| ['ی', 'y'], | |
| ['۰', '0'], | |
| ['۱', '1'], | |
| ['۲', '2'], | |
| ['۳', '3'], | |
| ['۴', '4'], | |
| ['۵', '5'], | |
| ['۶', '6'], | |
| ['۷', '7'], | |
| ['۸', '8'], | |
| ['۹', '9'], | |
| // Pashto | |
| ['ټ', 'p'], | |
| ['ځ', 'z'], | |
| ['څ', 'c'], | |
| ['ډ', 'd'], | |
| ['ﺫ', 'd'], | |
| ['ﺭ', 'r'], | |
| ['ړ', 'r'], | |
| ['ﺯ', 'z'], | |
| ['ږ', 'g'], | |
| ['ښ', 'x'], | |
| ['ګ', 'g'], | |
| ['ڼ', 'n'], | |
| ['ۀ', 'e'], | |
| ['ې', 'e'], | |
| ['ۍ', 'ai'], | |
| // Urdu | |
| ['ٹ', 't'], | |
| ['ڈ', 'd'], | |
| ['ڑ', 'r'], | |
| ['ں', 'n'], | |
| ['ہ', 'h'], | |
| ['ھ', 'h'], | |
| ['ے', 'e'], | |
| // Russian | |
| ['А', 'A'], | |
| ['а', 'a'], | |
| ['Б', 'B'], | |
| ['б', 'b'], | |
| ['В', 'V'], | |
| ['в', 'v'], | |
| ['Г', 'G'], | |
| ['г', 'g'], | |
| ['Д', 'D'], | |
| ['д', 'd'], | |
| ['ъе', 'ye'], | |
| ['Ъе', 'Ye'], | |
| ['ъЕ', 'yE'], | |
| ['ЪЕ', 'YE'], | |
| ['Е', 'E'], | |
| ['е', 'e'], | |
| ['Ё', 'Yo'], | |
| ['ё', 'yo'], | |
| ['Ж', 'Zh'], | |
| ['ж', 'zh'], | |
| ['З', 'Z'], | |
| ['з', 'z'], | |
| ['И', 'I'], | |
| ['и', 'i'], | |
| ['ый', 'iy'], | |
| ['Ый', 'Iy'], | |
| ['ЫЙ', 'IY'], | |
| ['ыЙ', 'iY'], | |
| ['Й', 'Y'], | |
| ['й', 'y'], | |
| ['К', 'K'], | |
| ['к', 'k'], | |
| ['Л', 'L'], | |
| ['л', 'l'], | |
| ['М', 'M'], | |
| ['м', 'm'], | |
| ['Н', 'N'], | |
| ['н', 'n'], | |
| ['О', 'O'], | |
| ['о', 'o'], | |
| ['П', 'P'], | |
| ['п', 'p'], | |
| ['Р', 'R'], | |
| ['р', 'r'], | |
| ['С', 'S'], | |
| ['с', 's'], | |
| ['Т', 'T'], | |
| ['т', 't'], | |
| ['У', 'U'], | |
| ['у', 'u'], | |
| ['Ф', 'F'], | |
| ['ф', 'f'], | |
| ['Х', 'Kh'], | |
| ['х', 'kh'], | |
| ['Ц', 'Ts'], | |
| ['ц', 'ts'], | |
| ['Ч', 'Ch'], | |
| ['ч', 'ch'], | |
| ['Ш', 'Sh'], | |
| ['ш', 'sh'], | |
| ['Щ', 'Sch'], | |
| ['щ', 'sch'], | |
| ['Ъ', ''], | |
| ['ъ', ''], | |
| ['Ы', 'Y'], | |
| ['ы', 'y'], | |
| ['Ь', ''], | |
| ['ь', ''], | |
| ['Э', 'E'], | |
| ['э', 'e'], | |
| ['Ю', 'Yu'], | |
| ['ю', 'yu'], | |
| ['Я', 'Ya'], | |
| ['я', 'ya'], | |
| // Romanian | |
| ['ă', 'a'], | |
| ['Ă', 'A'], | |
| ['ș', 's'], | |
| ['Ș', 'S'], | |
| ['ț', 't'], | |
| ['Ț', 'T'], | |
| ['ţ', 't'], | |
| ['Ţ', 'T'], | |
| // Turkish | |
| ['ş', 's'], | |
| ['Ş', 'S'], | |
| ['ç', 'c'], | |
| ['Ç', 'C'], | |
| ['ğ', 'g'], | |
| ['Ğ', 'G'], | |
| ['ı', 'i'], | |
| ['İ', 'I'], | |
| // Armenian | |
| ['ա', 'a'], | |
| ['Ա', 'A'], | |
| ['բ', 'b'], | |
| ['Բ', 'B'], | |
| ['գ', 'g'], | |
| ['Գ', 'G'], | |
| ['դ', 'd'], | |
| ['Դ', 'D'], | |
| ['ե', 'ye'], | |
| ['Ե', 'Ye'], | |
| ['զ', 'z'], | |
| ['Զ', 'Z'], | |
| ['է', 'e'], | |
| ['Է', 'E'], | |
| ['ը', 'y'], | |
| ['Ը', 'Y'], | |
| ['թ', 't'], | |
| ['Թ', 'T'], | |
| ['ժ', 'zh'], | |
| ['Ժ', 'Zh'], | |
| ['ի', 'i'], | |
| ['Ի', 'I'], | |
| ['լ', 'l'], | |
| ['Լ', 'L'], | |
| ['խ', 'kh'], | |
| ['Խ', 'Kh'], | |
| ['ծ', 'ts'], | |
| ['Ծ', 'Ts'], | |
| ['կ', 'k'], | |
| ['Կ', 'K'], | |
| ['հ', 'h'], | |
| ['Հ', 'H'], | |
| ['ձ', 'dz'], | |
| ['Ձ', 'Dz'], | |
| ['ղ', 'gh'], | |
| ['Ղ', 'Gh'], | |
| ['ճ', 'tch'], | |
| ['Ճ', 'Tch'], | |
| ['մ', 'm'], | |
| ['Մ', 'M'], | |
| ['յ', 'y'], | |
| ['Յ', 'Y'], | |
| ['ն', 'n'], | |
| ['Ն', 'N'], | |
| ['շ', 'sh'], | |
| ['Շ', 'Sh'], | |
| ['ո', 'vo'], | |
| ['Ո', 'Vo'], | |
| ['չ', 'ch'], | |
| ['Չ', 'Ch'], | |
| ['պ', 'p'], | |
| ['Պ', 'P'], | |
| ['ջ', 'j'], | |
| ['Ջ', 'J'], | |
| ['ռ', 'r'], | |
| ['Ռ', 'R'], | |
| ['ս', 's'], | |
| ['Ս', 'S'], | |
| ['վ', 'v'], | |
| ['Վ', 'V'], | |
| ['տ', 't'], | |
| ['Տ', 'T'], | |
| ['ր', 'r'], | |
| ['Ր', 'R'], | |
| ['ց', 'c'], | |
| ['Ց', 'C'], | |
| ['ու', 'u'], | |
| ['ՈՒ', 'U'], | |
| ['Ու', 'U'], | |
| ['փ', 'p'], | |
| ['Փ', 'P'], | |
| ['ք', 'q'], | |
| ['Ք', 'Q'], | |
| ['օ', 'o'], | |
| ['Օ', 'O'], | |
| ['ֆ', 'f'], | |
| ['Ֆ', 'F'], | |
| ['և', 'yev'], | |
| // Georgian | |
| ['ა', 'a'], | |
| ['ბ', 'b'], | |
| ['გ', 'g'], | |
| ['დ', 'd'], | |
| ['ე', 'e'], | |
| ['ვ', 'v'], | |
| ['ზ', 'z'], | |
| ['თ', 't'], | |
| ['ი', 'i'], | |
| ['კ', 'k'], | |
| ['ლ', 'l'], | |
| ['მ', 'm'], | |
| ['ნ', 'n'], | |
| ['ო', 'o'], | |
| ['პ', 'p'], | |
| ['ჟ', 'zh'], | |
| ['რ', 'r'], | |
| ['ს', 's'], | |
| ['ტ', 't'], | |
| ['უ', 'u'], | |
| ['ფ', 'ph'], | |
| ['ქ', 'q'], | |
| ['ღ', 'gh'], | |
| ['ყ', 'k'], | |
| ['შ', 'sh'], | |
| ['ჩ', 'ch'], | |
| ['ც', 'ts'], | |
| ['ძ', 'dz'], | |
| ['წ', 'ts'], | |
| ['ჭ', 'tch'], | |
| ['ხ', 'kh'], | |
| ['ჯ', 'j'], | |
| ['ჰ', 'h'], | |
| // Czech | |
| ['č', 'c'], | |
| ['ď', 'd'], | |
| ['ě', 'e'], | |
| ['ň', 'n'], | |
| ['ř', 'r'], | |
| ['š', 's'], | |
| ['ť', 't'], | |
| ['ů', 'u'], | |
| ['ž', 'z'], | |
| ['Č', 'C'], | |
| ['Ď', 'D'], | |
| ['Ě', 'E'], | |
| ['Ň', 'N'], | |
| ['Ř', 'R'], | |
| ['Š', 'S'], | |
| ['Ť', 'T'], | |
| ['Ů', 'U'], | |
| ['Ž', 'Z'], | |
| // Dhivehi | |
| ['ހ', 'h'], | |
| ['ށ', 'sh'], | |
| ['ނ', 'n'], | |
| ['ރ', 'r'], | |
| ['ބ', 'b'], | |
| ['ޅ', 'lh'], | |
| ['ކ', 'k'], | |
| ['އ', 'a'], | |
| ['ވ', 'v'], | |
| ['މ', 'm'], | |
| ['ފ', 'f'], | |
| ['ދ', 'dh'], | |
| ['ތ', 'th'], | |
| ['ލ', 'l'], | |
| ['ގ', 'g'], | |
| ['ޏ', 'gn'], | |
| ['ސ', 's'], | |
| ['ޑ', 'd'], | |
| ['ޒ', 'z'], | |
| ['ޓ', 't'], | |
| ['ޔ', 'y'], | |
| ['ޕ', 'p'], | |
| ['ޖ', 'j'], | |
| ['ޗ', 'ch'], | |
| ['ޘ', 'tt'], | |
| ['ޙ', 'hh'], | |
| ['ޚ', 'kh'], | |
| ['ޛ', 'th'], | |
| ['ޜ', 'z'], | |
| ['ޝ', 'sh'], | |
| ['ޞ', 's'], | |
| ['ޟ', 'd'], | |
| ['ޠ', 't'], | |
| ['ޡ', 'z'], | |
| ['ޢ', 'a'], | |
| ['ޣ', 'gh'], | |
| ['ޤ', 'q'], | |
| ['ޥ', 'w'], | |
| ['ަ', 'a'], | |
| ['ާ', 'aa'], | |
| ['ި', 'i'], | |
| ['ީ', 'ee'], | |
| ['ު', 'u'], | |
| ['ޫ', 'oo'], | |
| ['ެ', 'e'], | |
| ['ޭ', 'ey'], | |
| ['ޮ', 'o'], | |
| ['ޯ', 'oa'], | |
| ['ް', ''], | |
| // Greek | |
| ['α', 'a'], | |
| ['β', 'v'], | |
| ['γ', 'g'], | |
| ['δ', 'd'], | |
| ['ε', 'e'], | |
| ['ζ', 'z'], | |
| ['η', 'i'], | |
| ['θ', 'th'], | |
| ['ι', 'i'], | |
| ['κ', 'k'], | |
| ['λ', 'l'], | |
| ['μ', 'm'], | |
| ['ν', 'n'], | |
| ['ξ', 'ks'], | |
| ['ο', 'o'], | |
| ['π', 'p'], | |
| ['ρ', 'r'], | |
| ['σ', 's'], | |
| ['τ', 't'], | |
| ['υ', 'y'], | |
| ['φ', 'f'], | |
| ['χ', 'x'], | |
| ['ψ', 'ps'], | |
| ['ω', 'o'], | |
| ['ά', 'a'], | |
| ['έ', 'e'], | |
| ['ί', 'i'], | |
| ['ό', 'o'], | |
| ['ύ', 'y'], | |
| ['ή', 'i'], | |
| ['ώ', 'o'], | |
| ['ς', 's'], | |
| ['ϊ', 'i'], | |
| ['ΰ', 'y'], | |
| ['ϋ', 'y'], | |
| ['ΐ', 'i'], | |
| ['Α', 'A'], | |
| ['Β', 'B'], | |
| ['Γ', 'G'], | |
| ['Δ', 'D'], | |
| ['Ε', 'E'], | |
| ['Ζ', 'Z'], | |
| ['Η', 'I'], | |
| ['Θ', 'TH'], | |
| ['Ι', 'I'], | |
| ['Κ', 'K'], | |
| ['Λ', 'L'], | |
| ['Μ', 'M'], | |
| ['Ν', 'N'], | |
| ['Ξ', 'KS'], | |
| ['Ο', 'O'], | |
| ['Π', 'P'], | |
| ['Ρ', 'R'], | |
| ['Σ', 'S'], | |
| ['Τ', 'T'], | |
| ['Υ', 'Y'], | |
| ['Φ', 'F'], | |
| ['Χ', 'X'], | |
| ['Ψ', 'PS'], | |
| ['Ω', 'O'], | |
| ['Ά', 'A'], | |
| ['Έ', 'E'], | |
| ['Ί', 'I'], | |
| ['Ό', 'O'], | |
| ['Ύ', 'Y'], | |
| ['Ή', 'I'], | |
| ['Ώ', 'O'], | |
| ['Ϊ', 'I'], | |
| ['Ϋ', 'Y'], | |
| // Disabled as it conflicts with German and Latin. | |
| // Hungarian | |
| // ['ä', 'a'], | |
| // ['Ä', 'A'], | |
| // ['ö', 'o'], | |
| // ['Ö', 'O'], | |
| // ['ü', 'u'], | |
| // ['Ü', 'U'], | |
| // ['ű', 'u'], | |
| // ['Ű', 'U'], | |
| // Latvian | |
| ['ā', 'a'], | |
| ['ē', 'e'], | |
| ['ģ', 'g'], | |
| ['ī', 'i'], | |
| ['ķ', 'k'], | |
| ['ļ', 'l'], | |
| ['ņ', 'n'], | |
| ['ū', 'u'], | |
| ['Ā', 'A'], | |
| ['Ē', 'E'], | |
| ['Ģ', 'G'], | |
| ['Ī', 'I'], | |
| ['Ķ', 'K'], | |
| ['Ļ', 'L'], | |
| ['Ņ', 'N'], | |
| ['Ū', 'U'], | |
| ['č', 'c'], | |
| ['š', 's'], | |
| ['ž', 'z'], | |
| ['Č', 'C'], | |
| ['Š', 'S'], | |
| ['Ž', 'Z'], | |
| // Lithuanian | |
| ['ą', 'a'], | |
| ['č', 'c'], | |
| ['ę', 'e'], | |
| ['ė', 'e'], | |
| ['į', 'i'], | |
| ['š', 's'], | |
| ['ų', 'u'], | |
| ['ū', 'u'], | |
| ['ž', 'z'], | |
| ['Ą', 'A'], | |
| ['Č', 'C'], | |
| ['Ę', 'E'], | |
| ['Ė', 'E'], | |
| ['Į', 'I'], | |
| ['Š', 'S'], | |
| ['Ų', 'U'], | |
| ['Ū', 'U'], | |
| // Macedonian | |
| ['Ќ', 'Kj'], | |
| ['ќ', 'kj'], | |
| ['Љ', 'Lj'], | |
| ['љ', 'lj'], | |
| ['Њ', 'Nj'], | |
| ['њ', 'nj'], | |
| ['Тс', 'Ts'], | |
| ['тс', 'ts'], | |
| // Polish | |
| ['ą', 'a'], | |
| ['ć', 'c'], | |
| ['ę', 'e'], | |
| ['ł', 'l'], | |
| ['ń', 'n'], | |
| ['ś', 's'], | |
| ['ź', 'z'], | |
| ['ż', 'z'], | |
| ['Ą', 'A'], | |
| ['Ć', 'C'], | |
| ['Ę', 'E'], | |
| ['Ł', 'L'], | |
| ['Ń', 'N'], | |
| ['Ś', 'S'], | |
| ['Ź', 'Z'], | |
| ['Ż', 'Z'], | |
| // Disabled as it conflicts with Vietnamese. | |
| // Serbian | |
| // ['љ', 'lj'], | |
| // ['њ', 'nj'], | |
| // ['Љ', 'Lj'], | |
| // ['Њ', 'Nj'], | |
| // ['đ', 'dj'], | |
| // ['Đ', 'Dj'], | |
| // ['ђ', 'dj'], | |
| // ['ј', 'j'], | |
| // ['ћ', 'c'], | |
| // ['џ', 'dz'], | |
| // ['Ђ', 'Dj'], | |
| // ['Ј', 'j'], | |
| // ['Ћ', 'C'], | |
| // ['Џ', 'Dz'], | |
| // Disabled as it conflicts with German and Latin. | |
| // Slovak | |
| // ['ä', 'a'], | |
| // ['Ä', 'A'], | |
| // ['ľ', 'l'], | |
| // ['ĺ', 'l'], | |
| // ['ŕ', 'r'], | |
| // ['Ľ', 'L'], | |
| // ['Ĺ', 'L'], | |
| // ['Ŕ', 'R'], | |
| // Disabled as it conflicts with German and Latin. | |
| // Swedish | |
| // ['å', 'o'], | |
| // ['Å', 'o'], | |
| // ['ä', 'a'], | |
| // ['Ä', 'A'], | |
| // ['ë', 'e'], | |
| // ['Ë', 'E'], | |
| // ['ö', 'o'], | |
| // ['Ö', 'O'], | |
| // Ukrainian | |
| ['Є', 'Ye'], | |
| ['І', 'I'], | |
| ['Ї', 'Yi'], | |
| ['Ґ', 'G'], | |
| ['є', 'ye'], | |
| ['і', 'i'], | |
| ['ї', 'yi'], | |
| ['ґ', 'g'], | |
| // Dutch | |
| ['IJ', 'IJ'], | |
| ['ij', 'ij'], | |
| // Danish | |
| // ['Æ', 'Ae'], | |
| // ['Ø', 'Oe'], | |
| // ['Å', 'Aa'], | |
| // ['æ', 'ae'], | |
| // ['ø', 'oe'], | |
| // ['å', 'aa'] | |
| // Currencies | |
| ['¢', 'c'], | |
| ['¥', 'Y'], | |
| ['߿', 'b'], | |
| ['৳', 't'], | |
| ['૱', 'Bo'], | |
| ['฿', 'B'], | |
| ['₠', 'CE'], | |
| ['₡', 'C'], | |
| ['₢', 'Cr'], | |
| ['₣', 'F'], | |
| ['₥', 'm'], | |
| ['₦', 'N'], | |
| ['₧', 'Pt'], | |
| ['₨', 'Rs'], | |
| ['₩', 'W'], | |
| ['₫', 's'], | |
| ['€', 'E'], | |
| ['₭', 'K'], | |
| ['₮', 'T'], | |
| ['₯', 'Dp'], | |
| ['₰', 'S'], | |
| ['₱', 'P'], | |
| ['₲', 'G'], | |
| ['₳', 'A'], | |
| ['₴', 'S'], | |
| ['₵', 'C'], | |
| ['₶', 'tt'], | |
| ['₷', 'S'], | |
| ['₸', 'T'], | |
| ['₹', 'R'], | |
| ['₺', 'L'], | |
| ['₽', 'P'], | |
| ['₿', 'B'], | |
| ['﹩', '$'], | |
| ['¢', 'c'], | |
| ['¥', 'Y'], | |
| ['₩', 'W'], | |
| // Latin | |
| ['𝐀', 'A'], | |
| ['𝐁', 'B'], | |
| ['𝐂', 'C'], | |
| ['𝐃', 'D'], | |
| ['𝐄', 'E'], | |
| ['𝐅', 'F'], | |
| ['𝐆', 'G'], | |
| ['𝐇', 'H'], | |
| ['𝐈', 'I'], | |
| ['𝐉', 'J'], | |
| ['𝐊', 'K'], | |
| ['𝐋', 'L'], | |
| ['𝐌', 'M'], | |
| ['𝐍', 'N'], | |
| ['𝐎', 'O'], | |
| ['𝐏', 'P'], | |
| ['𝐐', 'Q'], | |
| ['𝐑', 'R'], | |
| ['𝐒', 'S'], | |
| ['𝐓', 'T'], | |
| ['𝐔', 'U'], | |
| ['𝐕', 'V'], | |
| ['𝐖', 'W'], | |
| ['𝐗', 'X'], | |
| ['𝐘', 'Y'], | |
| ['𝐙', 'Z'], | |
| ['𝐚', 'a'], | |
| ['𝐛', 'b'], | |
| ['𝐜', 'c'], | |
| ['𝐝', 'd'], | |
| ['𝐞', 'e'], | |
| ['𝐟', 'f'], | |
| ['𝐠', 'g'], | |
| ['𝐡', 'h'], | |
| ['𝐢', 'i'], | |
| ['𝐣', 'j'], | |
| ['𝐤', 'k'], | |
| ['𝐥', 'l'], | |
| ['𝐦', 'm'], | |
| ['𝐧', 'n'], | |
| ['𝐨', 'o'], | |
| ['𝐩', 'p'], | |
| ['𝐪', 'q'], | |
| ['𝐫', 'r'], | |
| ['𝐬', 's'], | |
| ['𝐭', 't'], | |
| ['𝐮', 'u'], | |
| ['𝐯', 'v'], | |
| ['𝐰', 'w'], | |
| ['𝐱', 'x'], | |
| ['𝐲', 'y'], | |
| ['𝐳', 'z'], | |
| ['𝐴', 'A'], | |
| ['𝐵', 'B'], | |
| ['𝐶', 'C'], | |
| ['𝐷', 'D'], | |
| ['𝐸', 'E'], | |
| ['𝐹', 'F'], | |
| ['𝐺', 'G'], | |
| ['𝐻', 'H'], | |
| ['𝐼', 'I'], | |
| ['𝐽', 'J'], | |
| ['𝐾', 'K'], | |
| ['𝐿', 'L'], | |
| ['𝑀', 'M'], | |
| ['𝑁', 'N'], | |
| ['𝑂', 'O'], | |
| ['𝑃', 'P'], | |
| ['𝑄', 'Q'], | |
| ['𝑅', 'R'], | |
| ['𝑆', 'S'], | |
| ['𝑇', 'T'], | |
| ['𝑈', 'U'], | |
| ['𝑉', 'V'], | |
| ['𝑊', 'W'], | |
| ['𝑋', 'X'], | |
| ['𝑌', 'Y'], | |
| ['𝑍', 'Z'], | |
| ['𝑎', 'a'], | |
| ['𝑏', 'b'], | |
| ['𝑐', 'c'], | |
| ['𝑑', 'd'], | |
| ['𝑒', 'e'], | |
| ['𝑓', 'f'], | |
| ['𝑔', 'g'], | |
| ['𝑖', 'i'], | |
| ['𝑗', 'j'], | |
| ['𝑘', 'k'], | |
| ['𝑙', 'l'], | |
| ['𝑚', 'm'], | |
| ['𝑛', 'n'], | |
| ['𝑜', 'o'], | |
| ['𝑝', 'p'], | |
| ['𝑞', 'q'], | |
| ['𝑟', 'r'], | |
| ['𝑠', 's'], | |
| ['𝑡', 't'], | |
| ['𝑢', 'u'], | |
| ['𝑣', 'v'], | |
| ['𝑤', 'w'], | |
| ['𝑥', 'x'], | |
| ['𝑦', 'y'], | |
| ['𝑧', 'z'], | |
| ['𝑨', 'A'], | |
| ['𝑩', 'B'], | |
| ['𝑪', 'C'], | |
| ['𝑫', 'D'], | |
| ['𝑬', 'E'], | |
| ['𝑭', 'F'], | |
| ['𝑮', 'G'], | |
| ['𝑯', 'H'], | |
| ['𝑰', 'I'], | |
| ['𝑱', 'J'], | |
| ['𝑲', 'K'], | |
| ['𝑳', 'L'], | |
| ['𝑴', 'M'], | |
| ['𝑵', 'N'], | |
| ['𝑶', 'O'], | |
| ['𝑷', 'P'], | |
| ['𝑸', 'Q'], | |
| ['𝑹', 'R'], | |
| ['𝑺', 'S'], | |
| ['𝑻', 'T'], | |
| ['𝑼', 'U'], | |
| ['𝑽', 'V'], | |
| ['𝑾', 'W'], | |
| ['𝑿', 'X'], | |
| ['𝒀', 'Y'], | |
| ['𝒁', 'Z'], | |
| ['𝒂', 'a'], | |
| ['𝒃', 'b'], | |
| ['𝒄', 'c'], | |
| ['𝒅', 'd'], | |
| ['𝒆', 'e'], | |
| ['𝒇', 'f'], | |
| ['𝒈', 'g'], | |
| ['𝒉', 'h'], | |
| ['𝒊', 'i'], | |
| ['𝒋', 'j'], | |
| ['𝒌', 'k'], | |
| ['𝒍', 'l'], | |
| ['𝒎', 'm'], | |
| ['𝒏', 'n'], | |
| ['𝒐', 'o'], | |
| ['𝒑', 'p'], | |
| ['𝒒', 'q'], | |
| ['𝒓', 'r'], | |
| ['𝒔', 's'], | |
| ['𝒕', 't'], | |
| ['𝒖', 'u'], | |
| ['𝒗', 'v'], | |
| ['𝒘', 'w'], | |
| ['𝒙', 'x'], | |
| ['𝒚', 'y'], | |
| ['𝒛', 'z'], | |
| ['𝒜', 'A'], | |
| ['𝒞', 'C'], | |
| ['𝒟', 'D'], | |
| ['𝒢', 'g'], | |
| ['𝒥', 'J'], | |
| ['𝒦', 'K'], | |
| ['𝒩', 'N'], | |
| ['𝒪', 'O'], | |
| ['𝒫', 'P'], | |
| ['𝒬', 'Q'], | |
| ['𝒮', 'S'], | |
| ['𝒯', 'T'], | |
| ['𝒰', 'U'], | |
| ['𝒱', 'V'], | |
| ['𝒲', 'W'], | |
| ['𝒳', 'X'], | |
| ['𝒴', 'Y'], | |
| ['𝒵', 'Z'], | |
| ['𝒶', 'a'], | |
| ['𝒷', 'b'], | |
| ['𝒸', 'c'], | |
| ['𝒹', 'd'], | |
| ['𝒻', 'f'], | |
| ['𝒽', 'h'], | |
| ['𝒾', 'i'], | |
| ['𝒿', 'j'], | |
| ['𝓀', 'h'], | |
| ['𝓁', 'l'], | |
| ['𝓂', 'm'], | |
| ['𝓃', 'n'], | |
| ['𝓅', 'p'], | |
| ['𝓆', 'q'], | |
| ['𝓇', 'r'], | |
| ['𝓈', 's'], | |
| ['𝓉', 't'], | |
| ['𝓊', 'u'], | |
| ['𝓋', 'v'], | |
| ['𝓌', 'w'], | |
| ['𝓍', 'x'], | |
| ['𝓎', 'y'], | |
| ['𝓏', 'z'], | |
| ['𝓐', 'A'], | |
| ['𝓑', 'B'], | |
| ['𝓒', 'C'], | |
| ['𝓓', 'D'], | |
| ['𝓔', 'E'], | |
| ['𝓕', 'F'], | |
| ['𝓖', 'G'], | |
| ['𝓗', 'H'], | |
| ['𝓘', 'I'], | |
| ['𝓙', 'J'], | |
| ['𝓚', 'K'], | |
| ['𝓛', 'L'], | |
| ['𝓜', 'M'], | |
| ['𝓝', 'N'], | |
| ['𝓞', 'O'], | |
| ['𝓟', 'P'], | |
| ['𝓠', 'Q'], | |
| ['𝓡', 'R'], | |
| ['𝓢', 'S'], | |
| ['𝓣', 'T'], | |
| ['𝓤', 'U'], | |
| ['𝓥', 'V'], | |
| ['𝓦', 'W'], | |
| ['𝓧', 'X'], | |
| ['𝓨', 'Y'], | |
| ['𝓩', 'Z'], | |
| ['𝓪', 'a'], | |
| ['𝓫', 'b'], | |
| ['𝓬', 'c'], | |
| ['𝓭', 'd'], | |
| ['𝓮', 'e'], | |
| ['𝓯', 'f'], | |
| ['𝓰', 'g'], | |
| ['𝓱', 'h'], | |
| ['𝓲', 'i'], | |
| ['𝓳', 'j'], | |
| ['𝓴', 'k'], | |
| ['𝓵', 'l'], | |
| ['𝓶', 'm'], | |
| ['𝓷', 'n'], | |
| ['𝓸', 'o'], | |
| ['𝓹', 'p'], | |
| ['𝓺', 'q'], | |
| ['𝓻', 'r'], | |
| ['𝓼', 's'], | |
| ['𝓽', 't'], | |
| ['𝓾', 'u'], | |
| ['𝓿', 'v'], | |
| ['𝔀', 'w'], | |
| ['𝔁', 'x'], | |
| ['𝔂', 'y'], | |
| ['𝔃', 'z'], | |
| ['𝔄', 'A'], | |
| ['𝔅', 'B'], | |
| ['𝔇', 'D'], | |
| ['𝔈', 'E'], | |
| ['𝔉', 'F'], | |
| ['𝔊', 'G'], | |
| ['𝔍', 'J'], | |
| ['𝔎', 'K'], | |
| ['𝔏', 'L'], | |
| ['𝔐', 'M'], | |
| ['𝔑', 'N'], | |
| ['𝔒', 'O'], | |
| ['𝔓', 'P'], | |
| ['𝔔', 'Q'], | |
| ['𝔖', 'S'], | |
| ['𝔗', 'T'], | |
| ['𝔘', 'U'], | |
| ['𝔙', 'V'], | |
| ['𝔚', 'W'], | |
| ['𝔛', 'X'], | |
| ['𝔜', 'Y'], | |
| ['𝔞', 'a'], | |
| ['𝔟', 'b'], | |
| ['𝔠', 'c'], | |
| ['𝔡', 'd'], | |
| ['𝔢', 'e'], | |
| ['𝔣', 'f'], | |
| ['𝔤', 'g'], | |
| ['𝔥', 'h'], | |
| ['𝔦', 'i'], | |
| ['𝔧', 'j'], | |
| ['𝔨', 'k'], | |
| ['𝔩', 'l'], | |
| ['𝔪', 'm'], | |
| ['𝔫', 'n'], | |
| ['𝔬', 'o'], | |
| ['𝔭', 'p'], | |
| ['𝔮', 'q'], | |
| ['𝔯', 'r'], | |
| ['𝔰', 's'], | |
| ['𝔱', 't'], | |
| ['𝔲', 'u'], | |
| ['𝔳', 'v'], | |
| ['𝔴', 'w'], | |
| ['𝔵', 'x'], | |
| ['𝔶', 'y'], | |
| ['𝔷', 'z'], | |
| ['𝔸', 'A'], | |
| ['𝔹', 'B'], | |
| ['𝔻', 'D'], | |
| ['𝔼', 'E'], | |
| ['𝔽', 'F'], | |
| ['𝔾', 'G'], | |
| ['𝕀', 'I'], | |
| ['𝕁', 'J'], | |
| ['𝕂', 'K'], | |
| ['𝕃', 'L'], | |
| ['𝕄', 'M'], | |
| ['𝕆', 'N'], | |
| ['𝕊', 'S'], | |
| ['𝕋', 'T'], | |
| ['𝕌', 'U'], | |
| ['𝕍', 'V'], | |
| ['𝕎', 'W'], | |
| ['𝕏', 'X'], | |
| ['𝕐', 'Y'], | |
| ['𝕒', 'a'], | |
| ['𝕓', 'b'], | |
| ['𝕔', 'c'], | |
| ['𝕕', 'd'], | |
| ['𝕖', 'e'], | |
| ['𝕗', 'f'], | |
| ['𝕘', 'g'], | |
| ['𝕙', 'h'], | |
| ['𝕚', 'i'], | |
| ['𝕛', 'j'], | |
| ['𝕜', 'k'], | |
| ['𝕝', 'l'], | |
| ['𝕞', 'm'], | |
| ['𝕟', 'n'], | |
| ['𝕠', 'o'], | |
| ['𝕡', 'p'], | |
| ['𝕢', 'q'], | |
| ['𝕣', 'r'], | |
| ['𝕤', 's'], | |
| ['𝕥', 't'], | |
| ['𝕦', 'u'], | |
| ['𝕧', 'v'], | |
| ['𝕨', 'w'], | |
| ['𝕩', 'x'], | |
| ['𝕪', 'y'], | |
| ['𝕫', 'z'], | |
| ['𝕬', 'A'], | |
| ['𝕭', 'B'], | |
| ['𝕮', 'C'], | |
| ['𝕯', 'D'], | |
| ['𝕰', 'E'], | |
| ['𝕱', 'F'], | |
| ['𝕲', 'G'], | |
| ['𝕳', 'H'], | |
| ['𝕴', 'I'], | |
| ['𝕵', 'J'], | |
| ['𝕶', 'K'], | |
| ['𝕷', 'L'], | |
| ['𝕸', 'M'], | |
| ['𝕹', 'N'], | |
| ['𝕺', 'O'], | |
| ['𝕻', 'P'], | |
| ['𝕼', 'Q'], | |
| ['𝕽', 'R'], | |
| ['𝕾', 'S'], | |
| ['𝕿', 'T'], | |
| ['𝖀', 'U'], | |
| ['𝖁', 'V'], | |
| ['𝖂', 'W'], | |
| ['𝖃', 'X'], | |
| ['𝖄', 'Y'], | |
| ['𝖅', 'Z'], | |
| ['𝖆', 'a'], | |
| ['𝖇', 'b'], | |
| ['𝖈', 'c'], | |
| ['𝖉', 'd'], | |
| ['𝖊', 'e'], | |
| ['𝖋', 'f'], | |
| ['𝖌', 'g'], | |
| ['𝖍', 'h'], | |
| ['𝖎', 'i'], | |
| ['𝖏', 'j'], | |
| ['𝖐', 'k'], | |
| ['𝖑', 'l'], | |
| ['𝖒', 'm'], | |
| ['𝖓', 'n'], | |
| ['𝖔', 'o'], | |
| ['𝖕', 'p'], | |
| ['𝖖', 'q'], | |
| ['𝖗', 'r'], | |
| ['𝖘', 's'], | |
| ['𝖙', 't'], | |
| ['𝖚', 'u'], | |
| ['𝖛', 'v'], | |
| ['𝖜', 'w'], | |
| ['𝖝', 'x'], | |
| ['𝖞', 'y'], | |
| ['𝖟', 'z'], | |
| ['𝖠', 'A'], | |
| ['𝖡', 'B'], | |
| ['𝖢', 'C'], | |
| ['𝖣', 'D'], | |
| ['𝖤', 'E'], | |
| ['𝖥', 'F'], | |
| ['𝖦', 'G'], | |
| ['𝖧', 'H'], | |
| ['𝖨', 'I'], | |
| ['𝖩', 'J'], | |
| ['𝖪', 'K'], | |
| ['𝖫', 'L'], | |
| ['𝖬', 'M'], | |
| ['𝖭', 'N'], | |
| ['𝖮', 'O'], | |
| ['𝖯', 'P'], | |
| ['𝖰', 'Q'], | |
| ['𝖱', 'R'], | |
| ['𝖲', 'S'], | |
| ['𝖳', 'T'], | |
| ['𝖴', 'U'], | |
| ['𝖵', 'V'], | |
| ['𝖶', 'W'], | |
| ['𝖷', 'X'], | |
| ['𝖸', 'Y'], | |
| ['𝖹', 'Z'], | |
| ['𝖺', 'a'], | |
| ['𝖻', 'b'], | |
| ['𝖼', 'c'], | |
| ['𝖽', 'd'], | |
| ['𝖾', 'e'], | |
| ['𝖿', 'f'], | |
| ['𝗀', 'g'], | |
| ['𝗁', 'h'], | |
| ['𝗂', 'i'], | |
| ['𝗃', 'j'], | |
| ['𝗄', 'k'], | |
| ['𝗅', 'l'], | |
| ['𝗆', 'm'], | |
| ['𝗇', 'n'], | |
| ['𝗈', 'o'], | |
| ['𝗉', 'p'], | |
| ['𝗊', 'q'], | |
| ['𝗋', 'r'], | |
| ['𝗌', 's'], | |
| ['𝗍', 't'], | |
| ['𝗎', 'u'], | |
| ['𝗏', 'v'], | |
| ['𝗐', 'w'], | |
| ['𝗑', 'x'], | |
| ['𝗒', 'y'], | |
| ['𝗓', 'z'], | |
| ['𝗔', 'A'], | |
| ['𝗕', 'B'], | |
| ['𝗖', 'C'], | |
| ['𝗗', 'D'], | |
| ['𝗘', 'E'], | |
| ['𝗙', 'F'], | |
| ['𝗚', 'G'], | |
| ['𝗛', 'H'], | |
| ['𝗜', 'I'], | |
| ['𝗝', 'J'], | |
| ['𝗞', 'K'], | |
| ['𝗟', 'L'], | |
| ['𝗠', 'M'], | |
| ['𝗡', 'N'], | |
| ['𝗢', 'O'], | |
| ['𝗣', 'P'], | |
| ['𝗤', 'Q'], | |
| ['𝗥', 'R'], | |
| ['𝗦', 'S'], | |
| ['𝗧', 'T'], | |
| ['𝗨', 'U'], | |
| ['𝗩', 'V'], | |
| ['𝗪', 'W'], | |
| ['𝗫', 'X'], | |
| ['𝗬', 'Y'], | |
| ['𝗭', 'Z'], | |
| ['𝗮', 'a'], | |
| ['𝗯', 'b'], | |
| ['𝗰', 'c'], | |
| ['𝗱', 'd'], | |
| ['𝗲', 'e'], | |
| ['𝗳', 'f'], | |
| ['𝗴', 'g'], | |
| ['𝗵', 'h'], | |
| ['𝗶', 'i'], | |
| ['𝗷', 'j'], | |
| ['𝗸', 'k'], | |
| ['𝗹', 'l'], | |
| ['𝗺', 'm'], | |
| ['𝗻', 'n'], | |
| ['𝗼', 'o'], | |
| ['𝗽', 'p'], | |
| ['𝗾', 'q'], | |
| ['𝗿', 'r'], | |
| ['𝘀', 's'], | |
| ['𝘁', 't'], | |
| ['𝘂', 'u'], | |
| ['𝘃', 'v'], | |
| ['𝘄', 'w'], | |
| ['𝘅', 'x'], | |
| ['𝘆', 'y'], | |
| ['𝘇', 'z'], | |
| ['𝘈', 'A'], | |
| ['𝘉', 'B'], | |
| ['𝘊', 'C'], | |
| ['𝘋', 'D'], | |
| ['𝘌', 'E'], | |
| ['𝘍', 'F'], | |
| ['𝘎', 'G'], | |
| ['𝘏', 'H'], | |
| ['𝘐', 'I'], | |
| ['𝘑', 'J'], | |
| ['𝘒', 'K'], | |
| ['𝘓', 'L'], | |
| ['𝘔', 'M'], | |
| ['𝘕', 'N'], | |
| ['𝘖', 'O'], | |
| ['𝘗', 'P'], | |
| ['𝘘', 'Q'], | |
| ['𝘙', 'R'], | |
| ['𝘚', 'S'], | |
| ['𝘛', 'T'], | |
| ['𝘜', 'U'], | |
| ['𝘝', 'V'], | |
| ['𝘞', 'W'], | |
| ['𝘟', 'X'], | |
| ['𝘠', 'Y'], | |
| ['𝘡', 'Z'], | |
| ['𝘢', 'a'], | |
| ['𝘣', 'b'], | |
| ['𝘤', 'c'], | |
| ['𝘥', 'd'], | |
| ['𝘦', 'e'], | |
| ['𝘧', 'f'], | |
| ['𝘨', 'g'], | |
| ['𝘩', 'h'], | |
| ['𝘪', 'i'], | |
| ['𝘫', 'j'], | |
| ['𝘬', 'k'], | |
| ['𝘭', 'l'], | |
| ['𝘮', 'm'], | |
| ['𝘯', 'n'], | |
| ['𝘰', 'o'], | |
| ['𝘱', 'p'], | |
| ['𝘲', 'q'], | |
| ['𝘳', 'r'], | |
| ['𝘴', 's'], | |
| ['𝘵', 't'], | |
| ['𝘶', 'u'], | |
| ['𝘷', 'v'], | |
| ['𝘸', 'w'], | |
| ['𝘹', 'x'], | |
| ['𝘺', 'y'], | |
| ['𝘻', 'z'], | |
| ['𝘼', 'A'], | |
| ['𝘽', 'B'], | |
| ['𝘾', 'C'], | |
| ['𝘿', 'D'], | |
| ['𝙀', 'E'], | |
| ['𝙁', 'F'], | |
| ['𝙂', 'G'], | |
| ['𝙃', 'H'], | |
| ['𝙄', 'I'], | |
| ['𝙅', 'J'], | |
| ['𝙆', 'K'], | |
| ['𝙇', 'L'], | |
| ['𝙈', 'M'], | |
| ['𝙉', 'N'], | |
| ['𝙊', 'O'], | |
| ['𝙋', 'P'], | |
| ['𝙌', 'Q'], | |
| ['𝙍', 'R'], | |
| ['𝙎', 'S'], | |
| ['𝙏', 'T'], | |
| ['𝙐', 'U'], | |
| ['𝙑', 'V'], | |
| ['𝙒', 'W'], | |
| ['𝙓', 'X'], | |
| ['𝙔', 'Y'], | |
| ['𝙕', 'Z'], | |
| ['𝙖', 'a'], | |
| ['𝙗', 'b'], | |
| ['𝙘', 'c'], | |
| ['𝙙', 'd'], | |
| ['𝙚', 'e'], | |
| ['𝙛', 'f'], | |
| ['𝙜', 'g'], | |
| ['𝙝', 'h'], | |
| ['𝙞', 'i'], | |
| ['𝙟', 'j'], | |
| ['𝙠', 'k'], | |
| ['𝙡', 'l'], | |
| ['𝙢', 'm'], | |
| ['𝙣', 'n'], | |
| ['𝙤', 'o'], | |
| ['𝙥', 'p'], | |
| ['𝙦', 'q'], | |
| ['𝙧', 'r'], | |
| ['𝙨', 's'], | |
| ['𝙩', 't'], | |
| ['𝙪', 'u'], | |
| ['𝙫', 'v'], | |
| ['𝙬', 'w'], | |
| ['𝙭', 'x'], | |
| ['𝙮', 'y'], | |
| ['𝙯', 'z'], | |
| ['𝙰', 'A'], | |
| ['𝙱', 'B'], | |
| ['𝙲', 'C'], | |
| ['𝙳', 'D'], | |
| ['𝙴', 'E'], | |
| ['𝙵', 'F'], | |
| ['𝙶', 'G'], | |
| ['𝙷', 'H'], | |
| ['𝙸', 'I'], | |
| ['𝙹', 'J'], | |
| ['𝙺', 'K'], | |
| ['𝙻', 'L'], | |
| ['𝙼', 'M'], | |
| ['𝙽', 'N'], | |
| ['𝙾', 'O'], | |
| ['𝙿', 'P'], | |
| ['𝚀', 'Q'], | |
| ['𝚁', 'R'], | |
| ['𝚂', 'S'], | |
| ['𝚃', 'T'], | |
| ['𝚄', 'U'], | |
| ['𝚅', 'V'], | |
| ['𝚆', 'W'], | |
| ['𝚇', 'X'], | |
| ['𝚈', 'Y'], | |
| ['𝚉', 'Z'], | |
| ['𝚊', 'a'], | |
| ['𝚋', 'b'], | |
| ['𝚌', 'c'], | |
| ['𝚍', 'd'], | |
| ['𝚎', 'e'], | |
| ['𝚏', 'f'], | |
| ['𝚐', 'g'], | |
| ['𝚑', 'h'], | |
| ['𝚒', 'i'], | |
| ['𝚓', 'j'], | |
| ['𝚔', 'k'], | |
| ['𝚕', 'l'], | |
| ['𝚖', 'm'], | |
| ['𝚗', 'n'], | |
| ['𝚘', 'o'], | |
| ['𝚙', 'p'], | |
| ['𝚚', 'q'], | |
| ['𝚛', 'r'], | |
| ['𝚜', 's'], | |
| ['𝚝', 't'], | |
| ['𝚞', 'u'], | |
| ['𝚟', 'v'], | |
| ['𝚠', 'w'], | |
| ['𝚡', 'x'], | |
| ['𝚢', 'y'], | |
| ['𝚣', 'z'], | |
| // Dotless letters | |
| ['𝚤', 'l'], | |
| ['𝚥', 'j'], | |
| // Greek | |
| ['𝛢', 'A'], | |
| ['𝛣', 'B'], | |
| ['𝛤', 'G'], | |
| ['𝛥', 'D'], | |
| ['𝛦', 'E'], | |
| ['𝛧', 'Z'], | |
| ['𝛨', 'I'], | |
| ['𝛩', 'TH'], | |
| ['𝛪', 'I'], | |
| ['𝛫', 'K'], | |
| ['𝛬', 'L'], | |
| ['𝛭', 'M'], | |
| ['𝛮', 'N'], | |
| ['𝛯', 'KS'], | |
| ['𝛰', 'O'], | |
| ['𝛱', 'P'], | |
| ['𝛲', 'R'], | |
| ['𝛳', 'TH'], | |
| ['𝛴', 'S'], | |
| ['𝛵', 'T'], | |
| ['𝛶', 'Y'], | |
| ['𝛷', 'F'], | |
| ['𝛸', 'x'], | |
| ['𝛹', 'PS'], | |
| ['𝛺', 'O'], | |
| ['𝛻', 'D'], | |
| ['𝛼', 'a'], | |
| ['𝛽', 'b'], | |
| ['𝛾', 'g'], | |
| ['𝛿', 'd'], | |
| ['𝜀', 'e'], | |
| ['𝜁', 'z'], | |
| ['𝜂', 'i'], | |
| ['𝜃', 'th'], | |
| ['𝜄', 'i'], | |
| ['𝜅', 'k'], | |
| ['𝜆', 'l'], | |
| ['𝜇', 'm'], | |
| ['𝜈', 'n'], | |
| ['𝜉', 'ks'], | |
| ['𝜊', 'o'], | |
| ['𝜋', 'p'], | |
| ['𝜌', 'r'], | |
| ['𝜍', 's'], | |
| ['𝜎', 's'], | |
| ['𝜏', 't'], | |
| ['𝜐', 'y'], | |
| ['𝜑', 'f'], | |
| ['𝜒', 'x'], | |
| ['𝜓', 'ps'], | |
| ['𝜔', 'o'], | |
| ['𝜕', 'd'], | |
| ['𝜖', 'E'], | |
| ['𝜗', 'TH'], | |
| ['𝜘', 'K'], | |
| ['𝜙', 'f'], | |
| ['𝜚', 'r'], | |
| ['𝜛', 'p'], | |
| ['𝜜', 'A'], | |
| ['𝜝', 'V'], | |
| ['𝜞', 'G'], | |
| ['𝜟', 'D'], | |
| ['𝜠', 'E'], | |
| ['𝜡', 'Z'], | |
| ['𝜢', 'I'], | |
| ['𝜣', 'TH'], | |
| ['𝜤', 'I'], | |
| ['𝜥', 'K'], | |
| ['𝜦', 'L'], | |
| ['𝜧', 'M'], | |
| ['𝜨', 'N'], | |
| ['𝜩', 'KS'], | |
| ['𝜪', 'O'], | |
| ['𝜫', 'P'], | |
| ['𝜬', 'S'], | |
| ['𝜭', 'TH'], | |
| ['𝜮', 'S'], | |
| ['𝜯', 'T'], | |
| ['𝜰', 'Y'], | |
| ['𝜱', 'F'], | |
| ['𝜲', 'X'], | |
| ['𝜳', 'PS'], | |
| ['𝜴', 'O'], | |
| ['𝜵', 'D'], | |
| ['𝜶', 'a'], | |
| ['𝜷', 'v'], | |
| ['𝜸', 'g'], | |
| ['𝜹', 'd'], | |
| ['𝜺', 'e'], | |
| ['𝜻', 'z'], | |
| ['𝜼', 'i'], | |
| ['𝜽', 'th'], | |
| ['𝜾', 'i'], | |
| ['𝜿', 'k'], | |
| ['𝝀', 'l'], | |
| ['𝝁', 'm'], | |
| ['𝝂', 'n'], | |
| ['𝝃', 'ks'], | |
| ['𝝄', 'o'], | |
| ['𝝅', 'p'], | |
| ['𝝆', 'r'], | |
| ['𝝇', 's'], | |
| ['𝝈', 's'], | |
| ['𝝉', 't'], | |
| ['𝝊', 'y'], | |
| ['𝝋', 'f'], | |
| ['𝝌', 'x'], | |
| ['𝝍', 'ps'], | |
| ['𝝎', 'o'], | |
| ['𝝏', 'a'], | |
| ['𝝐', 'e'], | |
| ['𝝑', 'i'], | |
| ['𝝒', 'k'], | |
| ['𝝓', 'f'], | |
| ['𝝔', 'r'], | |
| ['𝝕', 'p'], | |
| ['𝝖', 'A'], | |
| ['𝝗', 'B'], | |
| ['𝝘', 'G'], | |
| ['𝝙', 'D'], | |
| ['𝝚', 'E'], | |
| ['𝝛', 'Z'], | |
| ['𝝜', 'I'], | |
| ['𝝝', 'TH'], | |
| ['𝝞', 'I'], | |
| ['𝝟', 'K'], | |
| ['𝝠', 'L'], | |
| ['𝝡', 'M'], | |
| ['𝝢', 'N'], | |
| ['𝝣', 'KS'], | |
| ['𝝤', 'O'], | |
| ['𝝥', 'P'], | |
| ['𝝦', 'R'], | |
| ['𝝧', 'TH'], | |
| ['𝝨', 'S'], | |
| ['𝝩', 'T'], | |
| ['𝝪', 'Y'], | |
| ['𝝫', 'F'], | |
| ['𝝬', 'X'], | |
| ['𝝭', 'PS'], | |
| ['𝝮', 'O'], | |
| ['𝝯', 'D'], | |
| ['𝝰', 'a'], | |
| ['𝝱', 'v'], | |
| ['𝝲', 'g'], | |
| ['𝝳', 'd'], | |
| ['𝝴', 'e'], | |
| ['𝝵', 'z'], | |
| ['𝝶', 'i'], | |
| ['𝝷', 'th'], | |
| ['𝝸', 'i'], | |
| ['𝝹', 'k'], | |
| ['𝝺', 'l'], | |
| ['𝝻', 'm'], | |
| ['𝝼', 'n'], | |
| ['𝝽', 'ks'], | |
| ['𝝾', 'o'], | |
| ['𝝿', 'p'], | |
| ['𝞀', 'r'], | |
| ['𝞁', 's'], | |
| ['𝞂', 's'], | |
| ['𝞃', 't'], | |
| ['𝞄', 'y'], | |
| ['𝞅', 'f'], | |
| ['𝞆', 'x'], | |
| ['𝞇', 'ps'], | |
| ['𝞈', 'o'], | |
| ['𝞉', 'a'], | |
| ['𝞊', 'e'], | |
| ['𝞋', 'i'], | |
| ['𝞌', 'k'], | |
| ['𝞍', 'f'], | |
| ['𝞎', 'r'], | |
| ['𝞏', 'p'], | |
| ['𝞐', 'A'], | |
| ['𝞑', 'V'], | |
| ['𝞒', 'G'], | |
| ['𝞓', 'D'], | |
| ['𝞔', 'E'], | |
| ['𝞕', 'Z'], | |
| ['𝞖', 'I'], | |
| ['𝞗', 'TH'], | |
| ['𝞘', 'I'], | |
| ['𝞙', 'K'], | |
| ['𝞚', 'L'], | |
| ['𝞛', 'M'], | |
| ['𝞜', 'N'], | |
| ['𝞝', 'KS'], | |
| ['𝞞', 'O'], | |
| ['𝞟', 'P'], | |
| ['𝞠', 'S'], | |
| ['𝞡', 'TH'], | |
| ['𝞢', 'S'], | |
| ['𝞣', 'T'], | |
| ['𝞤', 'Y'], | |
| ['𝞥', 'F'], | |
| ['𝞦', 'X'], | |
| ['𝞧', 'PS'], | |
| ['𝞨', 'O'], | |
| ['𝞩', 'D'], | |
| ['𝞪', 'av'], | |
| ['𝞫', 'g'], | |
| ['𝞬', 'd'], | |
| ['𝞭', 'e'], | |
| ['𝞮', 'z'], | |
| ['𝞯', 'i'], | |
| ['𝞰', 'i'], | |
| ['𝞱', 'th'], | |
| ['𝞲', 'i'], | |
| ['𝞳', 'k'], | |
| ['𝞴', 'l'], | |
| ['𝞵', 'm'], | |
| ['𝞶', 'n'], | |
| ['𝞷', 'ks'], | |
| ['𝞸', 'o'], | |
| ['𝞹', 'p'], | |
| ['𝞺', 'r'], | |
| ['𝞻', 's'], | |
| ['𝞼', 's'], | |
| ['𝞽', 't'], | |
| ['𝞾', 'y'], | |
| ['𝞿', 'f'], | |
| ['𝟀', 'x'], | |
| ['𝟁', 'ps'], | |
| ['𝟂', 'o'], | |
| ['𝟃', 'a'], | |
| ['𝟄', 'e'], | |
| ['𝟅', 'i'], | |
| ['𝟆', 'k'], | |
| ['𝟇', 'f'], | |
| ['𝟈', 'r'], | |
| ['𝟉', 'p'], | |
| ['𝟊', 'F'], | |
| ['𝟋', 'f'], | |
| ['⒜', '(a)'], | |
| ['⒝', '(b)'], | |
| ['⒞', '(c)'], | |
| ['⒟', '(d)'], | |
| ['⒠', '(e)'], | |
| ['⒡', '(f)'], | |
| ['⒢', '(g)'], | |
| ['⒣', '(h)'], | |
| ['⒤', '(i)'], | |
| ['⒥', '(j)'], | |
| ['⒦', '(k)'], | |
| ['⒧', '(l)'], | |
| ['⒨', '(m)'], | |
| ['⒩', '(n)'], | |
| ['⒪', '(o)'], | |
| ['⒫', '(p)'], | |
| ['⒬', '(q)'], | |
| ['⒭', '(r)'], | |
| ['⒮', '(s)'], | |
| ['⒯', '(t)'], | |
| ['⒰', '(u)'], | |
| ['⒱', '(v)'], | |
| ['⒲', '(w)'], | |
| ['⒳', '(x)'], | |
| ['⒴', '(y)'], | |
| ['⒵', '(z)'], | |
| ['Ⓐ', '(A)'], | |
| ['Ⓑ', '(B)'], | |
| ['Ⓒ', '(C)'], | |
| ['Ⓓ', '(D)'], | |
| ['Ⓔ', '(E)'], | |
| ['Ⓕ', '(F)'], | |
| ['Ⓖ', '(G)'], | |
| ['Ⓗ', '(H)'], | |
| ['Ⓘ', '(I)'], | |
| ['Ⓙ', '(J)'], | |
| ['Ⓚ', '(K)'], | |
| ['Ⓛ', '(L)'], | |
| ['Ⓝ', '(N)'], | |
| ['Ⓞ', '(O)'], | |
| ['Ⓟ', '(P)'], | |
| ['Ⓠ', '(Q)'], | |
| ['Ⓡ', '(R)'], | |
| ['Ⓢ', '(S)'], | |
| ['Ⓣ', '(T)'], | |
| ['Ⓤ', '(U)'], | |
| ['Ⓥ', '(V)'], | |
| ['Ⓦ', '(W)'], | |
| ['Ⓧ', '(X)'], | |
| ['Ⓨ', '(Y)'], | |
| ['Ⓩ', '(Z)'], | |
| ['ⓐ', '(a)'], | |
| ['ⓑ', '(b)'], | |
| ['ⓒ', '(b)'], | |
| ['ⓓ', '(c)'], | |
| ['ⓔ', '(e)'], | |
| ['ⓕ', '(f)'], | |
| ['ⓖ', '(g)'], | |
| ['ⓗ', '(h)'], | |
| ['ⓘ', '(i)'], | |
| ['ⓙ', '(j)'], | |
| ['ⓚ', '(k)'], | |
| ['ⓛ', '(l)'], | |
| ['ⓜ', '(m)'], | |
| ['ⓝ', '(n)'], | |
| ['ⓞ', '(o)'], | |
| ['ⓟ', '(p)'], | |
| ['ⓠ', '(q)'], | |
| ['ⓡ', '(r)'], | |
| ['ⓢ', '(s)'], | |
| ['ⓣ', '(t)'], | |
| ['ⓤ', '(u)'], | |
| ['ⓥ', '(v)'], | |
| ['ⓦ', '(w)'], | |
| ['ⓧ', '(x)'], | |
| ['ⓨ', '(y)'], | |
| ['ⓩ', '(z)'], | |
| // Maltese | |
| ['Ċ', 'C'], | |
| ['ċ', 'c'], | |
| ['Ġ', 'G'], | |
| ['ġ', 'g'], | |
| ['Ħ', 'H'], | |
| ['ħ', 'h'], | |
| ['Ż', 'Z'], | |
| ['ż', 'z'], | |
| // Numbers | |
| ['𝟎', '0'], | |
| ['𝟏', '1'], | |
| ['𝟐', '2'], | |
| ['𝟑', '3'], | |
| ['𝟒', '4'], | |
| ['𝟓', '5'], | |
| ['𝟔', '6'], | |
| ['𝟕', '7'], | |
| ['𝟖', '8'], | |
| ['𝟗', '9'], | |
| ['𝟘', '0'], | |
| ['𝟙', '1'], | |
| ['𝟚', '2'], | |
| ['𝟛', '3'], | |
| ['𝟜', '4'], | |
| ['𝟝', '5'], | |
| ['𝟞', '6'], | |
| ['𝟟', '7'], | |
| ['𝟠', '8'], | |
| ['𝟡', '9'], | |
| ['𝟢', '0'], | |
| ['𝟣', '1'], | |
| ['𝟤', '2'], | |
| ['𝟥', '3'], | |
| ['𝟦', '4'], | |
| ['𝟧', '5'], | |
| ['𝟨', '6'], | |
| ['𝟩', '7'], | |
| ['𝟪', '8'], | |
| ['𝟫', '9'], | |
| ['𝟬', '0'], | |
| ['𝟭', '1'], | |
| ['𝟮', '2'], | |
| ['𝟯', '3'], | |
| ['𝟰', '4'], | |
| ['𝟱', '5'], | |
| ['𝟲', '6'], | |
| ['𝟳', '7'], | |
| ['𝟴', '8'], | |
| ['𝟵', '9'], | |
| ['𝟶', '0'], | |
| ['𝟷', '1'], | |
| ['𝟸', '2'], | |
| ['𝟹', '3'], | |
| ['𝟺', '4'], | |
| ['𝟻', '5'], | |
| ['𝟼', '6'], | |
| ['𝟽', '7'], | |
| ['𝟾', '8'], | |
| ['𝟿', '9'], | |
| ['①', '1'], | |
| ['②', '2'], | |
| ['③', '3'], | |
| ['④', '4'], | |
| ['⑤', '5'], | |
| ['⑥', '6'], | |
| ['⑦', '7'], | |
| ['⑧', '8'], | |
| ['⑨', '9'], | |
| ['⑩', '10'], | |
| ['⑪', '11'], | |
| ['⑫', '12'], | |
| ['⑬', '13'], | |
| ['⑭', '14'], | |
| ['⑮', '15'], | |
| ['⑯', '16'], | |
| ['⑰', '17'], | |
| ['⑱', '18'], | |
| ['⑲', '19'], | |
| ['⑳', '20'], | |
| ['⑴', '1'], | |
| ['⑵', '2'], | |
| ['⑶', '3'], | |
| ['⑷', '4'], | |
| ['⑸', '5'], | |
| ['⑹', '6'], | |
| ['⑺', '7'], | |
| ['⑻', '8'], | |
| ['⑼', '9'], | |
| ['⑽', '10'], | |
| ['⑾', '11'], | |
| ['⑿', '12'], | |
| ['⒀', '13'], | |
| ['⒁', '14'], | |
| ['⒂', '15'], | |
| ['⒃', '16'], | |
| ['⒄', '17'], | |
| ['⒅', '18'], | |
| ['⒆', '19'], | |
| ['⒇', '20'], | |
| ['⒈', '1.'], | |
| ['⒉', '2.'], | |
| ['⒊', '3.'], | |
| ['⒋', '4.'], | |
| ['⒌', '5.'], | |
| ['⒍', '6.'], | |
| ['⒎', '7.'], | |
| ['⒏', '8.'], | |
| ['⒐', '9.'], | |
| ['⒑', '10.'], | |
| ['⒒', '11.'], | |
| ['⒓', '12.'], | |
| ['⒔', '13.'], | |
| ['⒕', '14.'], | |
| ['⒖', '15.'], | |
| ['⒗', '16.'], | |
| ['⒘', '17.'], | |
| ['⒙', '18.'], | |
| ['⒚', '19.'], | |
| ['⒛', '20.'], | |
| ['⓪', '0'], | |
| ['⓫', '11'], | |
| ['⓬', '12'], | |
| ['⓭', '13'], | |
| ['⓮', '14'], | |
| ['⓯', '15'], | |
| ['⓰', '16'], | |
| ['⓱', '17'], | |
| ['⓲', '18'], | |
| ['⓳', '19'], | |
| ['⓴', '20'], | |
| ['⓵', '1'], | |
| ['⓶', '2'], | |
| ['⓷', '3'], | |
| ['⓸', '4'], | |
| ['⓹', '5'], | |
| ['⓺', '6'], | |
| ['⓻', '7'], | |
| ['⓼', '8'], | |
| ['⓽', '9'], | |
| ['⓾', '10'], | |
| ['⓿', '0'], | |
| // Punctuation | |
| ['🙰', '&'], | |
| ['🙱', '&'], | |
| ['🙲', '&'], | |
| ['🙳', '&'], | |
| ['🙴', '&'], | |
| ['🙵', '&'], | |
| ['🙶', '"'], | |
| ['🙷', '"'], | |
| ['🙸', '"'], | |
| ['‽', '?!'], | |
| ['🙹', '?!'], | |
| ['🙺', '?!'], | |
| ['🙻', '?!'], | |
| ['🙼', '/'], | |
| ['🙽', '\\'], | |
| // Alchemy | |
| ['🜇', 'AR'], | |
| ['🜈', 'V'], | |
| ['🜉', 'V'], | |
| ['🜆', 'VR'], | |
| ['🜅', 'VF'], | |
| ['🜩', '2'], | |
| ['🜪', '5'], | |
| ['🝡', 'f'], | |
| ['🝢', 'W'], | |
| ['🝣', 'U'], | |
| ['🝧', 'V'], | |
| ['🝨', 'T'], | |
| ['🝪', 'V'], | |
| ['🝫', 'MB'], | |
| ['🝬', 'VB'], | |
| ['🝲', '3B'], | |
| ['🝳', '3B'], | |
| // Emojis | |
| ['💯', '100'], | |
| ['🔙', 'BACK'], | |
| ['🔚', 'END'], | |
| ['🔛', 'ON!'], | |
| ['🔜', 'SOON'], | |
| ['🔝', 'TOP'], | |
| ['🔞', '18'], | |
| ['🔤', 'abc'], | |
| ['🔠', 'ABCD'], | |
| ['🔡', 'abcd'], | |
| ['🔢', '1234'], | |
| ['🔣', 'T&@%'], | |
| ['#️⃣', '#'], | |
| ['*️⃣', '*'], | |
| ['0️⃣', '0'], | |
| ['1️⃣', '1'], | |
| ['2️⃣', '2'], | |
| ['3️⃣', '3'], | |
| ['4️⃣', '4'], | |
| ['5️⃣', '5'], | |
| ['6️⃣', '6'], | |
| ['7️⃣', '7'], | |
| ['8️⃣', '8'], | |
| ['9️⃣', '9'], | |
| ['🔟', '10'], | |
| ['🅰️', 'A'], | |
| ['🅱️', 'B'], | |
| ['🆎', 'AB'], | |
| ['🆑', 'CL'], | |
| ['🅾️', 'O'], | |
| ['🅿', 'P'], | |
| ['🆘', 'SOS'], | |
| ['🅲', 'C'], | |
| ['🅳', 'D'], | |
| ['🅴', 'E'], | |
| ['🅵', 'F'], | |
| ['🅶', 'G'], | |
| ['🅷', 'H'], | |
| ['🅸', 'I'], | |
| ['🅹', 'J'], | |
| ['🅺', 'K'], | |
| ['🅻', 'L'], | |
| ['🅼', 'M'], | |
| ['🅽', 'N'], | |
| ['🆀', 'Q'], | |
| ['🆁', 'R'], | |
| ['🆂', 'S'], | |
| ['🆃', 'T'], | |
| ['🆄', 'U'], | |
| ['🆅', 'V'], | |
| ['🆆', 'W'], | |
| ['🆇', 'X'], | |
| ['🆈', 'Y'], | |
| ['🆉', 'Z'] | |
| ]; | |
| const matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; | |
| function escapeStringRegexp (str:string) { | |
| if (typeof str !== 'string') { | |
| throw new TypeError('Expected a string'); | |
| } | |
| return str.replace(matchOperatorsRe, '\\$&'); | |
| } | |
| const doCustomReplacements = (string: string, replacements: Map<string, string>) => { | |
| for (const [key, value] of replacements) { | |
| // TODO: Use `String#replaceAll()` when targeting Node.js 16. | |
| string = string.replace(new RegExp(escapeStringRegexp(key), 'g'), value); | |
| } | |
| return string; | |
| }; | |
| export default function transliterate(string: string, options:any) { | |
| if (typeof string !== 'string') { | |
| throw new TypeError(`Expected a string, got \`${typeof string}\``); | |
| } | |
| options = { | |
| customReplacements: [], | |
| ...options | |
| }; | |
| const customReplacements = new Map<string, string>([ | |
| ...builtinReplacements, | |
| ...options.customReplacements | |
| ]); | |
| string = string.normalize(); | |
| string = doCustomReplacements(string, customReplacements); | |
| string = string.normalize('NFD').replace(/\p{Diacritic}/gu, '').normalize(); | |
| return string; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment