# Ensemble de signes représentés sur plusieurs cellules. Compatible braille 6pts et 8pts.

# Copyright (C) 2017 André-Abush CLAUSE <dev@andreabc.net>
# Copyright (C) 2017 Ludovic Oger <oger.ludovic@gmail.com>

#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.

# Références :
# - Code braille français uniformisé pour la transcription des textes imprimés (CBFU) - Deuxième édition Septembre 2008
# - Notation mathématique braille - Première édition janvier 2007
# - IPA Braille: An Updated Tactile Representation of the International Phonetic Alphabet - Edited by Robert Englebretson, Ph.D. <http://www.iceb.org/icebipa.htm>
# updated 2018-02-24

################################################################################

noback sign \x03C2 45-234 ς var. sigma
noback sign \x03D0 45-12 ϐ var. bêta
noback sign \x03D1 45-245 ϑ var. thêta
noback sign \x03D2 46-45-136 ϒ var. upsilon majuscule
noback sign \x03D5 45-124 ϕ var. phi
noback sign \x03D6 45-1234 ϖ var. pi
noback sign \x03F0 45-13 ϰ var. kappa
noback sign \x03F1 45-1235 ϱ var. rhô
noback sign \x03F2 45-234 ϲ var. sigma (lunaire)
noback sign \x03F5 45-15 ϵ var. epsilon (lunaire)

# lettres majuscules ajourées (blackboard gras)
noback sign \x2102 46-46-14 ℂ
noback sign \x210D 46-46-125 ℍ
noback sign \x2115 46-46-1345 ℕ
noback sign \x2119 46-46-1234 ℙ
noback sign \x211a 46-46-12345 ℚ
noback sign \x211d 46-46-1235 ℝ
noback sign \x2124 46-46-1356 ℤ

# lettres majuscules rondes
# lignes commentées car requiert Liblouis compilé avec le support d'UTF-32
#sign \y1D4D0 46-5-1
#sign \y1D49C 46-5-1    # A
#sign \y1D4D2 46-5-14   # C
#sign \y1D49E 46-5-14   # C
#sign \y1D49F 46-5-145  # D
#sign \y1D4D3 46-5-145  # D
#sign \y1D4A0 46-5-15   # E
#sign \y1D4D4 46-5-15   # E
#sign \y1D4AB 46-5-1234 # P
#sign \y1D4DF 46-5-1234 # P

noback math \x2032 3 ′ prime
noback math \x2033 3-3 ″ seconde
noback math \x2034 3-3-3 ‴ tierce

#signes d'opérations
# noback math \x002B 235 + plus
# unicode manquant (?) pour "grand plus"
noback math \x2295 46-235 ⊕ plus encerclé
noback math \x2A01 46-46-235 ⨁ grand plus encerclé
noback math \x222A 456-235 ∪ union
noback math \x22C3 456-456-235 ⋃ grande union
noback math \x2229 45-235 ∩ intersection
noback math \x22C2 45-45-235 ⋂ grande intersection
noback math \x2212 36 − moins
noback math \x2213 36-235 ∓ moins ou plus
noback math \x22C5 35-35 ⋅ point multiplicatif ; produit scalaire
# astérisque, étoile... 5-35 *
# unicode manquant (?) pour "grande croix de multiplication"
noback math \x2297 46-35 ⊗ produit tensoriel (croix dans un rond)
noback math \x2A02 46-46-35 ⨂ grand produit tensoriel (grande croix dans un rond)
# unicode manquant (?) pour "croix double de multiplication"
# factorielle 456-35 !
noback math \x2227 45-35 ∧ et logique; produit vectoriel...
noback math \x22C0 45-45-35 ⋀ grand et logique
noback math \x2228 45-26 ∨ ou logique
noback math \x22C1 45-45-26 ⋁ grand ou logique
noback math \x2218 456-3456 ∘ rond
# divisé par (slash) 34 /
# exposant 4


