diff -Nur dotclear-2.1.5/plugins/metadata/class.dc.meta.php dotclear/plugins/metadata/class.dc.meta.php
--- dotclear-2.1.5/plugins/metadata/class.dc.meta.php	2009-03-02 00:51:44.000000000 +0100
+++ dotclear/plugins/metadata/class.dc.meta.php	2009-03-15 14:46:44.000000000 +0100
@@ -10,6 +10,46 @@
 #
 # -- END LICENSE BLOCK ------------------------------------
 
+function calcTagPercent($count, $min, $max) {
+	$borneInf = 5;
+	$borneSup = 50;
+	$normalisation = true;
+	$bornage = true;
+	$func = "log";
+
+	if ($max == $min) {
+		return 100;
+	}
+
+	if ($normalisation) {
+		if ($bornage) {
+			$borneInf = max($borneInf, $min);
+			$borneSup = min($borneSup, $max);
+		}
+		else {
+			$borneInf = $min;
+			$borneSup = $max;
+			$bornage = true;
+		}
+	}
+
+	if (!$bornage || $borneSup <= $borneInf) {
+		$borneSup = $max;
+		$borneInf = $min * $normalisation;
+	}
+	$count2 = max(0, min($count, $borneSup) - $borneInf);
+	$max2 = $borneSup - $borneInf;
+	if ($func == "log") {
+		return (integer) (log($count2 + 1) * 100 / log($max2 + 1));
+	}
+	else if ($func == "exp") {
+		return (integer) (exp($count2) * 100 / exp($max2));
+	}
+	else {
+		return (integer) $count2 * 100 / $max2;
+	}
+}
+
 class dcMeta
 {
 	private $core;
@@ -228,15 +268,20 @@
 		$rs = $rs->toStatic();
 		
 		$max = array();
+		$min = array();
 		while ($rs->fetch())
 		{
 			$type = $rs->meta_type;
 			if (!isset($max[$type])) {
 				$max[$type] = $rs->count;
+				$min[$type] = $rs->count;
 			} else {
 				if ($rs->count > $max[$type]) {
 					$max[$type] = $rs->count;
 				}
+				else if ($rs->count < $min[$type]) {
+					$min[$type] = $rs->count;
+				}
 			}
 		}
 		
@@ -245,7 +290,12 @@
 			$rs->set('meta_id_lower',mb_strtolower($rs->meta_id));
 			
 			$count = $rs->count;
-			$percent = ((integer) $rs->count) * 100 / $max[$rs->meta_type];
+			if ($rs->meta_type == "tag") {
+				$percent = calcTagPercent((integer) $rs->count, $min["tag"], $max["tag"]);
+			}
+			else {
+				$percent = ((integer) $rs->count) * 100 / $max[$rs->meta_type];
+			}
 			
 			$rs->set('percent',(integer) round($percent));
 			$rs->set('roundpercent',round($percent/10)*10);
