Bonsoir,
J'imagine de plus qu'un patch faisant grosso modo comprendre aux TTY que, au niveau de l'affichage, « espace fine insécable = espace insécable » serait assez simple à implémenter et règlerait notre problème (même si c'est faux, sémantiquement)
Le hic c'est que je ne sais pas contre quel logiciel rapporter ce bug : je ne sais pas quel programme « fournit » les TTY (ou du moins gère leurs rendus de textes).
Il s'agit ici du programme /bin/setfont et des fichiers qui se trouvent dans /usr/share/kbd/unimaps/*.uni, tous deux faisant partie du paquetage 'kbd'.
Pour faire comprendre à la console du noyau Linux (attention, je fais la distinction entre la "console" qui est l'affichage "mode texte" sans X11 et le "tty" qui est un mécanisme qui s'applique également à xterm, konsole, rxvt) il suffit de trois étapes:
Sauvegarder le mapping Unicode de la console: $ setfont -v -ou unimap et voir que ce fichier contient deux lignes 0x20 U+0020 0x20 U+00a0
Ajouter une ligne 0x20 U+202f à ce fichier, et le sauvegarder.
Appliquer ce fichier: $ setfont -v -u unimap
Et maintenant, essaye $ /usr/bin/printf '\u202Fx\n' et tu vois que c'est bon.
Donc, à ta place, j'écrirais au gérand de 'kbd' [1][2] en lui proposant de traiter U+202f de la même manière que U+00a0 dans tous les fichiers *.uni.
Je note que ceci serait consistent avec la fonction 'wcwidth' de la glibc: Ce programme ============================================================= #include <locale.h> #include <wctype.h> #include <wchar.h> #include <stdio.h> int main () { setlocale (LC_ALL, "de_DE.UTF-8"); printf ("wcwidth (0x00A0) = %d\n", wcwidth (0x00A0)); printf ("wcwidth (0x202F) = %d\n", wcwidth (0x202F)); return 0; } ============================================================= affiche: wcwidth (0x00A0) = 1 wcwidth (0x202F) = 1
Bruno
[1] https://lists.altlinux.org/mailman/listinfo/kbd [2] http://git.altlinux.org/people/legion/packages/kbd.git
Merci beaucoup, c'est très intéressant ! Je remarque donc au passage que l'insécabilité n'est pas prise en compte dans les TTY.
Tes commandes fonctionnent également chez moi, je ne pensais pas que ça serait aussi simple.
Par contre j'ai comme un problème (qui n'en est peut-être pas un) : il n'y a aucun fichier .uni installé sur mon système. Je suis sous Ubuntu mais il semble qu'il en soit de même sous Debian. J'ai vérifié le paquet source de kbd et il contient effectivement les fichiers .uni, mais ceux-ci ne se retrouvent pas dans les paquets binaires.
Je n'ai pas bien compris la façon dont la chose a été packagée, mais admettons qu'une correction en amont règlera ici aussi le problème. (et comme dit précédemment, tes commandes fonctionnent)
Je n'ai pas trouvé de bug-tracker pour kbd, il faut vraiment les contacter directement sur leur liste de diffusion ? Tu as l'air de t'y connaitre mieux que moi techniquement, est-ce que ça te dérangerais de t'en occuper ? (sinon je m'en chargerai)
Merci encore !
Nicolas
ps : il ne manque plus qu'un connaisseur en Qt nous donne son avis sur les tenants du ou des bugs de rendu associés.