# signes d'égalité et d'inégalité
# égal 2356 =
noback math \x2260 46-2356 ≠ différent de
noback math \x2248 5-2356 ≈ environ égal à
noback math \x224A 456-5-2356 ≊ presque égal à
noback math \x2243 45-2356 ≃ asymptotiquement égal à
noback math \x2245 456-2356 ≅ approximativement égal à
noback math \x2261 2356-2356 ≡ identique à
noback math \x2262 46-2356-2356 ≢  non identique à
noback math \x2259 25-2356 ≙ correspond à
# supérieur à >
noback math \x2265 45-345 ≥ supérieur ou égal à
noback math \x2A7E 45-345 ⩾ supérieur ou égal à
# inférieur à <
noback math \x2264 45-126 ≤ inférieur ou égal à
noback math \x2A7D 45-126 ⩽ inférieur ou égal à
# plus grand ou plus petit que ><
noback math \x226B 5-5-345 ≫ très supérieur à
noback math \x226A 5-5-126 ≪ très inférieur à
noback math \x227B 46-46-345 ≻ suit
noback math \x227A 46-46-126 ≺ précède
noback math \x227D 45-45-345 ≽ suit ou est égal à
noback math \x227C 45-45-126 ≼ précède ou est égal à


# Parenthèses, accolades et crochets
# à compléter


# Notations ensemblistes
noback math \x2282 46-16 ⊂ inclus
noback math \x2284 46-34 ⊄ non inclus
noback math \x2286 456-46-16 ⊆ inclus au sens large
noback math \x2288 456-46-34 ⊈ non inclus au sens large
noback math \x2283 5-16 ⊃ contenant
noback math \x2285 5-34 ⊅ ne contenant pas
noback math \x2208 45-16 ∈ appartient à
noback math \x2209 45-34 ∉ n'appartient pas à
noback math \x220B 46-45-16 ∋ contient
noback math \x220C 46-45-34 ∌ ne contient pas
noback math \x2201 46-146 ∁ complémentaire
noback math \x2205 45-3456 ∅ ensemble vide


# flèches
noback math \x21A6 5-156 ↦ a pour image
noback math \x2197 45-156 ↗ croissant
noback math \x2191 45-12456 ↑ flèche vers le haut
noback math \x2196 45-246 ↖ flèche montante de droite à gauche
noback math \x2192 456-156 → flèche droite
noback sign \x27f6 25-25-135 ⟶ flèche droite littéraire
# sign \x2192 25-25-135 → flèche droite littéraire
noback math \x21C4 456-12456 ⇄ flèche droite au dessus d'une flèche gauche
noback math \x2190 456-246 ← flèche gauche
noback sign \x27f5 246-25-25 ⟵ flèche gauche littéraire
# sign \x2190 246-25-25 ← flèche gauche littéraire
noback math \x2198 46-156 ↘ décroissant
noback math \x2193 46-12456 ↓ flèche vers le bas
noback math \x2199 46-246 ↙ flèche descendante de droite à gauche
noback math \x2194 5-12456 ↔ flèche à gauche et droite
# sign \x2194 246-25-135 ↔ flèche à gauche et droite littéraire


# signes suscrits
#unicode approprié ? noback math \x23DC 4-25 ⏜ arc (top parenthesis)
# angle saillant : pas d'équivalence unicode pour la notation française courante (LaTex : widehat). voir \x2220
noback math \x20D7 46-25 ⃗ vecteur
# tenseur d'ordre n : séquence non reproductible: vecteur, lettre, exposant n ; braille : 46-25-4-1345 lettre
noback math \x0305 456-25 ̅  mesure algébrique, conjugué de...
#unicode approprié ? noback math \x035D 4-4-25 ͝  arc sous-tendu par un angle rentrant (COMBINING DOUBLE BREVE)
# angle rentrant : pas d'équivalence unicode pour la notation française courante
# vecteur axial : pas d'équivalence unicode pour la flèche suscrite
# tilde
# flèche circulaire de sens négatif : pas d'équivalence unicode pour la flèche suscrite
# T renversé : pas d'équivalence unicode pour le signe suscrit
# dague : pas d'équivalence unicode pour le signe suscrit
noback math \x033F 45-456-25 ̿  double barre horizontale
noback math \x20D6 456-46-25 ⃖  fèche horizontale dirigée vers la gauche

