### ----------------------------------------------------
### -- HomoGlypher
### -- Licenses: Artistic-2.0
### -- Authors: Paweł bbkr Pabian
### -- File: lib/HomoGlypher/Mappings.rakumod
### ----------------------------------------------------
### -- Chunk 1 of 3
unit package HomoGlypher::Mappings;

=begin pod

Rules:

Keys should contain only ASCII characters.
For example we don't provide mapping from 'ż' to 'ź'.

Keys should be provided in "digts, lowercase letters, uppercase letters" order.

Values should be sorted in "from most to less similar" order.
Glyphs with accents are always considered less similar.

Size difference must be reasonable.
For example 'O' and '°' are not considered homoglyphs.

Cursive similarities are not included.
For example 'т' in cursive looks like 'm'.
Maybe such advanced mappings will be added in the future.

Vertical mirroring are not included in mappings.
For example 'R' and 'Я' does not qualify.

90°, 180° and 270° rotations with optional horizontal or vertical mirroring
are included only in special %flipped mapping.
For example 'G' and '⅁' or 'J' and '𐐓'.

Remember that mappings are font dependent and subjective.
There is no ultimate truth.

=end pod

our %armenian = (

    '2' => [ 'շ' ],
    '8' => [ 'Ց' ],

    'b' => [ 'Ե' ],
    'd' => [ 'Ժ', 'ժ' ],
    'g' => [ 'ց' ],
    'n' => [ 'ո', 'ռ' ],
    'o' => [ 'օ' ],
    'u' => [ 'ս' ],
    'w' => [ 'ա' ],

    'B' => [ 'Յ' ],
    'O' => [ 'Օ', 'Ծ' ],
    'S' => [ 'Տ' ],
    'U' => [ 'Ա', 'Մ', 'Ս' ],

);
    
our %cherokee = (

    '0' => [ 'Ꮻ', 'Ꮎ' ],
    '4' => [ 'Ꮞ' ],
    '6' => [ 'Ꮾ' ],
    '9' => [ 'Ꮽ' ],
    
    'b' => [ 'Ꮟ', 'Ꮾ' ],
    'd' => [ 'Ꮷ', 'Ꮄ' ],
    'f' => [ 'Ꮅ' ],
    'fi' => [ 'Ᏺ' ],
    'h' => [ 'Ꮒ', 'Ꮵ', 'Ᏺ' ],
    'i' => [ 'Ꭵ' ],
    'l' => [ 'Ꮣ' ],
    'r' => [ 'Ꮁ' ],
    'w' => [ 'Ꮗ', 'Ꮚ' ],
    'y' => [ 'Ꭹ', 'Ꮍ' ],

    'A' => [ 'Ꭺ', 'Ꭿ', 'Ꮑ' ],
    'B' => [ 'Ᏼ', 'Ᏸ' ],
    'C' => [ 'Ꮯ', 'Ꮳ', 'Ꮸ' ],
    'D' => [ 'Ꭰ' ],
    'E' => [ 'Ꭼ', 'Ꮛ' ],
    'G' => [ 'Ꮐ', 'Ꮹ', 'Ꮆ', 'Ᏻ' ],
    'H' => [ 'Ꮋ' ],
    'I' => [ 'Ꭸ', 'Ꮀ', 'Ꮠ' ],
    'J' => [ 'Ꭻ' ],
    'K' => [ 'Ꮶ' ],
    'L' => [ 'Ꮮ', 'Ꮭ' ],
    'M' => [ 'Ꮇ' ],
    'O' => [ 'Ꮎ', 'Ꮻ', 'Ꭴ', 'Ꮕ' ],
    'OI' => [ 'Ꮊ' ],
    'P' => [ 'Ꮲ', 'Ꭾ' ],
    'R' => [ 'Ꭱ', 'Ꮢ' ],
    'S' => [ 'Ꮪ', 'Ꮥ', 'Ꭶ' ],
    'T' => [ 'Ꭲ' ],
    'U' => [ 'Ꮜ' ],
    'V' => [ 'Ꮩ', 'Ꮴ', 'Ꮙ' ],
    'W' => [ 'Ꮃ', 'Ꮤ' ],
    'Z' => [ 'Ꮓ' ],

);

