diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index 265e59f8aa17d4fbef75eb02d9e5403db4d5d0f2..3eae9a086a52c122276387841de5ef063320cfe3 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -172,49 +172,8 @@ function embed_document($id_document, $les_parametres="", $afficher_titre=true)
 	}
 	else $type = 'fichier';
 
-	// Pour RealVideo
-	$real = ((!ereg("^controls", $les_parametres)) AND (ereg("^(rm|ra|ram)$", $extension)));
-	// Pour Flash
-	$flash = ((!ereg("^controls", $les_parametres)) AND (ereg("^(swf)$", $extension)));
-
-	if ($inclus == "embed" AND !$real) {
-		
-				for ($i = 0; $i < count($params); $i++) {
-					if (ereg("([^\=]*)\=([^\=]*)", $params[$i], $vals)){
-						$nom = $vals[1];
-						$valeur = $vals[2];
-						$inserer_vignette .= "<param name='$nom' value='$valeur' />";
-						$param_emb .= " $nom='$valeur'";
-						if ($nom == "controls" AND $valeur == "PlayButton") { 
-							$largeur = 40;
-							$hauteur = 25;
-						}
-						else if ($nom == "controls" AND $valeur == "PositionSlider") { 
-							$largeur = $largeur - 40;
-							$hauteur = 25;
-						}
-					}
-				}
-				
-				$vignette = "<object ";
-				if ($flash)
-					$vignette .=
-					"type='application/x-shockwave-flash' data='$fichier' ";
-
-				$vignette .= "width='$largeur' height='$hauteur'>\n";
-				$vignette .= "<param name='movie' value='$fichier' />\n";
-				$vignette .= "<param name='src' value='$fichier' />\n";
-				$vignette .= $inserer_vignette;
-
-				if (!$flash)
-					$vignette .= "<embed src='$fichier' $param_emb width='$largeur' height='$hauteur'></embed>\n";
-				$vignette .= "</object>\n";
-	}
-	else if ($inclus == "embed" AND $real) {
-			$vignette .= "<div>".embed_document ($id_document, "controls=ImageWindow|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false)."</div>";
-			$vignette .= embed_document ($id_document, "controls=PlayButton|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false);
-			$vignette .= embed_document ($id_document, "controls=PositionSlider|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres", false);
-		}
+	if ($inclus == "embed") 
+		$vignette = parametrer_embed_document($fichier, $id_document, $hauteur, $largeur, $extension, $les_parametres, $params);
 	else if ($inclus == "image") {
 		$fichier_vignette = $fichier;
 		$largeur_vignette = $largeur;
@@ -257,6 +216,59 @@ function embed_document($id_document, $les_parametres="", $afficher_titre=true)
 	return $retour;
 }
 
+function parametrer_embed_document($fichier, $id_document, $hauteur, $largeur, $extension, $les_parametres, $params)
+{
+	if ((!ereg("^controls", $les_parametres)) AND (ereg("^(rm|ra|ram)$", $extension)))
+	// Pour RealVideo (??? -- c'est toujours irreel la video. [esj])
+	 {
+		$param = "|type=audio/x-pn-realaudio-plugin|console=Console$id_document|nojava=true|$les_parametres";
+
+		return "<div>" .
+		  embed_document($id_document, "controls=ImageWindow$param", false) . 
+		  "</div>" .
+		  embed_document($id_document, "controls=PlayButton$param", false) .
+		  embed_document($id_document, "controls=PositionSlider$param", false);
+	 } else {
+		$inserer_vignette = '';
+
+		for ($i = 0; $i < count($params); $i++) {
+			if (ereg("([^\=]*)\=([^\=]*)", $params[$i], $vals)){
+				$nom = $vals[1];
+				$valeur = $vals[2];
+				$inserer_vignette .= "<param name='$nom' value='$valeur' />";
+				$param_emb .= " $nom='$valeur'";
+				if ($nom == "controls" AND $valeur == "PlayButton") { 
+					$largeur = 40;
+					$hauteur = 25;
+				} else if ($nom == "controls" AND $valeur == "PositionSlider") { 
+					$largeur = $largeur - 40;
+					$hauteur = 25;
+				}
+			}
+		}
+				
+		$params = "<param name='movie' value='$fichier' />\n"
+		  . "<param name='src' value='$fichier' />\n"
+		  . $inserer_vignette;
+
+	// Pour Flash
+		if ((!ereg("^controls", $les_parametres)) AND ($extension=='swf'))
+
+			return "<object "
+			  . "type='application/x-shockwave-flash' data='$fichier' "
+			  . "width='$largeur' height='$hauteur'>\n"
+			  . $params
+			  . "</object>\n";
+		else {
+			$emb = "<embed src='$fichier' $param_emb width='$largeur' height='$hauteur'></embed>\n";
+			if ($extension == 'svg') return $emb;
+			return "<object width='$largeur' height='$hauteur'>\n"
+			  . $params
+			  . $emb
+			  . "</object>\n";
+		}
+	}
+}
 
 //
 // Integration des images et documents
diff --git a/ecrire/inc/getdocument.php b/ecrire/inc/getdocument.php
index 2c783c2f7507db3c702bcca07c1cfca319b46f22..13f3a4112f7774081cae24399b261747a5be679e 100644
--- a/ecrire/inc/getdocument.php
+++ b/ecrire/inc/getdocument.php
@@ -413,23 +413,33 @@ function traite_svg($file)
 {
 	include_spip('inc/texte');
 	$texte = spip_file_get_contents($file);
-	$new = safehtml($texte);
 
 	// securite: virer les scripts et les references externes
+	// trop expeditif, a ameliorer
+	$new = safehtml($texte);
 	if ($new != $texte) ecrire_fichier($file, $new);
-	$width = $height = 150;
 
+	$width = $height = 150;
 	if (preg_match(',<svg[^>]+>,', $new, $s)) {
 		$s = $s[0];
+		if (preg_match(',\WviewBox\s*=\s*.\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+),i', $s, $r)){
+			$width = $r[3];
+                	$height = $r[4];
+		} else {
 	// si la taille est en centimetre, estimer le pixel a 1/64 de cm
-		if (preg_match(',\Wwidth\s*=\s*.(\d+)([^"\']*),', $s, $r)){
-			$width = $r[1];
-			if ($r[2] == 'cm') $width <<=6;
+		if (preg_match(',\Wwidth\s*=\s*.(\d+)([^"\']*),i', $s, $r)){
+			if ($r[2] != '%') {
+				$width = $r[1];
+				if ($r[2] == 'cm') $width <<=6;
+			}	
 		}
-		if (preg_match(',\Wheight\s*=\s*.(\d+)([^"\']*),', $s, $r)){
-                	$height = $r[1];
-			if ($r[2] == 'cm') $height <<=6;
+		if (preg_match(',\Wheight\s*=\s*.(\d+)([^"\']*),i', $s, $r)){
+			if ($r[2] != '%') {
+	                	$height = $r[1];
+				if ($r[2] == 'cm') $height <<=6;
+			}
 		}
+	   }
 	}
 	return array($width, $height);
 }