---
# UEB characters
#
# Some chars that originally came from an Excel spreadsheet, converted to csv, and the greatly expanded
# 
# The UEB translation makes use of some non-braille chars as flags
#    L -- what follows is a letter
#    N -- what follows is a digit
#    C -- precedes L for capital letters
#    G -- precedes L for Greek Letters (after C for capitals)
#  Typeface Indicators ("typeforms")
#    B bold, I Italic, S Sans-serif, T script, D, Fraktur, 𝔹 blackboard-bold
#    the type face indicators can be combined with B (first) and I (second)
#  Standing alone chars:
#    Any character which acts as a standing alone character (e.g, "{") needs each braille symbol to be labeled
#    o -- opening/left side, c -- closing/right side, b -- both open and close (e.g, '"')

 - "0": [t: "N⠚"]               # 0x30 
 - "1": [t: "N⠁"]               # 0x31 
 - "2": [t: "N⠃"]               # 0x32 
 - "3": [t: "N⠉"]               # 0x33 
 - "4": [t: "N⠙"]               # 0x34 
 - "5": [t: "N⠑"]               # 0x35 
 - "6": [t: "N⠋"]               # 0x36 
 - "7": [t: "N⠛"]               # 0x37 
 - "8": [t: "N⠓"]               # 0x38 
 - "9": [t: "N⠊"]               # 0x39 

# we stick the drop numbers into the private use area for consistency
 - "\ue000": [t: "N⠴"]               # 0 
 - "\ue001": [t: "N⠂"]               # 1 
 - "\ue002": [t: "N⠆"]               # 2 
 - "\ue003": [t: "N⠒"]               # 3 
 - "\ue004": [t: "N⠲"]               # 4 
 - "\ue005": [t: "N⠢"]               # 5 
 - "\ue006": [t: "N⠖"]               # 6 
 - "\ue007": [t: "N⠶"]               # 7 
 - "\ue008": [t: "N⠦"]               # 8 
 - "\ue009": [t: "N⠔"]               # 9 

# we stick hex digits into the private use area for consistency
# these are used when we don't want to add a numeric indicator for subsequent digits (3.3)
 - "\ue00A": [t: "N⠐N⠁"]               # A 
 - "\ue00B": [t: "N⠐N⠃"]               # B 
 - "\ue00C": [t: "N⠐N⠉"]               # C 
 - "\ue00D": [t: "N⠐N⠙"]               # D 
 - "\ue00E": [t: "N⠐N⠑"]               # E 
 - "\ue00F": [t: "N⠐N⠋"]               # F 