our %deseret = (

    '6' => [ '𐐞' ],

    'a' => [ '𐐀', '𐐀' ],
    'b' => [ '𐑇' ],
    'c' => [ '𐐽' ],
    'd' => [ '𐐼' ],
    'l' => [ '𐑊', '𐐢' ],
    'o' => [ '𐐬', '𐐫' ],
    'p' => [ '𐑁' ],
    's' => [ '𐑈' ],
    'v' => [ '𐐷' ],
    'w' => [ '𐐶' ],
    'y' => [ '𐑄' ],

    'B' => [ '𐐚' ],
    'C' => [ '𐐕' ],
    'D' => [ '𐐟' ],
    'E' => [ '𐐁' ],
    'J' => [ '𐐢' ],
    'L' => [ '𐐛', '𐑃' ],
    'O' => [ '𐐄', '𐐃' ],
    'P' => [ '𐐙' ],
    'S' => [ '𐐠' ],
    'V' => [ '𐐏' ],
    'W' => [ '𐐎' ],
    'Y' => [ '𐐜' ],

);

our %cyrillic = (

    '0' => [ 'О', 'Ф', 'ф' ],
    '3' => [ 'З', 'з' ],

    'a' => [ 'а' ],
    'b' => [ 'Ь', 'ь', 'б', 'Б', ],
    'c' => [ 'с' ],
    'e' => [ 'е' ],
    'i' => [ 'і' ],
    'io' => [ 'ю' ],
    'n' => [ 'п' ],
    'o' => [ 'о' ],
    'p' => [ 'р' ],
    'r' => [ 'г', 'Г' ],
    's' => [ 'ѕ' ],
    'u' => [ 'ц' ],
    'v' => [ 'ѵ' ],
    'w' => [ 'ш', 'щ', 'ѡ' ],
    'x' => [ 'х' ],
    'y' => [ 'у', 'У', 'ч', 'Ч' ],

    'A' => [ 'А' ],
    'B' => [ 'В', 'в' ],
    'C' => [ 'С' ],
    'E' => [ 'Е' ],
    'H' => [ 'Н', 'н' ],
    'I' => [ 'І' ],
    'IO' => [ 'Ю' ],
    'K' => [ 'К', 'к' ],
    'M' => [ 'М', 'м' ],
    'O' => [ 'О' ],
    'P' => [ 'Р' ],
    'S' => [ 'Ѕ' ],
    'T' => [ 'Т', 'т' ],
    'U' => [ 'Ц' ],
    'V' => [ 'Ѵ' ],
    'W' => [ 'Ш', 'Щ', 'Ѡ' ],
    'X' => [ 'Х' ],
    'Y' => [ 'У', 'Ч' ],

);

our %greek = (

    '0' => [ 'Θ', 'θ' ],

    'a' => [ 'α' ],
    'c' => [ 'ϲ', 'ς' ],
    'l' => [ 'ι' ],
    'n' => [ 'η', 'π' ],
    'o' => [ 'ο', 'σ' ],
    'p' => [ 'ρ' ],
    'r' => [ 'Γ' ],
    'u' => [ 'υ', 'μ' ],
    'v' => [ 'ν' ],
    'w' => [ 'ω', 'ψ' ],
    'y' => [ 'γ' ],

    'A' => [ 'Α', '𝚲', 'Δ' ],
    'B' => [ 'Β', 'β' ],
    'E' => [ 'Ε', 'Σ', 'ε', 'ξ' ],
    'H' => [ 'Η' ],
    'I' => [ 'Ι' ],
    'K' => [ 'Κ', 'κ' ],
    'M' => [ 'Μ' ],
    'N' => [ 'Ν' ],
    'O' => [ 'Ο', 'Θ', 'θ', 'Ω' ],
    'P' => [ 'Ρ' ],
    'T' => [ 'Τ', 'τ' ],
    'W' => [ 'Ψ' ],
    'X' => [ 'Χ', 'χ' ],
    'Y' => [ 'Υ', 'γ' ],
    'Z' => [ 'Ζ' ],

);

