PROJET AUTOBLOG


®om's blog

Site original : ®om's blog

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Résolution, pixels, points, dpi : un casse-tête insoluble ?

lundi 2 mars 2009 à 20:33

Ce billet fait suite à une question que je me posais sur la résolution dpi des écrans (notamment la valeur erronée détectée par défaut sous Gnome), qui m’avait amené à effectuer un rapport de bug, tout en pointant du doigt certains problèmes qui surviendraient si Gnome détectait correctement le dpi. Ce bug est maintenant corrigé dans la nougelle version de Gnome, celle embarquée dans la future Ubuntu 9.04 Jaunty Jackalope. C’est l’occasion de faire le point.

Définitions

Afin de comprendre les problèmes, il est important de définir chacun des concepts (je limite ici leur définition au cas d’une image numérique affichée sur un écran).

pixel

Le pixel, abrégé px, est une unité de surface permettant de définir la base d’une image numérique. Son nom provient de la locution anglaise « picture element », qui signifie « élément d’image » ou « point élémentaire ». Il n’a a priori pas de taille « réelle ».

point

Le point (Pica), abrégé pt, est une unité de longueur. Un point pica mesure 1/72e de pouce (1 pouce = 2,54 cm), c’est-à-dire environ 0,03528 cm, soit un peu plus d’un tiers de millimètre.

résolution

La résolution permet de donner une taille réelle à un pixel. Elle est souvent exprimée en DPI (Dot Per Inch : Point Par Pouce). Attention, dans cette unité, le point signifie pixel (et non point Pica, puisque par définition, le nombre de points Pica par pouce est toujours 72, tout comme le nombre de millimètres dans un centimètre est toujours 10).

définition

La définition d’une image ou d’un écran est le nombre de pixels qui composent l’image ou que peut afficher un écran. Elle est souvent donnée sous la forme nombre de pixels horizontalement × nombre de pixels verticalement, par exemple 640×480.

Résolution dpi de l’écran

Intérêt du dpi

Combien mesure sur l’écran une image en 640×480 ?
Quelle est la hauteur en pixels d’un texte en taille 18 pt ?
Cela dépend de la taille des pixels ! Par exemple, une image en 640×480 sera 4 fois plus petite (2 fois dans chaque dimension) sur écran 7” que sur un écran 14”, si les deux écrans ont la même définition (disons 1024×768). Pareil pour la taille d’un texte.

Quelle taille en pixels doit avoir un rectangle de 13×8 cm ?
Cela dépend également de la taille des pixels : le rectangle sera « plus petit » (en pixels) sur un écran de moindre définition.

Pour déterminer la réponse à ces questions, la connaissance de la résolution, exprimée en dpi, est nécessaire : elle permet de faire la conversion entre une mesure réelle (homogène aux centimètres) et une mesure en nombre de pixels.

Valeur réelle du dpi de l’écran

En ligne de commande

Pour connaître le dpi d’un écran, il suffit de taper :

xdpyinfo | grep resolution

À la main

Il est également possible d’effectuer le calcul à la main (comme je l’ai fait sur le post et sur le bug report cités au début), en connaissant d’une part la définition de l’écran, et d’autre part :

Juste pour illustrer le premier exemple, avec ces calculs on trouve qu’un écran 7” en 1024×768 a une résolution de 183 dpi, et donc qu’une image en 640×480 affichée à l’écran mesure précisément 3,5×2,625” (8,89×6,6675 cm). De même, un écran 14” en 1024×768 a une résolution de 91,5dpi, et donc qu’une image en 640×480 affichée à l’écran mesure précisément 7×5,25” (17,78×13,335 cm).

On remarque que si l’on fait une capture d’écran de ces deux images, dont la surface de l’une 4 fois plus petite que celle l’autre, le résultat sera identique (en 640×480) : une capture d’écran (une image numérique) affichée à l’écran ne prend en compte que la taille en pixels. Ceci a une conséquence importante : une fenêtre F1 sur un écran E1 plus petite qu’une fenêtre F2 sur un écran E2 peut apparaître plus grande sur des captures d’écran.

Valeur du dpi configurée

Le système, en connaissant le dpi, est donc capable d’afficher des objets dont les mesures sont exprimées en centimètres (ou unités homogènes, comme les pouces).

Le problème, c’est qu’il n’utilise pas toujours la valeur « réelle » du dpi : il utilise souvent une valeur pré-configurée (72 ou 96), indépendante de l’écran. La résolution dpi, seule valeur permettant de faire le lien avec la mesure réelle, est choisie arbitrairement : elle ne sert donc à rien. Tout cela avait un sens physique à l’origine, où le matériel avait toujours une résolution très proche de 72 ou de 96 (voir cet article).