# leave room for the rest of the alphabet
 - "\ue01A": [t: "N⠨N⠁"]               # A 
 - "\ue01B": [t: "N⠨N⠃"]               # B 
 - "\ue01C": [t: "N⠨N⠉"]               # C 
 - "\ue01D": [t: "N⠨N⠙"]               # D 
 - "\ue01E": [t: "N⠨N⠑"]               # E 
 - "\ue01F": [t: "N⠨N⠋"]               # F 

 - "a": [t: "L⠁"]               # 0x61 
 - "b": [t: "L⠃"]               # 0x62 
 - "c": [t: "L⠉"]               # 0x63 
 - "d": [t: "L⠙"]               # 0x64 
 - "e": [t: "L⠑"]               # 0x65 
 - "f": [t: "L⠋"]               # 0x66 
 - "g": [t: "L⠛"]               # 0x67 
 - "h": [t: "L⠓"]               # 0x68 
 - "i": [t: "L⠊"]               # 0x69 
 - "j": [t: "L⠚"]               # 0x6a 
 - "k": [t: "L⠅"]               # 0x6b 
 - "l": [t: "L⠇"]               # 0x6c 
 - "m": [t: "L⠍"]               # 0x6d 
 - "n": [t: "L⠝"]               # 0x6e 
 - "o":                         # 0x6f 
    - test:     # special case because these have the same dot pattern
        if: "preceding-sibling::*[1][self::m:mo and (.='>' or .='≫')]"
        then: [t: "⠐"]
    - t: "L⠕"
 - "p": [t: "L⠏"]               # 0x70 
 - "q": [t: "L⠟"]               # 0x71 
 - "r": [t: "L⠗"]               # 0x72 
 - "s": [t: "L⠎"]               # 0x73 
 - "t": [t: "L⠞"]               # 0x74 
 - "u": [t: "L⠥"]               # 0x75 
 - "v": [t: "L⠧"]               # 0x76 
 - "w": [t: "L⠺"]               # 0x77 
 - "x": [t: "L⠭"]               # 0x78 
 - "y": [t: "L⠽"]               # 0x79 
 - "z": [t: "L⠵"]               # 0x7a 


 - "á": [t: "L⠷"]               # 0xE1 
 - "é": [t: "L⠮"]               # 0xE9 
 - "í": [t: "L⠌"]               # 0xED 
 - "ñ": [t: "L⠻"]               # 0xF1 
 - "ó": [t: "L⠬"]               # 0xF3 
 - "ú": [t: "L⠾"]               # 0xFA 
 - "ü": [t: "L⠳"]               # 0xFC 

 - "Á": [t: "CL⠷"]               # 0xC0 
 - "É": [t: "CL⠮"]               # 0xC9 
 - "Í": [t: "CL⠌"]               # 0xCD 
 - "Ñ": [t: "CL⠻"]               # 0xD1 
 - "Ó": [t: "CL⠬"]               # 0xD3 
 - "Û": [t: "CL⠾"]               # 0xDA 
 - "Ü": [t: "CL⠳"]               # 0xDC 

 - "A": [t: "CL⠁"]              # 0x41 
 - "B":                         # 0x42 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠃"]
        else: [t: "CL⠃"]
 - "C":                         # 0x43 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠉"]
        else: [t: "CL⠉"]
 - "D": [t: "CL⠙"]              # 0x44 
 - "E": [t: "CL⠑"]              # 0x45 
 - "F": [t: "CL⠋"]              # 0x46 
 - "G": [t: "CL⠛"]              # 0x47 
 - "H":                         # 0x48 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠓"]
        else: [t: "CL⠓"]
 - "I":                         # 0x49 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠊"]
        else: [t: "CL⠊"]
 - "J": [t: "CL⠚"]              # 0x4a 
 - "K":                         # 0x4b 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠅"]
        else: [t: "CL⠅"]
 - "L": [t: "CL⠇"]              # 0x4c 
 - "M": [t: "CL⠍"]              # 0x4d 
 - "N":                         # 0x4e 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠝"]
        else: [t: "CL⠝"]
 - "O":                         # 0x4f 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠕"]
        else: [t: "CL⠕"]
 - "P":                         # 0x50 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠏"]
        else: [t: "CL⠏"]
 - "Q": [t: "CL⠟"]              # 0x51 
 - "R": [t: "CL⠗"]              # 0x52 
 - "S":                         # 0x53 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠎"]
        else: [t: "CL⠎"]
 - "T": [t: "CL⠞"]              # 0x54 
 - "U":                         # 0x55 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠥"]
        else: [t: "CL⠥"]
 - "V":                         # 0x56 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠧"]
        else: [t: "CL⠧"]
 - "W":                         # 0x57 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠺"]
        else: [t: "CL⠺"]
 - "X": [t: "CL⠭"]              # 0x58 
 - "Y":                         # 0x59 
    - test:
        if: "@data-chem-element"
        then: [t: "𝐶L⠽"]
        else: [t: "CL⠽"]
 - "Z": [t: "CL⠵"]              # 0x5a 

 - "α": [t: "GL⠁"]              # 0x3b1 
 - "β": [t: "GL⠃"]              # 0x3b2 
 - "γ": [t: "GL⠛"]              # 0x3b3 
 - "δ": [t: "GL⠙"]              # 0x3b4 
 - "ε": [t: "GL⠑"]              # 0x3b5 
 - "ζ": [t: "GL⠵"]              # 0x3b6 
 - "η": [t: "GL⠱"]             # 0x3b7 
 - "θ": [t: "GL⠹"]              # 0x3b8 
 - "ι": [t: "GL⠊"]              # 0x3b9 
 - "κ": [t: "GL⠅"]              # 0x3ba 
 - "λ": [t: "GL⠇"]              # 0x3bb 
 - "μ": [t: "GL⠍"]              # 0x3bc 
 - "ν": [t: "GL⠝"]              # 0x3bd 
 - "ξ": [t: "GL⠭"]              # 0x3be 
 - "ο": [t: "GL⠕"]              # 0x3bf 
 - "π": [t: "GL⠏"]              # 0x3c0 
 - "ρ": [t: "GL⠗"]              # 0x3c1 
 - "ς": [t: "VL⠎"]              # 0x3c2 
 - "σ": [t: "GL⠎"]              # 0x3c3 
 - "τ": [t: "GL⠞"]              # 0x3c4 
 - "υ": [t: "GL⠥"]              # 0x3c5 
 - "φ": [t: "GL⠋"]              # 0x3c6 
 - "χ": [t: "GL⠯"]              # 0x3c7 
 - "ψ": [t: "GL⠽"]              # 0x3c8 
 - "ω": [t: "GL⠺"]              # 0x3c9 

 - "Α": [t: "CGL⠁"]             # 0x391 
 - "Β": [t: "CGL⠃"]             # 0x392 
 - "Γ": [t: "CGL⠛"]             # 0x393 
 - "Δ": [t: "CGL⠙"]             # 0x394 
 - "Ε": [t: "CGL⠑"]             # 0x395 
 - "Ζ": [t: "CGL⠵"]             # 0x396 
 - "Η": [t: "CGL⠱ "]            # 0x397 
 - "Θ": [t: "CGL⠹"]             # 0x398 
 - "Ι": [t: "CGL⠊"]             # 0x399 
 - "Κ": [t: "CGL⠅"]             # 0x39a 
 - "Λ": [t: "CGL⠇"]             # 0x39b 
 - "Μ": [t: "CGL⠍"]             # 0x39c 
 - "Ν": [t: "CGL⠝"]             # 0x39d 
 - "Ξ": [t: "CGL⠭"]             # 0x39e 
 - "Ο": [t: "CGL⠕"]             # 0x39f 
 - "Π": [t: "CGL⠏"]             # 0x3a0 
 - "Ρ": [t: "CGL⠗"]             # 0x3a1 
 - "΢": [t: "CGL⠎"]             # 0x3a2 
 - "Σ": [t: "CGL⠎"]             # 0x3a3 
 - "Τ": [t: "CGL⠞"]             # 0x3a4 
 - "Υ": [t: "CGL⠥"]             # 0x3a5 
 - "Φ": [t: "CGL⠋"]             # 0x3a6 
 - "Χ": [t: "CGL⠯"]             # 0x3a7 
 - "Ψ": [t: "CGL⠽"]             # 0x3a8 
 - "Ω": [t: "CGL⠺"]             # 0x3a9

 - "ϑ": [t: "VL⠹"]              # 0x3d1
 - "ϵ": [t: "VL⠑"]              # 0x3f5
 - "ϰ": [t: "VL⠅"]              # 0x3f0
 - "ϕ": [t: "VL⠋"]              # 0x3d5
 - "ϱ": [t: "VL⠗"]              # 0x3f1
 - "ϖ": [t: "VL⠏"]              # 0x3d6
 - "Ϝ": [t: "VL⠧"]              # 0x3d7

 - "µ": [t: "GL⠍"]              # 0x00B5 (Micro (Greek mu))
 - "Ω": [t: "CGL⠺"]             # 0x2126 (Ohm sign (capital Greek omega))
 - "∆": [t: "⠸⠦"]               # 0x2206 (Increment)
 - "∏":                         # 0x220F (Product (capital Greek pi))
    - t: "CGL⠏"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "∐":                         # 0x2210 (CoProduct (capital Greek pi))
    - t: "⠘⠻"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "∑":                          # 0x2211 (Sum (capital Greek sigma))
    - t: "CGL⠎"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]

 - "<": [t: "⠪"]               # 0x003C (Less than)
 - "≨": [t: "⠪"]               # 0x2268 (Less-Than But Not Equal To)
 - "⋦": [t: "⠪"]               # 0x22E6 (Less-Than But Not Equivalent To)
 - ">": [t: "⠕"]               # 0x003E (Greater than)
 - "≩": [t: "⠕"]               # 0x2269 (Greater-Than But Not Equal To)
 - "⋧": [t: "⠕"]               # 0x22E7 (Greater-Than But Not Equivalent To)