our %greek-mathematical-typeface = (

    '0' => [ '𝛉', '𝜃', '𝜽', '𝝷', '𝞱', '𝚯', '𝚹', '𝛩', '𝛳', '𝜣', '𝜭', '𝝝', '𝝧', '𝞗', '𝞡', '𝚯', '𝚹', '𝛩', '𝛳', '𝜣', '𝜭', '𝝝', '𝝧', '𝞗', '𝞡' ],

    'a' => [ '𝛂', '𝛼', '𝜶', '𝝰', '𝞪' ],
    'c' => [ '𝞁', '𝞻' ],
    'l' => [ '𝛊', '𝜄', '𝜾', '𝝸', '𝞲' ],
    'n' => [ '𝛈', '𝜂', '𝜼', '𝝶', '𝞰' ],
    'o' => [ '𝛐', '𝜊', '𝝄', '𝝾', '𝞸', '𝛔', '𝜎', '𝞂', '𝞼' ],
    'p' => [ '𝛒', '𝞀', '𝞺' ],
    'q' => [ '𝜌', '𝝆', ],
    'r' => [ '𝚪', '𝛤', '𝜞', '𝝘', '𝞒' ],
    't' => [ '𝛕', '𝜏', '𝝉', '𝞃', '𝞽' ],
    'u' => [ '𝛍', '𝜇', '𝝁', '𝝻', '𝞵', '𝛖', '𝜐', '𝝊', '𝞄', '𝞾' ],
    'v' => [ '𝛎', '𝜈', '𝝂', '𝝼', '𝞶' ],
    'w' => [ '𝛚', '𝜔', '𝝎', '𝞈', '𝟂', '𝛙', '𝜓', '𝝍', '𝞇', '𝟁' ],
    'y' => [ '𝛄', '𝛾', '𝜸', '𝝲', '𝞬' ],

    'A' => [ '𝚨', '𝛢', '𝜜', '𝝖', '𝞐', '𝚲', '𝛬', '𝜦', '𝝠', '𝞚', '𝚫', '𝛥', '𝜟', '𝝙', '𝞓' ],
    'B' => [ '𝚩', '𝛣', '𝜝', '𝝗', '𝞑', '𝛃', '𝛽', '𝜷', '𝝱', '𝞫' ],
    'E' => [ '𝚬', '𝛦', '𝜠', '𝝚', '𝞔', '𝚺', '𝛴', '𝜮', '𝝨', '𝞢', '𝛆', '𝜀', '𝜺', '𝝴', '𝞮', '𝛏', '𝜉', '𝝃', '𝝽', '𝞷' ],
    'F' => [ '𝟊', '𝟋' ],
    'H' => [ '𝚮', '𝛨', '𝜢', '𝝜', '𝞖' ],
    'I' => [ '𝚰', '𝛪', '𝜤', '𝝞', '𝞘' ],
    'K' => [ '𝚱', '𝛫', '𝜥', '𝝟', '𝞙', '𝛋', '𝜅', '𝜿', '𝝹', '𝞳' ],
    'M' => [ '𝚳', '𝛭', '𝜧', '𝝡', '𝞛' ],
    'N' => [ '𝚴', '𝛮', '𝜨', '𝝢', '𝞜' ],
    'O' => [ '𝚶', '𝛰', '𝜪', '𝝤', '𝞞', '𝛉', '𝜃', '𝜽', '𝝷', '𝞱', '𝚯', '𝚹', '𝛩', '𝛳', '𝜣', '𝜭', '𝝝', '𝝧', '𝞗', '𝞡', '𝚯', '𝚹', '𝛩', '𝛳', '𝜣', '𝜭', '𝝝', '𝝧', '𝞗', '𝞡', '𝛀', '𝛺', '𝜴', '𝝮', '𝞨' ],
    'P' => [ '𝚸', '𝛲', '𝜬', '𝝦', '𝞠' ],
    'T' => [ '𝚻', '𝛵', '𝜯', '𝝩', '𝞣' ],
    'W' => [ '𝚿', '𝛹', '𝜳', '𝝭', '𝞧' ],
    'X' => [ '𝚾', '𝛸', '𝜲', '𝝬', '𝞦', '𝛘', '𝜒', '𝝌', '𝞆', '𝟀' ],
    'Y' => [ '𝚼', '𝛶', '𝜰', '𝝪', '𝞤', '𝛄', '𝛾', '𝜸', '𝝲', '𝞬' ],
    'Z' => [ '𝚭', '𝛧', '𝜡', '𝝛', '𝞕' ],

);