Pour continuer à lui donner un sens, il faut que le système utilise le dpi réel de l’écran : c’est le cas depuis KDE4 et Gnome 2.25 ; Windows et MacOS, quant-à-eux, continuent à utiliser une valeur pré-configurée dénuée de sens.

On a donc, dans les deux environnements de bureau principaux sous GNU/Linux, une valeur correcte du dpi : c’est donc gagné !

Malheureusement, ce n’est pas si simple.

Problèmes

Problèmes théoriques

Nous possèdons un écran 15,4” de définition 1024×768, et nous souhaitons le remplacer par un nouvel écran 15,4” de définition 2048×1536 (donc de résolution double dans chaque direction).

Comment doit se comporter l’affichage des polices de caractères ?

Deux solutions :

La réponse n’est pas évidente.

La première proposition qui consiste à garder la taille identique en pixels ne peut pas être absolument vraie : si nous utilisions un écran 15,4” de définition 20480×15360 (pourquoi pas?), des lettres de 18 pixels seraient totalement illisibles par l’œil humain.

La seconde semble donc plus valable, mais nous pouvons objecter que la taille des caractères que nous avions sur notre écran 15,4” en 1024×768 est plus grande que celle dont nous avons réellement besoin : nous ne pouvions pas la diminuer à cause de la faible résolution de l’écran (une lettre représentée par 4 pixels n’est qu’une tache noire). Un écran de meilleure résolution permettrait de diminuer la taille du texte afin d’obtenir une taille réelle « meilleure ».

Nous pouvons également faire remarquer, de manière peut-être moins rigoureuse, que si nous avons investi dans un écran de meilleure définition, c’est pour « avoir plus de place ».

Mon point de vue est donc celui-ci : il existe un ensemble de tailles (une taille pour les titres, une pour les sous-titres, une pour les paragraphes…), exprimées en points, idéales. Plus nous nous en éloignons, plus nous avons une impression de « trop gros » ou « trop petit ». La seconde proposition, qui consiste à garder la taille des polices identique en points est d’après moi asymptotiquement vraie : que nous possédions un écran 20480×15360 ou 40960×30720 ne doit pas changer la taille apparente des polices.

Mais pour des résolutions trop petites (72 ou 96 dpi par exemple), une contrainte intervient fortement : les caractères doivent avoir une forme reconnaissable, et être « suffisamment lisses ». Impossible alors d’afficher des caractères dont la taille réelle serait lisible, mais dont l’équivalent en pixels est trop faible. ?ous sommes alors obligé d’augmenter artificiellement la taille réelle des polices de caractères.

Remarque : Ce raisonnement n’est valable que pour le changement de la résolution sur un écran de même taille réelle. Si nous voulions définir comment doit se comporter l’affichage sur un écran de résolution identique mais de taille plus grande (donc de meilleure définition), il faudrait prendre en compte l’éloignement des yeux par rapport à l’écran (nous sommes plus proches de l’écran sur un écran 7” que sur un écran 45”). A priori, je dirais ce que qui est asymptotiquement vrai n’est pas la conservation des tailles en points, mais la conservation des angles que forment le haut et le bas d’un caractère avec l’œil (ce qui est équivalent si on conserve un écran de même taille).

Si vous avez des remarques ou d’autres explications, je suis tout à fait ouvert, car ceci n’est que mon intuition :-)

Problèmes pratiques

En pratique, c’est compliqué.

La majorité des applications utilise des tailles de polices de caractères exprimées en points, mais des parties de l’interface sont exprimées en pixels. Par exemple, la barre de menu de Gnome a par défaut une hauteur de 24px… et son texte a une taille de 10pt. Ces mesures donnent un rendu cohérent à 96 dpi, mais plus le dpi augmente, plus le texte est « gros » par rapport à la barre (les variations de dpi ne font varier que les mesures exprimées en points). Voici le rendu par défaut sur mon écran 130 dpi :

high-dpi

Pour les applications, ce problème est contournable : on peut facilement les configurer pour définir la taille des composants ou la taille des polices.

Mais le plus gros problème se pose sur les sites internet : certains sites expriment leurs mesures en pixels et d’autres en points. Plus la valeur du dpi est élevée, plus les sites exprimés en points paraîtront gros par rapport à ceux exprimées en pixels. Sans parler des nombreux sites qui mélangent les unités de mesure. Et le pire, c’est qu’il n’y a pas de « bonne manière de faire » : les tailles en pixels et les tailles en points ont chacunes leurs avantages et leurs inconvénients sur les sites internet. On ne peut donc pas espérer que ces problèmes soient gommés au fur et à mesure.

