UTF-8 sous NetBSD
#.
Par rz0. Publié le 08.06 2009 à 01:31.
Aucun commentaire.
Depuis quelques temps, voilà que j’ai migré de Gentoo à NetBSD. Pour rappel, le passage à X.org 1.5 et xf86-video-intel 2.6 avait tout cassé. Quitte à tout downgrader, j’ai pensé que c’était le bon moment de (re)tenter l’aventure NetBSD !
La transition ne fut pas sans problèmes et l’une des contrariétés
majeures était l’impossibilité de passer totalement en locale UTF-8
(pour LC_CTYPE du moins). Dans n’importe quelle locale UTF-8, une
partie des programmes graphiques refusait de fonctionner
correctement : problèmes de polices ou de méthode de saisie (input
method), xterm avait du mal et certains gestionnaires de fenêtrage
(twm, ratpoison) refusaient carrément de se lancer !
Hier, en fin d’après-midi, j’ai enfin résolu les divers problèmes (qui provenaient en réalité d’une unique source), et réussi à passer tout mon système graphique en UTF-8 !
Le problème provenait de la configuration par défaut de la locale
UTF-8 (car il n’y en a en réalité qu’une seule, en_US.UTF-8, pour
presque toutes les langues, les autres n’étant que des synonymes) au
sein du framework XI18N, visiblement emprunté à Sun, et
qui en a gardé les traces… les modules utilisés par en_US.UTF-8
étaient des modules spécifiques à Xsun, non fournis par X.org. Un
simple changement du fichier
/usr/X11R7/lib/X11/locale/en_US.UTF-8/XI18N_OBJS (recopie de
quelques lignes d’autres locales) a suffit. Le support de l’Unicode
n’est sans doute pas génial avec les modules par défaut, sans doute
moins adaptés que ceux de Sun, mais ceux-ci ont le mérite d’exister !
Pour mémoire, voici le patch que j’ai appliqué :
--- a/XI18N_OBJS 2008-07-30 04:43:01.000000000 +0200
+++ b/XI18N_OBJS 2009-06-06 19:09:30.000000000 +0200
@@ -3,6 +3,8 @@
# XI18N objects table for euro locales
#
XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
-XIM common/xiiimp _SwitchOpenIM # XIM_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+#XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+#XIM common/xiiimp _SwitchOpenIM # XIM_open
+#XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
Avec tout ça, tout marche parfaitement (du moins aussi bien que sous
ma Gentoo) et j’ai maintenant dans mon .profile :
export LC_CTYPE=fr_FR.UTF-8
Un effet secondaire sympathique de toutes ces manipulations est le
retour dans Emacs des touches mortes dans toute leur splendeur ;
j’avais dû recourir à iso-transl, lorsque je tournais en locale
C. Mais à présent, le serveur X gère à nouveau les compositions comme
un grand, et Emacs est content, sans avoir besoin d’aucune extension !