our %georgian = (

    '3' => [ 'ვ', 'კ', 'პ', 'ჳ', 'ჴ' ],

    'b' => [ 'Ⴆ', 'ხ', 'Ⴊ', 'ს', ],
    'd' => [ 'ძ', 'ქ' ],
    'h' => [ 'Ⴙ' ],
    'l' => [ 'Ⴑ', 'Ⴠ' ],
    'm' => [ 'ო' ],
    'o' => [ 'ი' ],
    'y' => [ 'Ⴘ', 'Ⴁ', 'Ⴏ', 'Ⴣ', 'Ⴗ', 'ყ' ],

    'C' => [ 'Ⴚ' ],
    'J' => [ 'Ⴐ' ],
    'O' => [ 'Ⴍ', 'Ⴍ', 'Ⴓ' ],
    'S' => [ 'Ⴝ' ],
    'U' => [ 'Ⴎ' ],
    'Y' => [ 'Ⴤ' ],

);

our %latin = (

    '0' => [ 'ʘ' ],
    '3' => [ 'Ʒ', 'Ȝ', 'ȝ', 'ɜ', 'ʒ', 'ᴈ', 'ᴣ', 'Ꝫ', 'ꝫ',  ],
    '5' => [ 'Ƽ', 'ƽ' ],
    '6' => [ 'Ỽ' ],
    '8' => [ 'ꝸ' ],
    '9' => [ 'Ꝯ' ],

    'aa' => [ 'ꜳ' ],
    'ae' => [ 'æ' ],
    'ao' => [ 'ꜵ' ],
    'au' => [ 'ꜷ' ],
    'av' => [ 'ꜹ' ],
    'b' => [ 'Ƅ', 'ƅ' ],
    'd' => [ 'ꝱ' ],
    'dz' => [ 'ǳ', 'ʣ' ],
    'f' => [ 'ſ', 'ẜ', 'ẝ' ],
    'ff' => [ 'ﬀ' ],
    'ffi' => [ 'ﬃ' ],
    'ffl' => [ 'ﬄ' ],
    'fi' => [ 'ﬁ' ],
    'fl' => [ 'ﬂ' ],
    'fn' => [ 'ʩ' ],
    'g' => [ 'ɡ', 'ꝯ' ],
    'h' => [ 'ꜧ' ],
    'hv' => [ 'ƕ' ],
    'ij' => [ 'ĳ' ],
    'j' => [ 'ȷ' ],
    'l' => [ 'ɩ', 'Ɩ', 'ꝲ' ],
    'lj' => [ 'ǈ', 'ǉ' ],
    'ls' => [ 'ʪ' ],
    'lz' => [ 'ʫ' ],
    'm' => [ 'ꝳ' ],
    'n' => [ 'ꝴ' ],
    'nj' => [ 'ǌ' ],
    'o' => [ 'ᴏ' ],
    'oe' => [ 'œ' ],
    'oi' => [ 'ƣ' ],
    'oo' => [ 'ꝏ' ],
    'p' => [ 'ƿ', 'þ' ],
    'r' => [ 'ꝵ', 'ꞅ' ],
    'st' => [ 'ﬆ' ],
    't' => [ '✝' ],
    'tf' => [ 'ʧ' ],
    'ts' => [ 'ʦ' ],
    'u' => [ 'ᴜ' ],
    'v' => [ 'ᴠ' ],
    'vy' => [ 'ꝡ' ],
    'w' => [ 'ᴡ' ],
    'z' => [ 'ᴢ' ],

    'A' => [ 'ᴀ' ],
    'AA' => [ 'Ꜳ' ],
    'AE' => [ 'Æ', 'ᴁ' ],
    'AJ' => [ 'Ꜷ' ],
    'AO' => [ 'Ꜵ' ],
    'AV' => [ 'Ꜹ' ],
    'AY' => [ 'Ꜽ' ],
    'B' => [ 'ʙ', 'ß' ],
    'C' => [ 'ᴄ', 'ʗ' ],
    'D' => [ 'ᴅ', 'Ð', 'Ɖ' ],
    'Dz' => [ 'ǲ' ],
    'DZ' => [ 'Ǳ' ],
    'E' => [ 'ᴇ', 'Ɛ', 'Ʃ', 'ɛ', 'Ꜫ', 'ꜫ' ],
    'F' => [ 'ꜰ', 'ꝼ' ],
    'G' => [ 'ɢ' ],
    'H' => [ 'ʜ', 'Ꜧ' ],
    'Hi' => [ 'Ƕ' ],
    'I' => [ 'ǀ', 'ɪ' ],
    'II' => [ 'ǁ' ],
    'IJ' => [ 'Ĳ' ],
    'J' => [ 'ᴊ' ],
    'K' => [ 'ᴋ', 'ĸ' ],
    'L' => [ 'ʟ' ],
    'LJ' => [ 'Ǉ' ],
    'M' => [ 'ᴍ' ],
    'N' => [ 'ɴ' ],
    'Nj' => [ 'ǋ', 'Ǌ' ],
    'O' => [ 'ᴏ', 'Ꝺ' ],
    'OE' => [ 'Œ' ],
    'OI' => [ 'Ƣ' ],
    'OO' => [ 'Ꝏ' ],
    'P' => [ 'ᴘ', 'Ƿ' ],
    'R' => [ 'ʀ', 'Ʀ', 'ꝶ' ],
    'S' => [ 'ꜱ' ],
    'T' => [ 'ᴛ' ],
    'U' => [ 'ᴜ', 'Ʊ' ],
    'V' => [ 'ᴠ' ],
    'VY' => [ 'Ꝡ' ],
    'W' => [ 'ᴡ', 'ꟿ' ],
    'Y' => [ 'ʏ', 'Ɣ' ],
    'Z' => [ 'ᴢ' ],

);