# signes souscrits
noback math \x032F 46-4-25 ̯  demi-rond convexe vers le haut, souscrit
noback math \x032D 46-45-25 ̭  accent circonflexe, souscrit
noback math \x0362 46-46-25 ͢  flèche vers la droite, souscrite
noback math \x20EF 46-46-25 ⃯ flèche vers la droite, souscrite
noback math \x0332 46-456-25 ̲  barre horizontale, souscrite
noback math \x032E 46-4-4-25 ̮  demi-rond convexe vers le bas, souscrit
noback math \x032C 46-456-45-25 ̬  accent circonflexe renversé, souscrit

# signes géométriques
noback math \x2225 456-1256 ∥ parallèle à
noback math \x22A5 45-1256 ⊥ perpendiculaire à


# Encadrements, barres verticales
noback math \x2016 45-123456 ‖ norme vecteur
#conflit possible ? noback math \x007C 123456 | valeur absolue


# Fonctions
# doublon dans le code 2007 (signes d'opérations) \x2218 456-3456 ∘ rond
noback math \x2202 5-145 ∂ différentielle partielle
# laplacien delta majuscule
noback math \x25A1 456-1456 □ d'alembertien
noback math \x2207 46-1456 ∇ nabla


# Intégrales
noback math \x222B 12346 ∫ intégrale
noback math \x222E 46-12346 ∮ intégrale de contour
noback math \x222C 12346-12346 ∬ intégrale double
noback math \x222F 46-12346-12346 ∯ intégrale de surface
noback math \x222D 12346-12346-12346 ∭ intégrale triple (absent du code 2007)
# unicode? 456-12346 somme après permutation circulaire


# Quantificateurs et signes d'implications
noback math \x2203 456-16 ∃ il existe
noback math \x2204 46-456-16 ∄ il n'existe pas
# 456-16-235 il existe un unique
noback math \x2200 456-34 ∀ pour tout
# pas d'unicode pour la négation de "pour tout"
noback math \x21d2 25-2 ⇒ implique
noback math \x21CF 46-25-2 ⇏ négation de "implique"
noback math \x21d0 5-25 ⇐ est impliqué par
noback math \x21CD 46-5-25 ⇍ négation de "est impliqué par"
noback math \x21D4 5-25-2 ⇔ équivalent à
noback math \x21CE 46-5-25-2 ⇎ négation de "équivalent à"

noback math \x2211 46-45-234 ∑ somme
noback math \x221A 345 √ racine carrée
noback math \x221B 4-146-345 ∛ racine cubique
noback math \x221E 45-14 ∞ infini
noback math \x2220 45-25 ∠ angle

# complément de fractions de base
noback math \x2153 16-34-146 ⅓ 1/3
noback math \x2154 126-34-146 ⅔ 2/3
noback math \x2155 16-34-156 ⅕ 1/5
noback math \x2156 126-34-156 ⅖ 2/5
noback math \x2157 146-34-156 ⅗ 3/5
noback math \x2158 1456-34-156 ⅘ 4/5
noback math \x2159 16-34-1246 ⅙ 1/6
noback math \x2150 16-34-12456 ⅐ 1/7
noback math \x215a 156-34-1246 ⅚ 5/6
noback math \x215b 16-34-1256 ⅛ 1/8
noback math \x215c 146-34-1256 ⅜ 3/8
noback math \x215d 156-34-1256 ⅝ 5/8
noback math \x215e 12456-34-1256 ⅞ 7/8
noback math \x2151 16-34-246 ⅑ 1/9
noback math \x2152 16-34-16-3456 ⅒ 1/10

# Alphabet phonétique international
include IPA-unicode-range.uti
# ajouts issus de la table IPA.utb :
# Conflit avec une autre table ? noback sign \x00F8 1256 # ø - slashed o - close-mid front rounded vowel
# Conflit avec une autre table ? noback sign \x00E6 146  # æ - ash - near-open front unrounded vowel
# ATTENTION ! Le symbole ci-dessous est très utilisé en phonétique (son anglais 'th' dans 'the' par exemple) mais le code braille phonétique entre en conflit avec la lettre grecque thêta.
# sign \x03B8 46-1456   # θ - theta - voiceless dental fricative (WARNING: greek letter)
