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:

  1. 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

  2. Ajouter une ligne
        0x20    U+202f
     à ce fichier, et le sauvegarder.

  3. 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.