our %letterlike = (

);

our %lisu = (

    'd' => [ 'ꓒ' ],

    'A' => [ 'ꓮ' ],
    'B' => [ 'ꓐ' ],
    'C' => [ 'ꓚ' ],
    'D' => [ 'ꓓ' ],
    'E' => [ 'ꓰ' ],
    'F' => [ 'ꓝ' ],
    'G' => [ 'ꓖ' ],
    'H' => [ 'ꓧ' ],
    'I' => [ 'ꓲ' ],
    'J' => [ 'ꓙ' ],
    'K' => [ 'ꓗ' ],
    'L' => [ 'ꓡ' ],
    'M' => [ 'ꓟ' ],
    'N' => [ 'ꓠ' ],
    'O' => [ 'ꓳ' ],
    'P' => [ 'ꓑ' ],
    'R' => [ 'ꓣ' ],
    'S' => [ 'ꓢ' ],
    'T' => [ 'ꓔ' ],
    'U' => [ 'ꓴ' ],
    'V' => [ 'ꓦ' ],
    'W' => [ 'ꓪ' ],
    'X' => [ 'ꓫ' ],
    'Y' => [ 'ꓬ' ],
    'Z' => [ 'ꓜ' ],

);

our %myanmar = (

    '3' => [ 'ဒ' ],

    'c' => [ 'င' ],
    'm' => [ 'က' ],
    'o' => [ 'ဝ', ],
    'oo' => [ 'ထ' ],
    'w' => [ 'ယ' ],

);