#  - "≮": [t: "⠈⠣⠈⠱"]             # 0x226E (Not less than)
#  - "≯": [t: "⠈⠜⠈⠱"]             # 0x226F (Not greater than)
#  - "≰": [t: "⠸⠈⠣⠈⠱"]            # 0x2270 (Neither less than nor equal to)
#  - "≱": [t: "⠸⠈⠜⠈⠱"]            # 0x2271 (Neither greater than nor equal to)
#  - "∝": [t: "⠸⠐⠶"]              # 0x221D (Proportional to)
#  - "≃": [t: "⠸⠔"]               # 0x2243 (Approximately equal to (tilde over horizontal line))
#  - "≅": [t: "⠐⠸⠔"]               # 0x2245 (Approximately equal to (tilde over equals sign))
#  - "≏": [t: "⠘⠐⠶"]              # 0x224F (Equals with bump in top bar (difference between))
#  - "≢": [t: "⠸⠿⠈⠱"]             # 0x2262 (Not identical to)
#  - "∈": [t: "⠘⠑"]               # 0x2208 (Element of (member of))
#  - "∉": [t: "⠘⠑⠈⠱"]            # 0x2209 (Not Element of)
 - "+": [t: "⠖"]               # 0x002B (Plus sign)
#  - "∋": [t: "⠈⠘⠑"]              # 0x220B (Contains)
#  - "⊂": [t: "⠘⠣"]              # 0x2282 (Subset of)
#  - "⊃": [t: "⠘⠜"]              # 0x2283 (Superset of)
#  - "⊆": [t: "⠸⠘⠣"]             # 0x2286 (Subset of or equal)
#  - "⊇": [t: "⠸⠘⠜"]             # 0x2287 (Superset of or equal)
#  - "⊊": [t: "⠨⠘⠣"]             # 0x228A (Subset of with not equal)
#  - "⊋": [t: "⠨⠘⠜"]             # 0x228B (Superset of with not equal)
#  - "⊲": [t: "⠈⠸⠣"]             # 0x22B2 (Normal subgroup of)
#  - "⊳": [t: "⠈⠸⠜"]             # 0x22B3 (Contains as normal subgroup)
#  - "⊴": [t: "⠸⠸⠣"]             # 0x22B4 (Normal subgroup of or equal)
#  - "⊵": [t: "⠸⠸⠜"]             # 0x22B5 (Contains as normal subgroup or equal)
#  - "⋬": [t: "⠨⠸⠣"]             # 0x22EC (not normal subgroup) -- this isn't the same as what is in GTM 10, but that similar has no Unicode equiv
#  - "⋭": [t: "⠨⠸⠣"]             # 0x22ED (does not contain as normal subgroup) -- this isn't the same as what is in GTM 10, but that similar has no Unicode equiv
#  - "⊢": [t: "⠸⠒"]               # 0x22a2 (Right tack)
#  - "⊣": [t: "⠈⠸⠒"]              # 0x22a3 (Left tack)
 - "−": [t: "⠐⠤"]               # 0x2212 (Minus sign)
 - "·": [t: "⠠𝘄"]               # 0x00B7 (Multiplication dot (times))
#  - "∗": [t: "⠐⠔"]               # 0x2217 (Asterisk operator)
 - "∘": [t: "⠠⠆"]               # 0x2218 (Ring operator)  value based on last row in 5.1 (probably what they should have used)
 - "◦": [t: "⠠⠆"]               # 0x25E6 (White bullet) (value based on 2218)
 - "⋅": [t: "⠰⠄"]               # 0x22C5 (Dot operator)(value based on 2218)
#  - "∖": [t: "⠸⠡"]               # 0x2216 (Set minus)
 - "(": [t: "⠣"]               # 0x0028 (Left parenthesis)
 - ")": [t: "⠜"]               # 0x0029 (Right parenthesis)
 - "[": [t: "⠷"]               # 0x005B (Left square bracket)
 - "]": [t: "⠾"]               # 0x005D (Right square bracket)
 - "!":                       # 0x21 (Exclamation (factorial))
     - test:    # CMU seems to use a different char for factorial (7.5) -- this weak guess for factorial
        if: "self::m:mo and preceding-sibling::*"
        then: [t: "⠘⠄"]
        else: [t: "⠖"]
 - "&": [t: "⠠⠯"]               # 0x26 (Ampersand)
 - "*": [t: "⠲"]               # 0x002A (Asterisk)
 - "?": [t: "⠢"]               # 0x003F (Question mark)
 - "¿": [t: "⠢"]               # 0x00BF (Question mark)
 - "@": [t: "⠐"]               # 0x0040 (Commercial at sign)
 - "^":                        # 0x005E (Caret (hat, up arrow)) 4.3.2 uses one form as a circumflex, and 11.1 as a geometric angle
    - test:    # it is not clear how to distinguish one form from another -- the following passes the tests, but is almost certainly wrong
        - if: "..[self::m:mover][ *[1][self::m:mi and string-length(.)=1 and translate(., 'abcdefghijklmnopqrstuvwxyz', '') = ''] ]"
          then: [t: "⠰⠒"]   # circumflex
          else: [t: "⠘⠒"]   # angle and everything else
 - "_": [t: "⠤"]               # 0x005F (Low line (underscore))
 - "¯": [t: "⠈⠉"]               # 0x00AF (macron)
 - "═": [t: "⠈⠉⠈⠉"]             # 0x2550 (BOX DRAWINGS DOUBLE HORIZONTAL)
 - "~":                        # 0x007E (Tilde (swung dash))
    - test:           # unclear what really should happen see 4.3.2, 4.3.3, 6.1, and 8.2 -- all use different codes
        - if: "..[self::m:mover]"
          then: [t: "⠐⠢"]
        - else_if: "..[self::m:munder]"
          then: [t: "⠠⠢"] 
        - else_if: "not(preceding-sibling::*)"
          then: [t: "⠠⠄"]     # (8.2 -- prefix?)
          else: [t: "⠐⠢⠠"]   # (6.1 -- infix?)
 - ∼:                        # 223c (Tilde operator)
    - test:           # unclear what really should happen see 4.3.2, 4.3.3, 6.1, and 8.2 -- all use different codes
        - if: "..[self::m:mover]"
          then: [t: "⠐⠢"]
        - else_if: "..[self::m:munder]"
          then: [t: "⠠⠢"] 
        - else_if: "not(preceding-sibling::*)"
          then: [t: "⠠⠄"]     # (8.2 -- prefix?)
          else: [t: "⠐⠢⠠"]   # (6.1 -- infix?)
 - "—": [t: "⠤⠤"]               # 0x2014 (Em dash)
 - "‖": [t: "⠸⠇"]               # 0x2016
