Obligement - L'Amiga au maximum

Samedi 21 octobre 2017 - 01:25  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


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 device 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 :

Arabic Console

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.

Arabic Console

Arabic Console

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.

Arabic Console

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.
Licence : freeware.
Téléchargement : OS4Depot.


[Retour en haut] / [Retour aux articles]