Tout ça pour ça !

La solution que j’utilise pour éviter ces différences de tailles de texte est de… faire croire à Gnome que mon écran est en 96 dpi. Comme s’il avait une diagonale de 20,85” (15,4×130/96) : il se comporte donc exactement comme un écran 20,85” à 96 dpi qui aurait été rétréci. Au lieu de définir mes polices en 7pt à 130 dpi, je leur donne la valeur 10pt à 96 dpi, et ça évite les incohérences de rendu.

Évidemment, comme je l’ai déjà signalé, cette solution n’est pas satisfaisante : si au lieu de 130 dpi j’avais un écran à 200 dpi, les caractères seraient beaucoup trop petits si je configurais Gnome à 96 dpi (pour lui faire croire que mon écran est un 32,08”).

La valeur arbitraire donnée au dpi par le système rendait la résolution absolument dénuée de sens ; maintenant que la valeur est correcte, je la force à une valeur incorrecte pour avoir un rendu cohérent. C’était bien la peine !

Et je ne vois aucune solution envisageable pour obtenir un rendu cohérent actuellement sur d’éventuels écrans 200 ou 300 dpi. Pourtant, on pourrait penser a priori que les résolutions d’écran ne vont pas arrêter de s’améliorer dans les années à venir : ces problèmes seront-ils un frein à leur développement ?

Achat d'ordinateur portable pour GNU/Linux : mode d'emploi

jeudi 26 février 2009 à 08:16

Lors de l’achat d’un ordinateur portable destiné à faire tourner une distribution GNU/Linux, deux problèmes se posent :

Nous pouvons distinguer deux types de revendeurs informatique :

Pour comparer les vendeurs d’ordinateurs, l’AFUL a mis en place un site : bons-vendeurs-ordinateurs.info.

Acheter chez un bon revendeur

Naturellement, il est préférable de se tourner vers un bon revendeur, lorsque cela est possible. Certains proposent des ordinateurs sans système d’exploitation, d’autres proposent des ordinateurs avec Ubuntu ou d’autres distributions GNU/Linux pré-installées. D’autres encore laissent le choix total (Windows XP, Windows Vista, Ubuntu, Mandriva, Fedora… ou sans OS), où le client ne paye la licence que pour les logiciels qu’il désire (et éventuellement le coût d’installation si le client désire avoir un système pré-installé).

Avantages

Acheter chez un de ces revendeurs résout les deux problèmes initiaux :

Remarque : attention à bien distinguer « ça fonctionne sous Linux » et « ça fonctionne sous Linux out-of-the-box ». Dans le premier cas, cela veut dire qu’il est possible de faire fonctionner le matériel éventuellement en y rajoutant un pilote (propriétaire) ; dans le second cas, tout fonctionne même en LiveCD, sans aucune manipulation. Insistez pour bien vous faire préciser si tout fonctionne sans installation de pilotes supplémentaires.

C’est ce que j’ai fait récemment en achetant un ordinateur Clevo sans logiciels, pour un prix dont la valeur entière tient sur 10 bits (pour les non-geeks, comprenez environ 1000€), pour une configuration plutôt sympa pour le prix (ce n’est pas pour jouer) :

Tout est reconnu, même en LiveCD (seule la carte graphique nVidia nécessite l’installation de pilotes propriétaires, en espérant qu’un jour il soit possible de faire fonctionner les effets 3D avec le pilote libre, comme on peut déjà le faire avec des AMD/ATI ou avec les cartes Intel intégrées). Il me reste encore à tester le bluetooth.

On pourrait donc conclure que tous les problèmes sont résolus, il suffit de se tourner vers ces revendeurs, et c’est gagné. Malheureusement, ce raisonnement serait un peu simpliste.

Inconvénients

Si ces revendeurs respectent la loi et permettent d’acheter le matériel sans les logiciels, ils n’en ont pas moins des défauts.

Le premier concerne la gamme disponible : ils ne possèdent pas tous les ordinateurs (loin de là) existants dans le circuit de distribution classique (en grande surface par exemple). Et la plupart des modèles spécifiques chez les bons revendeurs ont un design assez pauvre, qui ne rivalise pas avec celui des ordinateurs de grandes marques.

Ensuite, le prix d’une machine équipée d’un système d’exploitation GNU/Linux chez un bon revendeur est parfois supérieur à celui d’une machine équipée de Microsoft Windows chez un mauvais revendeur, tout simplement parce qu’un petit revendeur ne vend pas suffisamment d’ordinateurs pour pouvoir faire baisser les coûts.