#  - "¦": [t: "⠨⠳"]               # 0x00A6 (Broken bar)
#  - "¬": [t: "⠈⠹"]               # 0x00AC (Not sign)
 - "°": [t: "⠴"]                 # 0x00B0 (Degree sign)
 - "²": [t: "⠡⠼⠃⠉"]              # 0x00B2 (superscripted 2)
 - "³": [t: "⠡⠼⠉"]               # 0x00B3 (superscripted 3)
#  - "†": [t: "⠈⠠⠹"]              # 0x2020 (Dagger)
#  - "‡": [t: "⠈⠠⠻"]              # 0x2021 (Double dagger)
#  - "‰": [t: "⠸⠴⠴"]              # 0x2030 (Per mille)
 - "′": [t: "⠳"]                  # 0x2032 (Prime sign)
 - "″": [t: "⠳⠳"]                 # 0x2033 (Double prime sign)
 - "‴": [t: "⠳⠳⠳"]                # 0x2034 (Triple prime sign)
#  - "Å": [t: "⠠⠘⠫⠁"]             # 0x212B (Angstrom symbol)
#  - "Å": [t: "⠠⠘⠫⠁"]             # 0x00C5 (WIRIS uses this for Angstrom)
#  - "∀": [t: "⠘⠁"]               # 0x2200 (For all)
 - "∂": [t: "⠸⠙"]               # 0x2202 (Partial differential)
#  - "∃": [t: "⠘⠢"]               # 0x2203 (There exists)
#  - "∄": [t: "⠘⠢⠈⠱"]             # 0x2204 (There does not exist)
#  - "∅": [t: "⠈⠚"]               # 0x2205 (Empty set)
#  - "∎": [t: "⠸⠫⠼⠙t"]            # 0x220E (End of proof)
#  - "√": [t: "⠐⠩"]               # 0x221A (Square root (radical) without vinculum)
#  - "∠": [t: "⠸⠪"]               # 0x2220 (Angle)
#  - "∡": [t: "⠨⠸⠪"]              # 0x2221 (Measured angle)
#  - "⊾": [t: "⠼⠸⠪"]              # 0x22BE (Right angle with arc)
 - "∫":                            # 0x222B (Integral)
    - t: "⠯"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "∬":                           # 0x222c (Double integral)
    - t: "⠯⠯"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "∭":                           # 0x222d (Triple integral)
    - t: "⠯⠯⠯"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "∮":                           # 0x222E (Contour integral (closed line integral))
    - t: "⠯⠴"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
