<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>®om&#039;s blog &#187; dpi</title>
	<atom:link href="http://blog.rom1v.com/tag/dpi/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rom1v.com</link>
	<description>Un blog libre</description>
	<lastBuildDate>Thu, 02 Feb 2012 20:03:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Résolution, pixels, points, dpi : un casse-tête insoluble ?</title>
		<link>http://blog.rom1v.com/2009/03/resolution-pixels-points-dpi-un-casse-tete-insoluble/</link>
		<comments>http://blog.rom1v.com/2009/03/resolution-pixels-points-dpi-un-casse-tete-insoluble/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 20:33:28 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[dpi]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=376</guid>
		<description><![CDATA[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&#8217;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é [...]]]></description>
			<content:encoded><![CDATA[<p>Ce billet fait suite à <a href="http://forum.ubuntu-fr.org/viewtopic.php?pid=2457643">une question</a> que je me posais sur la résolution <em>dpi</em> des écrans (notamment la valeur erronée détectée par défaut sous <strong>Gnome</strong>), qui m&#8217;avait amené à effectuer un <a href="https://bugs.launchpad.net/ubuntu/+bug/253072">rapport de bug</a>, tout en pointant du doigt certains problèmes qui surviendraient si <strong>Gnome</strong> détectait correctement le <em>dpi</em>. Ce bug est maintenant corrigé dans la nougelle version de <strong>Gnome</strong>, celle embarquée dans la future <strong>Ubuntu 9.04 Jaunty Jackalope</strong>. C&#8217;est l&#8217;occasion de faire le point.</p>
<h2>Définitions</h2>
<p>Afin de comprendre les problèmes, il est important de définir chacun des concepts (je limite ici leur définition au cas d&#8217;une image numérique affichée sur un écran).</p>
<h3>pixel</h3>
<p>Le <a href="http://fr.wikipedia.org/wiki/Pixel">pixel</a>, abrégé <strong>px</strong>, est une unité de surface permettant de définir la base d&#8217;une image numérique. Son nom provient de la locution anglaise « picture element », qui signifie « élément d&#8217;image » ou « point élémentaire ». Il n&#8217;a <em>a priori</em> pas de taille « réelle ».</p>
<h3>point</h3>
<p>Le <a href="http://fr.wikipedia.org/wiki/Point_(unit%C3%A9)#Le_point_DTP_.28Pica.29">point (Pica)</a>, abrégé <strong>pt</strong>, est une unité de longueur. Un point pica mesure 1/72e de pouce (1 pouce = 2,54 cm), c&#8217;est-à-dire environ 0,03528 cm, soit un peu plus d&#8217;un tiers de millimètre.</p>
<h3>résolution</h3>
<p>La <a href="http://fr.wikipedia.org/wiki/R%C3%A9solution_num%C3%A9rique">résolution</a> permet de donner une taille réelle à un pixel. Elle est souvent exprimée en <strong>DPI</strong> (Dot Per Inch : Point Par Pouce). Attention, dans cette unité, le <strong>point</strong> signifie <strong>pixel</strong> (et non <strong>point Pica</strong>, puisque par définition, le nombre de <strong>points Pica</strong> par pouce est toujours 72, tout comme le nombre de millimètres dans un centimètre est toujours 10).</p>
<h3>définition</h3>
<p>La <a href="http://fr.wikipedia.org/wiki/D%C3%A9finition_d%27%C3%A9cran">définition</a> d&#8217;une image ou d&#8217;un écran est le nombre de pixels qui composent l&#8217;image ou que peut afficher un écran. Elle est souvent donnée sous la forme <em>nombre de pixels horizontalement × nombre de pixels verticalement</em>, par exemple <em>640×480</em>.</p>
<h2>Résolution dpi de l&#8217;écran</h2>
<h3>Intérêt du dpi</h3>
<p><em>Combien mesure sur l&#8217;écran une image en 640×480 ?</em><br />
<em>Quelle est la hauteur en pixels d&#8217;un texte en taille 18 pt ?</em><br />
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&#8243; que sur un écran 14&#8243;, si les deux écrans ont la même définition (disons 1024×768). Pareil pour la taille d&#8217;un texte.</p>
<p><em>Quelle taille en pixels doit avoir un rectangle de 13×8 cm ?</em><br />
Cela dépend également de la taille des pixels : le rectangle sera « plus petit » (en pixels) sur un écran de moindre définition.</p>
<p>Pour déterminer la réponse à ces questions, la connaissance de la <strong>résolution</strong>, exprimée en <strong>dpi</strong>, 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.</p>
<h3>Valeur réelle du dpi de l&#8217;écran</h3>
<h4>En ligne de commande</h4>
<p>Pour connaître le <em>dpi</em> d&#8217;un écran, il suffit de taper :</p>
<pre>xdpyinfo | grep resolution</pre>
<h4>À la main</h4>
<p>Il est également possible d&#8217;effectuer le calcul à la main (comme je l&#8217;ai fait sur le post et sur le bug report cités au début), en connaissant d&#8217;une part la définition de l&#8217;écran, et d&#8217;autre part :</p>
<ul>
<li>soit la diagnole d&#8217;écran (15,4&#8243; par exemple) ainsi que le ratio (16/10) ;</li>
<li>soit la hauteur et la largeur (en centimètres par exemple).</li>
</ul>
<p>Juste pour illustrer le premier exemple, avec ces calculs on trouve qu&#8217;un écran 7&#8243; en 1024×768 a une résolution de 183 dpi, et donc qu&#8217;une image en 640×480 affichée à l&#8217;écran mesure précisément 3,5×2,625&#8243; (8,89×6,6675 cm). De même, un écran 14&#8243; en 1024×768 a une résolution de 91,5dpi, et donc qu&#8217;une image en 640×480 affichée à l&#8217;écran mesure précisément 7×5,25&#8243; (17,78×13,335 cm).</p>
<p>On remarque que si l&#8217;on fait une capture d&#8217;écran de ces deux images, dont la surface de l&#8217;une 4 fois plus petite que celle l&#8217;autre, le résultat sera identique (en 640×480) : une capture d&#8217;écran (une image numérique) affichée à l&#8217;écran ne prend en compte que la taille en pixels. Ceci a une conséquence importante : une fenêtre <em>F1</em> sur un écran <em>E1</em> plus petite qu&#8217;une fenêtre <em>F2</em> sur un écran <em>E2</em> peut apparaître plus grande sur des captures d&#8217;écran.</p>
<h3>Valeur du dpi configurée</h3>
<p>Le système, en connaissant le <em>dpi</em>, est donc capable d&#8217;afficher des objets dont les mesures sont exprimées en centimètres (ou unités homogènes, comme les pouces).</p>
<p>Le problème, c&#8217;est qu&#8217;il n&#8217;utilise pas toujours la valeur « réelle » du <em>dpi</em> : il utilise souvent une valeur pré-configurée (72 ou 96), indépendante de l&#8217;écran. La résolution <em>dpi</em>, 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&#8217;origine, où le matériel avait toujours une résolution très proche de 72 ou de 96 (voir <a href="http://terroirs.denfrance.free.fr/p/webmaster/affichage_mac_pc.html">cet article</a>).</p>
<p>Pour continuer à lui donner un sens, il faut que le système utilise le <strong>dpi réel</strong> de l&#8217;écran : c&#8217;est le cas depuis <strong>KDE4</strong> et <strong>Gnome 2.25</strong> ; <strong>Windows</strong> et <strong>MacOS</strong>, quant-à-eux, continuent à utiliser une valeur pré-configurée dénuée de sens.</p>
<p>On a donc, dans les deux environnements de bureau principaux sous <strong>GNU/Linux</strong>, une valeur correcte du <em>dpi</em> : c&#8217;est donc gagné !</p>
<p>Malheureusement, ce n&#8217;est pas si simple.</p>
<h2>Problèmes</h2>
<h3>Problèmes théoriques</h3>
<p>Nous possèdons un écran 15,4&#8243; de définition 1024×768, et nous souhaitons le remplacer par un nouvel écran 15,4&#8243; de définition 2048×1536 (donc de résolution double).</p>
<p><strong>Comment doit se comporter l&#8217;affichage des polices de caractères ?</strong><br />
Deux solutions :</p>
<ul>
<li>la taille des polices reste identique en pixels (<code>px</code>) : la taille apparente est donc deux fois plus petite (dans chaque dimension) ;</li>
<li>la taille des polices reste identique en points (<code>pt</code>) : la taille apparente ne change pas, mais chaque caractère est composée de plus de pixels.</li>
</ul>
<p>La réponse n&#8217;est pas évidente.</p>
<p>La première proposition qui consiste à garder la taille identique en <strong>pixels</strong> ne peut pas être absolument vraie : si nous utilisions un écran 15,4&#8243; de définition 20480×15360 (pourquoi pas?), des lettres de 18 pixels seraient totalement illisibles par l&#8217;œil humain.</p>
<p>La seconde semble donc plus valable, mais nous pouvons objecter que la taille des caractères que nous avions sur notre écran 15,4&#8243; 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&#8217;écran (une lettre représentée par 4 pixels n&#8217;est qu&#8217;une tache noire). Un écran de meilleure résolution permettrait de diminuer la taille du texte afin d&#8217;obtenir une taille réelle « meilleure ».</p>
<p>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&#8217;est pour « avoir plus de place ».</p>
<p>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 <strong>points</strong>, 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 <strong>points</strong> est d&#8217;après moi <em>asymptotiquement</em> vraie : que nous possédions un écran 20480×15360 ou 40960×30720 ne doit pas changer la taille apparente des polices.<br />
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&#8217;afficher des caractères dont la taille réelle serait lisible, mais dont l&#8217;équivalent en pixels est trop faible : nous sommes alors obligé d&#8217;augmenter artificiellement la taille réelle des polices de caractères.</p>
<p><em>Remarque: Ce raisonnement n&#8217;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&#8217;affichage sur un écran de résolution identique mais de taille plus grande (donc de meilleure définition), il faudrait prendre en compte l&#8217;éloignement des yeux par rapport à l&#8217;écran (nous sommes plus proches de l&#8217;écran sur un écran 7&#8243; que sur un écran 45&#8243;). A priori, je dirais ce que qui est asymptotiquement vrai n&#8217;est pas la conservation des tailles en <strong>points</strong>, mais la conservation des <strong>angles</strong> que forment le haut et le bas d&#8217;un caractère avec l&#8217;œil (ce qui est équivalent si on conserve un écran de même taille).</em></p>
<p><em>Si vous avez des remarques ou d&#8217;autres explications, je suis tout à fait ouvert <img src='http://blog.rom1v.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </em></p>
<h3>Problèmes pratiques</h3>
<p>En pratique, c&#8217;est compliqué.</p>
<p>La majorité des applications utilise des tailles de polices de caractères exprimées en <strong>points</strong>, mais des parties de l&#8217;interface sont exprimées en <strong>pixels</strong>. Par exemple, la barre de menu de <strong>Gnome</strong> a par défaut une hauteur de <strong>24px</strong>… et son texte a une taille de <strong>10pt</strong>. Ces mesures donnent un rendu cohérent à <strong>96 dpi</strong>, mais plus le <em>dpi</em> augmente, plus le texte est « gros » par rapport à la barre (les variations de <em>dpi</em> ne font varier que les mesures exprimées en <strong>points</strong>). Voici le rendu par défaut sur mon écran 130 dpi :<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2009/03/high-dpi.png"><img src="http://blog.rom1v.com/wp-content/uploads/2009/03/high-dpi-300x134.png" alt="high-dpi" title="high-dpi" width="300" height="134" class="aligncenter size-medium wp-image-394" /></a></p>
<p>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.</p>
<p>Mais le plus gros problème se pose sur les sites internet : certains sites expriment leurs mesures en <strong>pixels</strong> et d&#8217;autres en <strong>points</strong>. Plus la valeur du <em>dpi</em> est élevée, plus les sites exprimés en <strong>points</strong> paraîtront gros par rapport à ceux exprimées en <strong>pixels</strong>. Sans parler des nombreux sites qui mélangent les unités de mesure. Et le pire, c&#8217;est qu&#8217;il n&#8217;y a pas de « bonne manière de faire » : les tailles en <strong>pixels</strong> et les tailles en <strong>points</strong> 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.</p>
<h2>Tout ça pour ça !</h2>
<p>La solution que j&#8217;utilise pour éviter ces différences de tailles de texte est de… faire croire à <strong>Gnome</strong> que mon écran est en <strong>96 dpi</strong>. Comme s&#8217;il avait une diagonale de 20,85&#8243; (15,4×130/96) : il se comporte donc exactement comme un écran 20,85&#8243; à <strong>96 dpi</strong> qui aurait été rétréci. Au lieu de définir mes polices en <strong>7pt</strong> à <strong>130 dpi</strong>, je leur donne la valeur <strong>10pt</strong> à <strong>96 dpi</strong>, et ça évite les incohérences de rendu.</p>
<p>Évidemment, comme je l&#8217;ai déjà signalé, cette solution n&#8217;est pas satisfaisante : si au lieu de <strong>130 dpi</strong> j&#8217;avais un écran à <strong>200 dpi</strong>, les caractères seraient beaucoup trop petits si je configurais <strong>Gnome</strong> à <strong>96 dpi</strong> (pour lui faire croire que mon écran est un 32,08&#8243;).</p>
<p>La valeur arbitraire donnée au <em>dpi</em> 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&#8217;était bien la peine !</p>
<p>Et je ne vois aucune solution envisageable pour obtenir un rendu cohérent actuellement sur d&#8217;éventuels écrans 200 ou 300 dpi. Pourtant, on pourrait penser <em>a priori</em> que les résolutions d&#8217;écran ne vont pas arrêter de s&#8217;améliorer dans les années à venir : ces problèmes seront-ils un frein à leur développement?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2009/03/resolution-pixels-points-dpi-un-casse-tete-insoluble/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

