URL: https://linuxfr.org/users/jehan/journaux/alpha-test-de-mrxvt-avec-support-tout-encodage Title: Alpha test de mrxvt avec support tout-encodage Authors: Jehan Date: 2008年10月25日T19:20:10+02:00 Tags: Score: 12 Bonjour les gens, certains ici connaissent-ils l'émulateur de terminal **mrxvt** ( [http://materm.sourceforge.net/wiki/](http://materm.sourceforge.net/wiki/) )? Et en particulier y en a-t-il des utilisateurs dans le coin? Personnellement je suis un gros utilisateur, et comme beaucoup, j'attendais un support pour l'UTF-8. Alors finalement je l'ai fait moi-même. Pour l'instant le code est très "alpha". Cela marche plutôt bien chez moi (j'utilise même désormais un snapshot de ma version de dév comme terminal principal), mais il n'y a pas eu de test massif. Donc je ne conseille pas d'utiliser chez vous la version actuelle en dehors des tests, et surtout pas pour exécuter un programme super important qui ne doit surtout pas s'arrêter évidemment. On sait jamais, le terminal peut peut-être planter, etc. Même si je crois avoir viré les sources principales de plantage, mon amélioration a tout de même impliqué de changer entièrement la représentation interne des données, donc notamment ça a chamboulé énormément d'allocations mémoires, de boucles, etc. Et je n'ai pas fini toutes les modifs. Mes principales améliorations consistent donc en 2 points: 1/ Maintenant on peut effectivement lire et taper tous les caractères Unicode, quelque soit l'encodage local (donc notamment UTF-8, mais pas seulement). Si vous utilisez des programmes d'entrée des caractères exotiques (cad qui ne sont pas sur nos claviers) comme XIM/SCIM, allez y gaiement, ça marche super bien chez moi. 2/ Si l'option xft est activée, plusieurs polices de caractères peuvent être précisées (séparées par des virgules), l'ordre donnant la priorité préférentielle. Ainsi en donnant plusieurs polices, chaque caractère sera affiché dans la première police de la liste possédant une représentation du dit-caractère. Cela se fait, soit dans le fichier .mrxvtrc avec l'option 'Mrxvt.xftFont', soit en ligne de commande avec l'option '-xftfn'. Par exemple, si je lance avec la commande suivante: mrxvt -xft -xftfn 'Bitstream Vera Sans Mono,Sazanami Gothic,Goha-Tibeb Zemen' Tout caractère s'affichera en Bitstream Vera Sans Mono si possible, puis en Sazanami Gothic (caractères japonais) pour les caractères absents en Bitstream Mono, puis en Goha-Tibeb (police pour l'éthiopien)... J'ai mis sur cette adresse divers screenshots et fichiers de tests, encodés en UTF-8, qui montrent ce que ça doit donner dans mrxvt: [http://jehan.zemarmot.net/mrxvt_utf8/](http://jehan.zemarmot.net/mrxvt_utf8/) Si cela vous intéresse de m'aider, dans un premier temps, je veux surtout repérer tous les cas de plantages, de gros bugs, et de problèmes de compilation (j'ai testé en particulier avec toutes les options, et sans aucune, mais je n'ai pas fait tous les cas particuliers de choix d'options que _vous_ faites habituellement). Vous pouvez récupérer le code par subversion avec svn checkout [https://materm.svn.sourceforge.net/svnroot/materm/mrxvt05utf(...)](https://materm.svn.sourceforge.net/svnroot/materm/mrxvt05utf8) Si ça compile bien, n'hésitez pas à tester cette branche avec tous les programmes console que vous voulez, ceux qui font du ncurse, vim qui supporte aussi l'Unicode, ou autre, etc. En long, en large et en travers surtout! En compilant, vous constaterez pas mal de warning de "incompatible pointer type", la raison est qu'il y a encore plusieurs fonctions que je n'ai pas encore modifiées avec le nouveau type interne. Cela concerne surtout des fonctions du GUI, comme le titre des onglets, des menus, etc. Mais pour l'instant ça ne perturbe pas le fonctionnement "normal" comme un terminal (juste des bugs graphiques dans le GUI), enfin je n'ai pas encore constaté de plantage à cause de ça pour l'instant en tous cas. La fonction majeure qui ne fonctionne pas avec les encodages multi-octets, c'est le copier-coller (enfin la partie copier sur des caractères multi-octets en fait). Je vais bientôt m'en occuper. Quand tout sera fait, je nettoierai tout le code (ce que je ne fais pas pour le moment, car tout ce que j'ai commenté du vieux code peut m'être utile tant que je ne suis pas sûr qu'il n'y a pas de régression majeure), puis je proposerai une beta, normalement plus stable. Ensuite en route pour l'intégration de ma branche dans la branche principale quand tout sera nickel! :-) Donc je suis tout œil de tout retour que vous pourriez me faire. Merci.