#  - "∷": [t: "⠒⠒"]              # 0x2237 (Proportion)
#  - "∣": [t: "⠸⠳"]               # 0x2223 (Divides)
#  - "∤": [t: "⠸⠳⠈⠱"]             # 0x2224 (Does not divide)
 - "←":                            # 0x2190 (Leftwards arrow)
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow)
        - "(..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "(..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        then: [t: "⠐⠒⠒"]  # 9.1
        else: [t: "⠐⠒"]   # 9.2
 - "⟵":                         # 0x27F5 (Long leftwards arrow)
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow)
        - "(..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "(..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        then: [t: "⠐⠒⠒"]  # 9.1
        else: [t: "⠐⠒"]   # 9.2
 - "→":                          # 0x2192 (Rightwards arrow)
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow), but rule out limit
        - "("
        - "  (..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "  (..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        - ") and"
        - "not(../..[self::m:munder or self::m:msub][*[1][self::m:mi and starts-with(., 'lim')]])"
        then: [t: "⠒⠒⠂"]  # 9.1
        else: [t: "⠒⠂"]   # 9.2
 - "⟶":                       # 0x27F6 (Long rightwards arrow)
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow), but rule out limit
        - "("
        - "  (..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "  (..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        - ") and"
        - "not(../..[self::m:munder or self::m:msub][*[1][self::m:mi and starts-with(., 'lim')]])"
        then: [t: "⠒⠒⠂"]  # 9.1
        else: [t: "⠒⠂"]   # 9.2
 - "⇀":                       # 0x21C0 (RIGHTWARDS HARPOON WITH BARB UPWARDS)  [not mentioned in spec]
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow), but rule out limit
        - "("
        - "  (..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "  (..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        - ") and"
        - "not(../..[self::m:munder or self::m:msub][*[1][self::m:mi and starts-with(., 'lim')]])"
        then: [t: "⠒⠒⠂"]  # 9.1
        else: [t: "⠒⠂"]   # 9.2
 - "↔":                     # 0x2194 (Left right arrow)
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow)
        - "(..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "(..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        then: [t: "⠐⠒⠒⠂"]  # 9.1
        else: [t: "⠐⠒⠂"]   # 9.2
 - "⟷":                 # 0x27F7 (Long Left right arrow)
    - test:  # this is a guess as to when to use each
        if:  # mi on either side or if parent is mover, mi on either side of the parent (e.g., A⟶B or labeled arrow)
        - "(..[self::m:mrow] and preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]) or "
        - "(..[self::m:mover][ ..[self::m:mrow][preceding-sibling::*[1][self::m:mi] and following-sibling::*[1][self::m:mi]] ])"
        then: [t: "⠐⠒⠒⠂"]  # 9.1
        else: [t: "⠐⠒⠂"]   # 9.2
#  - "↚": [t: "1⠳⠪⠈⠱"]            # 0x219A (Leftwards arrow with stroke)
#  - "↛": [t: "1⠳⠕⠈⠱"]            # 0x219B (Rightwards arrow with stroke)
#  - "↜": [t: "1⠳⠔⠢⠪"]            # 0x219C (Leftwards wave arrow)
#  - "↝": [t: "1⠳⠢⠔⠕"]            # 0x219D (Rightwards wave arrow)
#  - "↞": [t: "1⠳⠒⠗⠗⠪"]           # 0x219E (Leftwards two headed arrow)
#  - "↟": [t: "1⠳⠒⠗⠗⠬"]           # 0x219F (Upwards two headed arrow)
#  - "↠": [t: "1⠳⠒⠗⠗⠕"]           # 0x21A0 (Rightwards two headed arrow)
#  - "↡": [t: "1⠳⠒⠗⠗⠩"]           # 0x21A1 (Downwards two headed arrow)
#  - "↢": [t: "1⠳⠗⠗⠪"]            # 0x21A2 (Leftwards arrow with tail)
#  - "↣": [t: "1⠳⠗⠗⠕"]            # 0x21A3 (Rightwards arrow with tail)
#  - "↤": [t: "1⠳⠳⠗⠪"]            # 0x21A4 (Leftwards arrow from bar)
#  - "↥": [t: "1⠳⠳⠗⠬"]            # 0x21A5 (Upwards arrow from bar)
#  - "↦": [t: "1⠳⠳⠗⠕"]            # 0x21A6 (Rightwards arrow from bar)
#  - "↧": [t: "1⠳⠳⠗⠩"]            # 0x21A7 (Downwards arrow from bar)
#  - "↭": [t: "1⠳⠺⠔⠢⠗⠕"]          # 0x21AD (Left right wave arrow)
#  - "↮": [t: "1⠳⠺⠗⠕⠈⠱"]          # 0x21AE (Left right arrow with stroke)
#  - "↰": [t: "1⠳⠴⠬"]             # 0x21B0 (Upwards arrow with tip left)
#  - "↱": [t: "1⠳⠲⠬"]             # 0x21B1 (Upwards arrow with tip right)
#  - "↲": [t: "1⠳⠲⠩"]             # 0x21B2 (Downwards arrow with tip left)
#  - "↳": [t: "1⠳⠴⠩"]             # 0x21B3 (Downwards arrow with tip right)
#  - "↶": [t: "1⠳⠔⠔⠪"]            # 0x21B6 (Anticlockwise top semicircle arrow)
#  - "↷": [t: "1⠳⠢⠢⠕"]            # 0x21B7 (Clockwise top semicircle arrow)
#  - "↼": [t: "1⠳⠈⠗⠪"]            # 0x21BC (Leftwards harpoon with barb upwards)
#  - "↽": [t: "1⠳⠠⠗⠪"]            # 0x21BD (Leftwards harpoon with barb downwards)
#  - "↾": [t: "1⠳⠠⠗⠬"]            # 0x21BE (Upwards harpoon with barb rightwards)
#  - "↿": [t: "1⠳⠈⠗⠬"]            # 0x21BF (Upwards harpoon with barb leftwards)
#  - "⇀": [t: "1⠳⠈⠗⠕"]            # 0x21C0 (Rightwards harpoon with barb upwards)
#  - "⇁": [t: "1⠳⠠⠗⠕"]            # 0x21C1 (Rightwards harpoon with barb downwards)
#  - "⇂": [t: "1⠳⠈⠗⠩"]            # 0x21C2 (Downwards harpoon with barb rightwards)
#  - "⇃": [t: "1⠳⠠⠗⠩"]            # 0x21C3 (Downwards harpoon with barb leftwards)
#  - "⇄": [t: "1⠳⠕⠻⠳⠪"]           # 0x21C4 (Rightwards arrow over leftwards arrow)
#  - "⇅": [t: "1⠳⠬⠿⠳⠩"]           # 0x21C5 (Upwards arrow left of Downwards arrow)
#  - "⇌": [t: "⠘⠸⠶"]              # 0x21CC (Rightwards harpoon over leftwards harpoon (equilibrium))
#  - "⇑": [t: "1⠳⠶⠬"]             # 0x21D1 (Upwards double arrow)
#  - "⇓": [t: "1⠳⠶⠩"]             # 0x21D3 (Downwards double arrow)
#  - "⇕": [t: "1⠳⠺⠶⠗⠬"]           # 0x21D5 (Up down double arrow)
#  - "⇠": [t: "1⠳⠂⠪"]             # 0x21E0 (Leftwards dashed arrow)
#  - "⇡": [t: "1⠳⠂⠬"]             # 0x21E1 (Upwards dashed arrow)
#  - "⇢": [t: "1⠳⠂⠕"]             # 0x21E2 (Rightwards dashed arrow)
#  - "⇣": [t: "1⠳⠂⠩"]             # 0x21E3 (Downwards dashed arrow)
#  - "⥂": [t: "⠸⠶"]               # 0x2942 (Rightwards arrow above short leftwards arrow (equilibrium, trend to the right))
#  - "⥄": [t: "⠈⠸⠶"]              # 0x2944 (Short rightwards arrow above leftwards arrow (equilibrium, trend to the left))
#  - "▤": [t: "⠨⠫⠼⠙t"]            # 0x25A4 (Square with horizontal fill)
#  - "▥": [t: "⠨⠫⠼⠙t"]            # 0x25A5 (Square with vertical fill)
#  - "▦": [t: "⠨⠫⠼⠙t"]            # 0x25A6 (Square with orthogonal crosshatch fill)
#  - "▧": [t: "⠨⠫⠼⠙t"]            # 0x25A7 (Square with upper left to lower right fill)
#  - "▨": [t: "⠨⠫⠼⠙t"]            # 0x25A8 (Square with upper right to lower left fill)
#  - "▩": [t: "⠨⠫⠼⠙t"]            # 0x25A9 (Square with diagonal crosshatch fill)
#  - "◍": [t: "⠨⠫⠿t"]             # 0x25CD (Circle with vertical fill)
#  - "▱": [t: "1⠫⠈⠼⠙t"]           # 0x25B1 (Parallelogram)
#  - "▲": [t: "⠸⠫⠼⠉t"]            # 0x25B2 (Filled triangle)
#  - "■": [t: "⠸⠫⠼⠙t"]            # 0x25A0 (Filled square)
#  - "≜": [t: "⠠⠨⠙⠻⠐⠶"]           # 0x225C (Delta equal to)
#  - "≝": [t: "1⠣⠙⠑⠋⠜⠻⠐⠶"]        # 0x225D (Equal to by definition)
#  - "⊕": [t: "1⠫⠿⠪⠐⠖t"]          # 0x2295 (Circled plus)
#  - "⊖": [t: "1⠫⠿⠪⠐⠤t"]          # 0x2296 (Circled minus)
#  - "⊗": [t: "1⠫⠿⠪⠐⠦t"]          # 0x2297 (Circled times)
#  - "⊛": [t: "1⠫⠿⠪⠐⠔t"]          # 0x229B (Circled asterisk operator)
#  - "⊞": [t: "1⠫⠼⠙⠪⠐⠖t"]         # 0x229E (Squared plus)
#  - "⊟": [t: "1⠫⠼⠙⠪⠐⠤t"]         # 0x229F (Squared minus)
#  - "⊠": [t: "1⠫⠼⠙⠪⠐⠦t"]         # 0x22A0 (Squared times)
#  - "⋇": [t: "1⠌⠯⠦"]              # 0x22C7 (Division times)
#  - "⊩": [t: "⠸⠳⠿⠸⠒"]            # 0x22A9 (Forces)
 - "˙": [t: "⠈"]                     # 0x02D9 ( Dot Above)
 - "¨": [t: "⠈⠈"]                   # 0x00A8 ( Diaeresis/Double Dot Above )
 - "⃛": [t: "⠈⠈⠈"]                  # 0x20db (combining triple dot)
 - "©": [t: "⠣⠨⠉⠜"]                 # 0xa9 (Copyright)
 - "®": [t: "⠣⠨⠗⠜"]                 # 0xa9 (Registered sign)

 - "…": [t: "⠄⠄⠄"]                    # 0x2026 (Ellipsis)
 - "⋯": [t: "⠄⠄⠄"]               # 0x22EF (mid-line Ellipsis) -- seems to be same based on Example 10.1.3


# All the quotes are the same
 - "\"": [t: "⠦"]
 - "'": [t: "⠄"]
 - "“": [t: "⠦"]             # 0x201C
 - "”": [t: "⠦"]             # 0x201C
 - "‘": [t: "⠦"]
 - "’":                      # 0x2019  (2.3_3)
    - test:
        if: "self::m:mn"
        then: [t: "N⠂"]     # same as '.' block separator
        else: [t: "⠦"]
 - "«": [t: "⠦"]
 - "»": [t: "⠦"]

 - " ":                        # 0x20 (Space)
     - test:
        - if: "self::m:mn"
          then: [t: "N⠄"]
        - else_if: "@data-added='missing-content' or @data-empty-in-2D or @width > 1.1"
          then: [t: "⠰⠤⠆"]       # omission
        - else_if: "@width < 0.25"
          then: [t: ""]       # tweaking space -- ignore
          else: [t: "W"]      # space in text or wide enough space
 - " ":                        # 0xa0 (Non-breaking Space)
     - test:
        - if: "self::m:mn"
          then: [t: "N⠄"]
          else: [t: "W"]
 - ",":                        # 0x2c (Comma)
     - test:
        if: "self::m:mn"
        then: [t: "N⠂"]
        else: [t: "W⠂"]
 - ".":                        # 0x2e (Period) -- 2.3 says that if this is acting like a decimal separator, it should be brailled like "," 
     - test:
        if: "self::m:mn"
        then:
        # presunme this is likely uses "," for a decimal separator, so just do a few checks
        # 1. if there are < 3 chars after the first ".", then not a block separator
        # 2. if there is a '.' or other likely block separator after the first '.', then not decimal separator
        # likely other (complicated?) other tests that could be used
        - with:
            variables: [StringAfter: "substring-after(., '.')"]
            replace:
            - test:
                if: "string-length($StringAfter) >= 3 and string-length($StringAfter)=string-length( translate($StringAfter, $BlockSeparators, '') )"
                then: [t: "N⠄"]   # really is a block separator
                else: [t: "N⠂"]   # treat as decimal separator
        else: [t: "W⠄"]
 - ":": [t: "⠐⠂"]              # 0x003A (Colon)
 - "-": [t: "⠤"]              # 0x2d (Minus sign or hyphen)
 - "⁡": [t: ""]                # 0x2061⁡ (invisible function apply)
 - "⁢": [t: ""]                # 0x2062 (invisible times)
 - "⁣": [t: ""]                 # 0x2063⁡ (invisible separator)
 - "⁤": [t: ""]                 # 0x2064 (invisible plus)

 - "`": [t: "⠢"]                # 0x0060 (GRAVE ACCEN)
 
 - "א": [t: "⠠⠳"]                # 0x05D0 (aleph)
 - "○": [t: "⠪⠕"]                # 0x25CB (círculo)
 - "∞": [t: "⠼⠳"]                # 0x221E (infinito)
 - "⎔": [t: "⠯⠕"]                # 0x2394 (polígono)
 - "‰": [t: "⠸⠴⠴"]                # 0x2030 (tanto por mil)
 - "¬": [t: "⠠⠄"]                # 0x00AC (negación lógica)
 - "↕": [t: "⠸⠅"]                # 0x2195 (flecha arriba-abajo)
 - "↖": [t: "⠐⠡"]                # 0x2196 (flecha oblicua arriba-izquierda)
 - "↙": [t: "⠐⠌"]                # 0x2199 (flecha abajo-izquierda)
 - "↓": [t: "⠸⠄"]                # 0x2193 (flecha hacia abajo)
 - "↘": [t: "⠡⠂"]                # 0x2198 (flecha oblicua abajo-derecha)
 - "↗": [t: "⠌⠂"]                # 0x2197 (flecha arriba-derecha)
 - "↑": [t: "⠸⠁"]                # 0x2191 (flecha hacia arriba)
 - "△": [t: "⠠⠾"]               # 0x25B3 (Triangle)
 - "▭": [t: "⠯⠽"]                # 0x25AD (rectángulo)
 - "□": [t: "⠸⠽"]                # 0x25A1 (cuadrado)
 - "⟺": [t: "⠪⠒⠕"]                # 0x27FA (doble implicación «si y solo si»)
 - "⟸": [t: "⠪⠒"]                # 0x27F8 (implicación recíproca; porque)
 - "⟹": [t: "⠒⠕"]                # 0x27F9 (implicación directa; implica)
 - "⇔": [t: "⠪⠒⠕"]                # 0x21D4 (LEFT RIGHT DOUBLE ARROW)
 - "⇐": [t: "⠪⠒"]                # 0x21D0 (LEFTWARDS DOUBLE ARROW)
 - "⇒": [t: "⠒⠕"]                # 0x21D2 (RIGHTWARDS DOUBLE ARROW)
 - "⤡": [t: "⠐⠡⠂"]                # 0x2921 (flecha abajo-derecha y arriba izquierda)
 - "⤢": [t: "⠐⠌⠂"]                # 0x2922 (flecha abajo-izquierda y arriba derecha)
 - "⌋": [t: "⠠⠾"]                # 0x230B (cerrar suelo)
 - "⌊": [t: "⠷⠄"]                # 0x230A (abrir suelo)
 - "⌉": [t: "⠐⠾"]                # 0x2309 (cerrar techo)
 - "⌈": [t: "⠷⠂"]                # 0x2308 (abrir techo)
 - "⋩": [t: "⠕⠂"]                # 0x22E9 (posterior a MULTI)
 - "⋨": [t: "⠐⠪"]                # 0x22E8 (anterior a MULTI)
 - "⋟": [t: "⠕⠂⠶"]                # 0x22DF (posterior o igual a)
 - "⋞": [t: "⠐⠪⠶"]                # 0x22DE (anterior o igual a)
 - "⋝": [t: "⠕⠶"]                # 0x22DD (mayor o igual que MULTI)
 - "⋜": [t: "⠪⠶"]                # 0x22DC (menor o igual que  MULTI)
 - "⋏": [t: "⠸⠣"]                # 0x22CF (proposición falsa)
 - "⋎": [t: "⠸⠎"]                # 0x22CE (proposición verdadera)
 - "⨂": [t: "⠪⠦"]                # 0x2A02 (producto tensorial)
 - "⨁": [t: "⠪⠖"]                # 0x2A01 (suma directa)
 - "⋃":                           # 0x22C3 (unión de una familia de conjuntos)
    - t: "⠿⠜"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "⋂":                          # 0x22C2 (intersección de una familia de conjuntos)
    - t: "⠿⠱"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "⋁":                          # 0x22C1 (disyunción de una familia de proposiciones)
    - t: "⠿⠊"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "⋀":                          # 0x22C0 (conjunción de una familia de proposiciones)
    - t: "⠿⠢"
    - test:
        if: "not(IsNode(.., 'modified'))"
        then: [t: "⠱"]
 - "⊿": [t: "⠸⠦"]                # 0x22BF (triángulo rectángulo)
 - "⊩": [t: "⠸⠶"]                # 0x22A9 (tautología)
 - "⊮": [t: "⠘⠸⠶"]                # 0x22AE (no tautología)
 - "⊇": [t: "⠰⠜"]                # 0x2287 (incluye o es igual a)
 - "⊉": [t: "⠘⠰⠜"]                # 0x2289 (no incluye ni es igual a)
 - "⊆": [t: "⠣⠆"]                # 0x2286 (incluido o es igual a)
 - "⊈": [t: "⠘⠣⠆"]                # 0x2288 (no incluido ni es igual a)
 - "⊃": [t: "⠠⠜"]                # 0x2283 (Incluye; tiene como subconjunto)
 - "⊅": [t: "⠘⠠⠜"]                # 0x2285 (no incluye a)
 - "⊂": [t: "⠣⠄"]                # 0x2282 (Incluido; subconjunto)
 - "⊄": [t: "⠘⠣⠄"]                # 0x2284 (no incluido en)
 - "⋡": [t: "⠘⠕⠂⠶"]                # 0x22E1 (no es posterior ni igual a)
 - "≽": [t: "⠕⠂⠶"]                # 0x227D (sigue o igual a)
 - "⋠": [t: "⠘⠐⠪⠶"]                # 0x22E0 (no es anterior ni igual a)
 - "≼": [t: "⠐⠪⠶"]                # 0x227C (precede o igual a)
 - "≹": [t: "⠘⠕⠪"]                # 0x2279 (ni mayor ni menor que)
 - "≸": [t: "⠘⠕⠪"]                # 0x2278 (ni mayor ni menor que)
 - "≧": [t: "⠕⠶"]                # 0x2267 (mayor o igual que MULTI)
 - "≦": [t: "⠪⠶"]                # 0x2266 (menor o igual que  MULTI)
 - "≱": [t: "⠘⠕⠶"]                # 0x2271 (no es mayor ni igual que)
 - "≥": [t: "⠕⠶"]                # 0x2265 (mayor o igual que MULTI)
 - "≤": [t: "⠪⠶"]                # 0x2264 (menor o igual que  MULTI)
 - "≰": [t: "⠘⠪⠶"]                # 0x2270 (no es menor ni igual que)
 - "⩽": [t: "⠪⠶"]                # 0x227D
 - "⩾": [t: "⠕⠶"]                # 0x2A7E (greater-than-or-slanted-equals)
 # FIX: ≈" p99 has "⠐⠶"
 - "≈": [t: "⠐⠶⠄"]                # 0x2248 (casi igual a; asintóticamente igual a)
 - "≄": [t: "⠘⠐⠶⠄"]                # 0x2244 (no es asintóticamente igual a)
 - "≁": [t: "⠘⠐⠢⠄"]                # 0x2241 (tilde sube-baja tachada)
 - "∺": [t: "⠨⠒⠅"]                # 0x223A (progresión geométrica)
 - "∷": [t: "⠰⠆"]                # 0x2237 (proporción; igualdad de razones)
 - "∶": [t: "⠐⠂"]                # 0x2236 (ratio)
 - "∵": [t: "⠀⠈⠌⠀"]                # 0x2235 (puesto que)
 - "∴": [t: "⠀⠠⠡⠀"]                # 0x2234 (por lo tanto)
 - "∪": [t: "⠸⠜"]                # 0x222A (unión)
 - "⩊": [t: "⠢⠔"]                # 0x2A4A (curva geométrica)
 - "∩": [t: "⠸⠱"]                # 0x2229 (intersección)
 - "⊻": [t: "⠸⠮"]                # 0x2228 (disyunción excluyente)
 - "∨": [t: "⠸⠊"]                # 0x2228 (disyunción (o))
 - "∧": [t: "⠸⠢"]                # 0x2227 (conjunción (y))
 - "∤": [t: "⠘⠸⠀"]                # 0x2224 (no es divisor de)
 - "∝": [t: "⠸⠲"]                # 0x221D (proporcional a)
 - "∖": [t: "⠐⠄"]                # 0x2216 (diferencia de conjuntos)
 - "∌": [t: "⠘⠐⠜"]                # 0x220C (no comprende; no tiene como elemento)
 - "∋": [t: "⠐⠜"]                # 0x220B (comprende; tiene como elemento)
 - "∈": [t: "⠣⠂"]                # 0x2208 (es elemento de; pertenece a)
 - "∉": [t: "⠘⠣⠂"]                # 0x2209 (no es un elemento de; no pertenece a)
 - "∅": [t: "⠸⠚"]                # 0x2205 (conjunto vacío)
 - "∃": [t: "⠨⠢"]                # 0x2203 (cuantificador existencial: existe por lo menos un elemento)
 - "∄": [t: "⠘⠨⠢"]                # 0x2204 (no existe)
 - "∀": [t: "⠨⠄"]                # 0x2200 (cuantificador universal: para todo)
 - "ǁ": [t: "⠸⠇"]                # 0x01C1 (doble barra)
 - "÷": [t: "⠲"]                # 0x00F7 (dividido por)
 - "×":                          # 0x00D7 (multiplicar (aspas))
    # FIX: this is a hacky attempt to figure out whether this is vector multiplication or regular multiplication
    # Look for an arrow above or a bold on each side
    - test:
        if:
        - "preceding-sibling::*[1][@math-variant='bold' or self::m:mover[*[2][.='→' or .='⟶' or .='⇀']]] and"
        - "following-sibling::*[1][@math-variant='bold' or self::m:mover[*[2][.='→' or .='⟶' or .='⇀']]]"
        then: [t: "⠈⠦"]
        else: [t: "⠦"]
 - "≫": [t: "⠕⠕"]                # 0x226B (mucho mayor que)
 - "≪": [t: "⠪⠪"]                # 0x226A (mucho menor que)
 - "±": [t: "⠖⠒⠤"]                # 0x00B1 (más o menos)
 - "⊁": [t: "⠘⠕⠂"]                # 0x2281 (no es posterior a)
 - "≻": [t: "⠕⠂"]                # 0x227B (sigue a; posterior a)
 - "≯": [t: "⠘⠕"]                # 0x226F (no mayor que)
 - "=": [t: "⠶"]                # 0x003D (igual a)
 - "≠": [t: "⠘⠶"]                # 0x2260 (distinto de)
 - "⊀": [t: "⠘⠐⠪"]                # 0x2280 (no es anterior a)
 - "⪼": [t: "⠕⠕⠂"]                # 0x2ABC (muy posterior a)
 - "⪻": [t: "⠐⠪⠪"]                # 0x2ABB (muy anterior a)
 - "≺": [t: "⠐⠪"]                # 0x227A (precede a; anterior a)
 - "≮": [t: "⠘⠪"]                # 0x226E (no menor que)
 - "∓": [t: "⠤⠒⠖"]                # 0x2213 (menos o más)
 - "∕": [t: "⠠⠂"]                # 0x2215 (conjunto cociente)
 - "〛": [t: "⠾⠂"]                # 0x301B (cerrar corchetes de clase)
 - "〚": [t: "⠐⠷"]                # 0x301A (abrir corchetes de clase)
 - "₡": [t: "⠸⠉"]                # 0x20A1 (colón)
 - "€": [t: "⠸⠑"]                # 0x20AC (euro)
 - "¥": [t: "⠸⠽"]                # 0x00A5 (yen)
 - "£": [t: "⠐⠮"]                # 0x00A3 (libra)
 - "¢": [t: "⠘⠉"]                # 0x00A2 (centavo)
 - "〉": [t: "⠨⠂"]                # 0x232A (cerrar paréntesis angulares)
 - "〈": [t: "⠐⠅"]                # 0x2329 (abrir paréntesis angulares)
 - "⟨": [t: "⠐⠅"]                # 0x27E8 (Mathematical left angle bracket)
 - "⟩": [t: "⠨⠂"]                # 0x27E9 (Mathematical right angle bracket)
 - "}": [t: "⠸⠂"]                # 0x007D (cerrar llaves)
 - "|": [t: "⠸𝘄"]                # 0x007C (barra vertical)
 - "{": [t: "⠐⠇"]                # 0x007B (abrir llaves)
 - "\\": [t: "⠐⠄"]               # 0x005C (barra inversa)
 - ";": [t: "⠀⠆"]                # 0x003B (punto y coma de separación)
 - "/": [t: "⠲"]                # 0x002F (barra oblicua)
 - "%": [t: "⠸⠴"]                # 0x0025 (tanto por ciento)
 - "$":
    - test:
        if: "following-sibling::*[self::m:mn]"
        then: [t: "⠸⠏"]                # 0x0024 (peso)
        else: [t: "⠸⠎"]                # 0x0024 (dólar)
 - "#": [t: "⠼⠅"]                # 0x0023 (cardinal de un conjunto)
 - "₿": [t: "⠸⠃"]                # 0x20BF (bitcoin)
 - "⟧": [t: "⠾⠂"]                # 0x27E7 (cerrar corchete de clase)
 - "⟦": [t: "⠐⠷"]                # 0x27E6 (abrir corchete de clase)
 - "∇": [t: "⠈⠻"]                # 0x2207 (Nabla (del, inverted capital delta))

 - "≐": [t: "⠈⠶"]                # 0x2250 (aproximadamente igual a)
 - "≟": [t: "⠶⠢⠀"]                # 0x225F (cuestionado que sea igual a)
 - "≔": [t: "⠰⠶"]                # 0x2254 (igual por definición)
 - "≙": [t: "⠰⠒⠶"]                # 0x2259 (corresponde a)
 - "≡": [t: "⠶⠶"]                # 0x2261 (idéntico a; congruente con)

 - "∥": [t: "⠸⠇"]                # 0x2225 (es paralela a)
 - "∦": [t: "⠘⠸⠇"]                # 0x2226 (no paralela)
 - "≅": [t: "⠐⠢⠶"]                # 0x2245 (congruente con)
 - "⊥": [t: "⠼⠄"]                # 0x22A5 (perpendicular a/ortogonal a) [symbol used in spec]
 - "⟂": [t: "⠼⠤"]               # 0x27C2 (Perpendicular)

 - "⊙": [t: "⠰⠄"]                # 0x2299 (operador genérico (suele utilizarse para representar una operación entre elementos de un conjunto)
 - "⊚": [t: "⠰⠄"]                # 0x229A (operador genérico (suele utilizarse para representar una operación entre elementos de un conjunto)
 - "⋆": [t: "⠰⠄"]                # 0x22C6 (operador genérico (suele utilizarse para representar una operación entre elementos de un conjunto)
 - "†": [t: "⠰⠄"]                # 0x2020 (operador genérico (suele utilizarse para representar una operación entre elementos de un conjunto)
 - "∗": [t: "⠰⠄"]                # 0x2217 (operador genérico (suele utilizarse para representar una operación entre elementos de un conjunto)
