nvdaportable/NVDA/include/nvda-mathcat/assets/Rules/Braille/CMU/unicode.yaml

761 lines
42 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# 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)