Suivez-nous sur X
|
|
|
0,
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,
ALL
|
|
0,
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
|
|
0,
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 propos d'Obligement
|
|
David Brunet
|
|
|
|
Test d'Arabic Console 1.693
(Article écrit par Gilles Dridi - juillet 2017)
|
|
Gilles Dridi est l'auteur d'un pilote DOS permettant d'utiliser la langue arabe sur AmigaOS 4.1.
C'est une première pour ce système. La rédaction d'Obligement lui a demandé de présenter son logiciel.
Présentation
L'archive de ma console arabe sur OS4depot
regroupe les éléments suivants :
- arabicconsole.device, un périphérique logique pour gérer la langue arabe.
- arabcon-handler, un gestionnaire DOS monté en ARABCON: sous AmigaDOS pour manipuler le texte arabe.
- ed, un éditeur-ligne issu de ed (celui d'Unix, pas d'Amiga) mais arabisé et à lancer par l'enveloppe
"eda" qui redirige les entrées/sorties et d'erreur grâce à ARABCON:.
- STeVia, un éditeur pleine-page, un clone arabisé de Vi.
Bien sûr, tout est encodé à la base suivant la table ArabSCII du fichier abasadasa.jpeg de l'archive :
Historique
J'ai été intrigué un jour de 1990 en feuilletant les manuels Amiga RKM de trouver une remarque sur
l'utilisation de polices de caractères de droite à gauche en utilisant le paramètre "kerning"
de la police pour "revenir" sur la gauche afin de simuler une police arabe ou hébraïque où
l'écriture (le "display" du script) se fait de droite à gauche (RightToLeft ou RTL en abrégé en anglais).
Au passage, Multiview pourrait afficher les fontes en RTL si l'option existait.
J'ai réalisé une police de chasse fixe, mungi-sakkal-kufi.font, pour commencer. Kufi ou Coufique en
écriture du maçon. Pour des exemples, voir les inscriptions sur les édifices d'Asie centrale ou portails
de riches maisons en fer forgé au Maghreb, etc.
Puis, je me suis attaqué à l'écriture d'un device ou "périphérique logiciel" comme j'aime à dire.
D'abord avec un algorithme naïf et pour en faire la saisie, en premier. En arabe, il existe quatre formes
d'une "même" lettre voire six pour l'alif(maqsoura)-hamzé-(kasra) : initiale, médiale, finale et isolée.
Cela a donné lieu à un premier algorithme combinatoire avec 0x18 ou le Cancel, un code-contrôle de la table
ASCII pour signifier la suppression/l'effacement (par "backspace" du côté client) de la dernière lettre
d'un mot arabe, toujours lors de la saisie.
Le problème d'un algorithme en saisie est qu'il faut réinitialiser la position des "previous",
lors d'un effacement par "backspace" ou d'une insertion. En effet, il faut au moins deux variables :
previous et previous2, pour garder la mémoire des lettres précédentes par rapport à la position
actuelle du curseur.
La commande de l'arabicconsole.device est un peu détournée et s'appelle CMD_RESET ainsi et de même
pour les voyelles brèves (signes diacritiques au-dessus des mots/lettres) CMD_UPDATE.
Ces deux commandes sont très utilisées pour mettre à jour les lettres "previous" et les
voyelles par le programme terminal de saisie avant chaque lecture d'un nouveau caractère.
Et cela devient ingérable. En effet, un véritable algorithme de l'arabe classique, langue internationale,
doit surtout traiter de l'écriture de la hamza (petit crochet seul ou au-dessus d'un support) qui est
contextuelle et réagit aussi au contexte des voyelles, brèves.
Finalement, en m'intéressant à l'algorithme en écriture après un deuxième algorithme non combinatoire,
en particulier pour les (lettres) indécises (celles qui ne sont ni liées avant ni après), en saisie,
j'ai achevé d'écrire cet algorithme en écriture qui procède par ligne ! Ligne entière jusqu'à un
retour chariot (\n) ce qui supprime le besoin de réinitialiser constamment la console par des commandes :
RESET et UPDATE, déjà vues.
"L'Arabic console device" gère les codes arabes 7/8 bits mais se base sur la table bifide, ou double,
ArabSCII pour Arabe+ASCII. Sept bits sont utilisés pour la partie basse qui est la version compactée
et huit bits pour la partie haute, ou étendue/finale des mots arabes.
La gestion de l'arabe est une surcouche de la console.device en particulier pour la saisie ce qui évite
la gestion par interruption des événements avec l'input.device.
Il n'y a pas de mystère, l'arabe est un codage un peu sophistiqué qui vient au-dessus des alphabets latins
"occidentaux" sans accents.
Pour accéder au haut de la table ASCII, ce qui fait la particularité de l'arabe et des extensions par
accents (en gros) des langues européennes, la console arabe utilise la touche "Alt" combinée avec la
touche de la lettre ou les touches "Alt"+"Shift" toujours combinées. Quelques lettres hamzées ne
suivent pas tout à fait cette règle.
Installation
Pour s'amuser il faudra :
- 1. Installer la police Fonts/mungi-sakkal-kufi.font et son répertoire associé dans le répertoire Fonts: de votre système.
- 2. Installer l'arabicconsole.device dans Devs:.
- 3. Installer les claviers (keymaps) si nécessaires, dans Devs:Keymaps.
Lancer ensuite les programmes "com0x20" ou "com" (pour le code MS-1256) sous AmigaShell.
Ce sont deux programmes de test pour voir si on a tout bien configuré, on lance "com"
pour essayer son clavier (français-arabe) ou "com0x20" si on a un clavier américain.
C'est un début car, pour aller plus loin, et utiliser l'un des deux éditeurs arabes, il faut
"monter" la console en DOS :
Mount ARACON: from mountlista
|
Puis se placer dans le bon répertoire et taper "eda" ou "STeVia" avec un "a" à la fin, qui sont des "enveloppes"
et redirigent vers ARABCON: les entrées/sorties.
L'éditeur pleine-page
Pour l'éditeur pleine-page, j'ai dû écrire moi-même la gestion du mode immédiat (raw vs cooked mode) et
j'aimerais bien savoir comment se fait la synchronisation entre les tâches de lecture et d'écriture de
la console-handler AmigaDOS (et non pas console.device de base d'AmigaOS) monté en CON: ou CONSOLE:.
Mon but est de permettre la programmation informatique en arabe sans passage dans un monde fermé uniquement
arabe, et pour cela par transcodage de l'arabe vers le latin pour le texte-source (listing) d'un
programme en langage C arabe qui sera digéré par un compilateur tel gcc et juste en "arabisant" quelques
outils, tels que les éditeurs ed et vi.
Pour utiliser l'arabe dans d'autres programmes, il faudra les écrire ou les réécrire pour qu'ils prennent
en charge le codage basique ArabSCII. Sinon, il faut qu'une application ouvre l'arabicconsole.device et
pas la console.device de base.
Comme AmigaOS ne gère pas totalement le multilinguisme des langues ou scripts qui s'écrivent de droite à gauche,
il faut ruser et rediriger les flux d'entrée/sortie des programmes arabisés vers la console arabe par
le biais du gestionnaire DOS ARABCON: au lieu de CON: ou CONSOLE: habituellement. Donc les programmes
de mon archive se terminant par "a" comme eda ou STeVia sont des enveloppes qui font "ed < arabcon: > arabcon:"
pour "eda" ou bien "stevie < arabcon: > arabcon:" pour STeVia.
Comment utiliser le clavier arabe ?
Contrairement au clavier occidental où la touche Verrouillage Majuscules permet d'obtenir des majuscules
et où l'appui sur une lettre avec la touche Shift/Décaler (parfois flèche en haut aux côtés droit et gauche
de la barre d'espace) permet aussi d'obtenir des majuscules, le système de saisie du clavier arabe ne
connaît pas de différence entre majuscules/minuscules (touche Verrouillage Majuscules enfoncé ou non).
En fait, c'est comme pour la langue arabe écrite qui ne connaît que des lettres initiales, médiales, finales et
isolées. Mais le mode de saisie des indécises est influencé par l'état de la touche Verrouillage Majuscules
et provoque un blanc avant ou bien un blanc (Verrouillage Majuscules actif) après la lettre indécise pour
justement signifier une fin de mot. Alors comment obtenir avec le clavier arabe les initiales, finales ou isolées ?
Initiales : on n'obtient, ou force, les initiales en maintenant enfoncé la touche grosse flèche en
haut/Shift en même temps que l'appui sur une lettre du clavier.
Finales : on obtient, ou force, les finales en maintenant enfoncé la touche Alt-ernate (à côté de Shift)
en même temps que l'appui sur une lettre du clavier.
Isolées : on obtient, ou force, les isolées en maintenant enfoncé les deux touches Shift et Alt (des initiales et
finales) en même temps que l'appui sur une lettre du clavier. Il faut donc trois doigts de main(s), dans ce cas.
Les lettres indécises sont alif-hamzé ou alif, da, dha, ra, za, wa, alif-maddé et wa-hamzé ; isolées.
Il n'y a pas de moyen de savoir si le mot se termine avec une lettre indécise. Pour ce faire, il faut entrer un
blanc après.
Si une indécise précède, un espace ou blanc insécable, que l'on peut aussi obtenir en appuyant simultanément sur
Alt-espace, est inséré avant l'initiale.
Conclusion
Voilà, je considère que ma console arabe est bien avancée et est très sophistiquée.
Mais si je devenais développeur (avec accès au code source de la console d'AmigaOS 4),
je pourrais mieux gérer la terminaison des gestionnaires DOS.
Tout cela a été nécessaire pour atteindre une console arabe avec voyellation ad-hoc.
Nom : Arabic Console 1.693.
Auteur : Gilles Dridi.
Genre : console pour la langue arabe.
Date : 2017.
Configuration minimale : machine sous AmigaOS 4.1, PowerPC, 1 Mo de mémoire.
Licence : gratuiciel.
Téléchargement : OS4Depot.
|
Soutenez le travail de l'auteur
|
|
|