Enfin, le délai est souvent un peu plus élevé, le temps d’assembler l’ordinateur si le revendeur propose le choix du matériel (en tout cas il est forcément plus long qu’en repartant avec l’ordinateur sous le bras dans une grande surface).

Pour diverses raisons (design, prix, autre…), des clients peuvent donc désirer tel modèle d’un matériel de telle marque, sans pour autant être obligés d’acquérir les licences de logiciels qu’ils ne désirent pas. Dans ce cas, certains préfèrent acheter chez un mauvais revendeur.

Acheter chez un mauvais revendeur

Là, c’est un peu plus compliqué.

Compatibilité matérielle

Pour la compatibilité matérielle avec le noyau Linux, il ne faut pas compter sur les vendeurs pour obtenir la moindre information (au mieux, la réponse sera « demandez sur un forum, nous on ne fait pas Linux! », au pire « c’est quoi Linux? »). Demander à un vendeur pour tester un LiveCD ou une LiveUSB d’une distribution GNU/Linux sur un ordinateur mènera presque systématiquement à une réponse négative.

Une solution est de rechercher le modèle exact de l’ordinateur dans un moteur de recherche, en espérant trouver quelqu’un indiquant si tout fonctionne ou non. Dans le cas contraire, il est toujours possible de demander sur un forum (ubuntu-fr par exemple) si quelqu’un fait fonctionner une distribution GNU/Linux sur l’ordinateur en question.

Sinon, il faut s’en remettre à la chance : le matériel est de plus en plus souvent reconnu out-of-the-box avec les nouvelles versions du noyau Linux.

Vente liée

Chez les mauvais revendeur, la vente de la licence d’une version (basic, home, premium, pro, ultimate…) de la génération actuelle de Windows (Vista en ce moment) est imposée (avec éventuellement d’autres logiciels) : il est impossible d’acquérir le matériel sans les logiciels. Ceci est illégal.

Si vous achetez un ordinateur pour y mettre exclusivement GNU/Linux, ou si vous possédez déjà une licence valide et utilisable de Windows, ne vous laissez pas faire !

Suite à différents procès, les constructeurs proposent maintenant des procédures de remboursement (après l’achat). Cependant, la plupart (actuellement toutes) sont abusives.

Non, Windows OEM ne coûte pas 25€ ! Non, le retour de l’ordinateur ne peut pas conditionner le remboursement des licences logicielles !

Je ne vais pas argumenter ou expliquer comment faire ici, je vous renvoie au détail de mes procédures racketiciel en cours.

En attendant l’optionnalité, n’hésitez pas à vous faire rembourser la licence des logiciels que vous n’utilisez pas, comme plusieurs l’ont déjà fait.

Conclusion

Pour résumer, la première chose à faire pour acheter un ordinateur destiné à GNU/Linux est de regarder si un modèle convient (selon les critères de chacun) chez les bons revendeurs. Si ce n’est pas le cas, n’acceptez pas passivement de payer une nouvelle fois des logiciels que vous n’utilisez pas.

Piwik : statistiques de votre site sous GPL

jeudi 19 février 2009 à 20:35

Tout le monde (ou presque) connaît l’outil Google Analytics proposé par le géant du web, qui permet d’obtenir des statistiques détaillées sur la fréquentation de son site internet.

Dans la continuité de l’objectif d’utiliser un blog 100% libre, l’utilisation de cet outil pose problème : tout comme l’hébergement de blogs sur blogspot, l’utilisateur n’est pas propriétaire de ses données.

De plus, Google Analytics, certes pratique et facile d’utilisation, amène d’autres inconvénients :

Mais heureusement, il existe une alternative libre proposant de faire exactement la même chose, en mieux sur certains points, et hébergée chez soi : j’ai nommé Piwik.

Afin de vous donner un aperçu de l’outil, j’ai activé l’accès public des statistiques de ce blog.

EDIT 29/08/2010 : j’ai finalement désactivé l’accès public (les données recueillies sur les visiteurs n’ont pas vocation à être publiées).

Attention, c’est encore une version beta, évidemment à ne pas utiliser en production dans un contexte professionnel. De plus, je ne sais pas comment se comporte Piwik face à une charge importante (mais pour un blog ça devrait aller).

Taper des caractères spéciaux sous GNU/Linux

dimanche 1 février 2009 à 10:21

Ceux qui ont déjà utilisé Windows savent peut-être qu’il est possible d’entrer des caractères en appuyant sur la touche Alt suivi du code ASCII en décimal.

Par exemple :