our %roman-numerals = (

    'c' => [ 'ⅽ' ],
    'd' => [ 'ⅾ' ],
    'i' => [ 'ⅰ' ],
    'ii' => [ 'ⅱ' ],
    'iii' => [ 'ⅲ' ],
    'iv' => [ 'ⅳ' ],
    'ix' => [ 'ⅸ' ],
    'l' => [ 'ⅼ' ],
    'm' => [ 'ⅿ' ],
    'v' => [ 'ⅴ' ],
    'vi' => [ 'ⅵ' ],
    'vii' => [ 'ⅶ' ],
    'viii' => [ 'ⅷ' ],
    'x' => [ 'ⅹ' ],
    'xi' => [ 'ⅺ' ],
    'xii' => [ 'ⅻ' ],

    'C' => [ 'Ⅽ', 'ↅ' ],
    'D' => [ 'Ⅾ' ],
    'I' => [ 'Ⅰ' ],
    'II' => [ 'Ⅱ' ],
    'III' => [ 'Ⅲ' ],
    'IV' => [ 'Ⅳ' ],
    'IX' => [ 'Ⅸ' ],
    'L' => [ 'Ⅼ' ],
    'M' => [ 'Ⅿ' ],
    'V' => [ 'Ⅴ' ],
    'VI' => [ 'Ⅵ' ],
    'VII' => [ 'Ⅶ' ],
    'VIII' => [ 'Ⅷ' ],
    'X' => [ 'Ⅹ' ],
    'XI' => [ 'Ⅺ' ],
    'XII' => [ 'Ⅻ' ],

);

our %runic = (

    '1' => [ 'ᛐ' ],

    'B' => [ 'ᛒ' ],
    'E' => [ 'ᛊ' ],
    'I' => [ 'ᛁ' ],
    'K' => [ 'ᛕ' ],
    'M' => [ 'ᛖ' ],
    'N' => [ 'ᚺ' ],
    'P' => [ 'ᚹ' ],
    'R' => [ 'ᚱ' ],
    'X' => [ 'ᚷ' ],

);

our %math-symbols = (

    '0' => [ '∅' ],
    '3' => [ '϶' ],

    'a' => [ '∂' ],
    'c' => [ '⊂' ],
    'f' => [ '⨍' ],
    'n' => [ '⨅' ],
    'u' => [ '∪', '⋃' ],
    'v' => [ '⋁', '⋎' ],
    'x' => [ '⨉', '×' ],

    'C' => [ '∁' ],
    'D' => [ '⫐' ],
    'E' => [ '⋿', '∈', '∑', '⨊' ],
    'I' => [ '|', '⎮', '⎪' ],
    'L' => [ '∟' ],
    'T' => [ '⟙', '⊤', '⥾' ],
    'V' => [ '√' ],

);

# set of all typical homoglyph mappings for easier loading
our @basic = (
    %armenian,
    %cherokee,
    %cyrillic,
    %deseret,
    %greek,
    %greek-mathematical-typeface,
    %georgian,
    %latin,
    %lisu,
    %myanmar,
    %roman-numerals,
    %runic,
    %math-symbols
);

our %ballot = (

    'X' => [ '✗' ],

);

our %ballot-bold-script = (

    'x' => [ '🗶' ],

);

our %ballot-script = (

    'x' => [ '🗴' ],

);

our %bold = (

    '0' => [ '𝟎' ],
    '1' => [ '𝟏' ],
    '2' => [ '𝟐' ],
    '3' => [ '𝟑' ],
    '4' => [ '𝟒' ],
    '5' => [ '𝟓' ],
    '6' => [ '𝟔' ],
    '7' => [ '𝟕' ],
    '8' => [ '𝟖' ],
    '9' => [ '𝟗' ],

    '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' => [ '𝐙' ],

);

our %bold-fraktur = (

    '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' => [ '𝖅' ],

);

our %bold-italic = (

    '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' => [ '𝒁' ],

);

our %bold-script = (

    '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' => [ '𝓩' ],

);

our %doublestruck = (

    '0' => [ '𝟘' ],
    '1' => [ '𝟙' ],
    '2' => [ '𝟚' ],
   