Note : Le code ASCII est utilisé pour les nombres inférieurs à 128. Pour les autres, je ne sais pas quel codage est utilisé, d’autant que rajouter un 0 devant le nombre change le code (Alt+169 c’est ® alors que Alt+0169 c’est ©, et ® peut s’écrire aussi Alt+0174). Si quelqu’un a une explication…

Sous Ubuntu, on a peu de raisons d’utiliser une telle méthode, car le layout France (Alternative), par défaut sous Gnome, permet d’utiliser bon nombre de caractères spéciaux, comme vous pouvez le voir sur ce schéma :

french-alternative-layout

Il y a 4 caractères possibles par touche. Voici comment écrire les caractères possibles d’une touche, en fonction de leur position sur le schéma :

Ainsi, pour écrire ® (dans ®om par exemple), il suffit de faire AltGr+Shift+C, tandis que AltGr+C donne ©. De même, AltGr+Shift+2 génère un É. Pour les espagnols, le ñ peut être obtenu en pressant AltGr+^, n, le ¿ et le ¡ respectivement grâce à AltGr+? et AltGr+!.

Note : Pour les caractères majuscules se trouvant sur les touches numériques, il est également possible d’activer la touche CapsLock : avec CapsLock activé, la touche 2 génère un É.

Il est donc très simple de faire rapidement des « guillemets » ou des flèches (, , , ), d’écrire le mot « œuf » correctement, d’insérer un vrai signe de mutiplication (2×3) ou d’utiliser de vrais points de suspension…

Par ailleurs, certaines combinaisons de touches donnent naturellement des caractères spéciaux, par exemple ^ suivi d’un chiffre le met en exposant : ¹²³⁴⁵⁶⁷⁸⁹⁰.

Il est possible également d’utiliser la composition de caractères :

Pour cela, il faut définir une touche du clavier qui permettra d’activer la composition : Système → Préférences → Clavier → Agencements → Autres options… → Position de la touche Compose.

layout-compose

Ensuite, il suffit de laisser appuyée cette touche pendant l’écriture des caractères à composer. Sur la capture, j’ai utilisé la touche Menu, qui se trouve à droite de AltGr ; quand je laisse enfoncée cette touche et que j’écris ae, le caractère æ est généré.

En dernier recours, il est aussi possible d’écrire un caractère directement à partir de son code Unicode en hexadécimal. Pour cela, il suffit de taper : Ctrl+Shift+u+code.

Par exemple, le code hexadécimal de ® est AE (voir ici). Ainsi, Ctrl+Shift+uae insère un ®.

L’outil gucharmap (Applications → Accessoires → Table des caractères) donne, en bas de la fenêtre, le code Unicode d’un caractère sélectionné. Par exemple affiche U+2030 : pour écrire ce caractère, on peut donc taper Ctrl+Shift+u2030.

Si on veut écrire que x∊ℝ, on fait : x, puis Ctrl+Shift+u220a, suivi de Ctrl+Shift+u211d.

Il ne reste plus qu’à apprendre la table Unicode, bon courage !

Nouveau blog, 100% libre

samedi 31 janvier 2009 à 13:25

Je viens de migrer mon blog hébergé sur blogger vers un blog wordpress sur un serveur perso hébergé chez moi.

Ce nouveau blog est 100% libre :

Les avantages :

Les inconvénients :

Pour les backups, si ça peut vous servir, voici mon petit script que je lance à partir de mon pc fixe :

#!/bin/sh
now=$(date +'%Y%m%d-%H%M%S')
target="/tmp/wordpress_$now.sql.gz"
echo "Connecting to database..."
ssh -t rom-eeebox "mysqldump -u root -p wordpress | gzip > $target"
scp rom-eeebox:"$target" /media/gnu/backup/rom-eeebox
rdiff-backup rom-eeebox::/home/rom/blog /media/gnu/backup/rom-eeebox/blog

Il met le contenu de la base dans une archive, la transfert sur le pc fixe, puis fait un backup incrémental de tout le répertoire /var/www/blog (tout en gardant les anciennes versions, c’est l’intérêt de rdiff-backup sur rsync).

Error happened! 0 - Call to undefined function simplexml_load_string() In: /var/www/Projet-Autoblog/autoblogs/autoblog.php:364 http://www.couturat.fr/Projet-Autoblog/autoblogs/blogrom1vcom_4af8d17d34d978843ff2ff40339aa5760e6458bc/?23 #0 /var/www/Projet-Autoblog/autoblogs/autoblog.php(932): VroumVroum_Blog->update() #1 /var/www/Projet-Autoblog/autoblogs/blogrom1vcom_4af8d17d34d978843ff2ff40339aa5760e6458bc/index.php(1): require_once('/var/www/Projet...') #2 {main}