Font aus Array[] in style?

icefire

Erfahrenes Mitglied
Hallo!
Ich versuche Fonts von einem Array in CSS einzubinden. Leider wird beispielsweise nur ' font-family: Array ; ausgegeben (die Schrift bleibt demnach unverändert). Was mache ich falsch?

Code:
<?php 
function getcode() {
   $code = "";
   $max = 6;
   $string = "ABCDEFGHKLMNPQRSTUVWXYZ234567";

   mt_srand((double)microtime()*1000000);

   for ($i=1; $i <= $max; $i++) {
       $code .= substr($string, mt_rand(0,strlen($string)-1), 1);
   }
   
   return $code;
}
$brugal = getcode();  

$png = 'intern/images/gfxcode.png';

$fonts[] = 'http://www.url.de/intern/ttf/adriatorf';
$fonts[] = 'http://www.url.de/intern/ttf/acidicf';
$fonts[] = 'http://www.url.de/intern/ttf/killatvf';

$arr = array($fonts);
foreach($arr as $select_font){  
?>
<style type="text/css">	
@font-face {font-family:<?php echo $select_font; ?>; src:local(<?php echo $select_font; ?>), url(<?php echo $select_font; ?>) format(TrueType);}

.png { background-image:url(<?php echo $png; ?>);
	   font-family: <?php echo $select_font; ?> ;
	   background-repeat:no-repeat;
	   height:20px;
	   width: 60px;
	   font-size: 25px;
	   color: #990000;	  
	 }
</style> 
<?php } ?>

Leider wird nur das Image mit dem normalen Text angezeigt. Das ganze soll als Captcha fungieren.
 
Kann es sein, dass Du mit
Code:
$arr = array($fonts);
ein 2dimensionales Array erschaffst ? Da Du mehrere $fonts[] zusammenfügst. Ich würde dann doch eher auf jenen Befehl verzichten und gleich nummerieren, also
Code:
$fonts[0]= ..
$fonts[1]=...
etc..
Somit benötigst Du auch das array() nicht mehr.

mfg chmee
 
Danke, stimmt - das ist doppelt gemoppelt.

Angezeigt wird der Pfand nun - der Font wird aber nicht ausgegeben. Ich habe von URL bis Absoluten Pfad alles ausprobiert, Klein- und Großschrift beachtet.
 
Code:
 @font-face { font-family:Garamond; src:url(garamond.eot), url(garamond.pfr); }
Wäre die Definition, Du hast aber :
Code:
@font-face {font-family:<?php echo $select_font; ?>; src:local(<?php echo $select_font; ?>), url(<?php echo $select_font; ?>) format(TrueType);}

Ich würde sagen, die font-family muss nicht angegeben werden und zusätzlich zu src:local auch src:url. In Klammern.. Im Beispiel oben ist die url-Angabe eigentlich doppelt angeführt, eine sollte -denk ich- reichen.

http://de.selfhtml.org/css/eigenschaften/schrift_datei.htm#zusatzangaben

mfg chmee
 
Ich bin von
Code:
 @font-face { font-family:Kino; src:local(Kino MT), url(kinof) format(TrueType); }
ausgegangen, weil es ja f Fonts sind - .eot und .pfr sagt mir nichts bzw. wären ja nicht die passenden Formate.
 
Die genannten Formate/Endungen sind nicht wichtig, Du definierst ja TrueType. Was mich stört, ist die Variable Deiner font-family, die ja auch eine URL ist. Vielleicht solltest Du sie zusätzlich im Array angeben..zB

Code:
$fonts[0]=array('Fontname1',URL1);
$fonts[1]=array('Fontname2',URL2);
..
@font-face {font-family:<?php echo $select_font[0]; ?>; src:local(<?php echo $select_font[1]; ?>), url(<?php echo $select_font[1]; ?>) format(TrueType);}
mfg chmee
 
Ich habe verschiedenste Möglichkeiten durchgespielt. Die Links werden auch komplett im Quelltext ausgegeben:

Code:
// Style Variante
<style type="text/css">	
@font-face {font-family: http://www.url.de/intern/ttf/adriatorf ;src:url(http://www.url.de/intern/ttf/adriatorf) format(TrueType);}

.png { background-image:url(intern/images/gfxcode.png);	   
	   background-repeat:no-repeat;
	   height:20px;
	   width: 60px;
	   font-size: 25px;
	   color: #990000;	  
	 }
</style>

Code:
<form action="atest2.php?action=testok" method="post">
<table summary="" border="0">
	<tr>
		<td class="png" style="text-align: center; font-family:http://www.url.de/intern/ttf/killatvf;"><b>LSCGB2</b></td><td><input type="hidden" name="gfx1" value="LSCGB2"><input type="text" name="gfx2" size="10" maxlength="256" value=""></td>
	</tr>
	<tr>
		<td colspan="2"><input name="submit" type="submit" value=" Eintragen "> <input type="reset" value=" Abbrechen "></td>
	</tr>
</table>
</form>

In der tabelle habe ich font-family nur mal Test weise eingetragen - aber der Font will einfach ....wird einfach nicht angezeigt.....für mich unlogisch! :-(
 
Das Problem besteht leider immer noch. verschiedene URL´s habe ich mit
PHP:
if(!file_exists($url.$f0)) { echo 'Datei '.$url.$f0.' nicht gefunden<br>'; }
überprüft - Dateien sind vorhanden. :suspekt:
 
Weil ich hier in den Codeschnippseln ständig was von "@font-face" lese: http://de.selfhtml.org/css/eigenschaften/schrift_datei.htm#font_face
Von diesen in CSS2 eingeführten Angaben wurde nur @font-face vom Internet Explorer und Netscape 4.x unterstützt. Da sie weder in den Mozilla-Nachfolgern noch in anderen aktuellen Browsern implementiert sind, gehören sie in CSS 2.1 nicht mehr zum Standard! Sie sollten also stets auch passende Alternativ-Schriftarten angeben, wenn Ihre Seiten nicht ausschließlich von Nutzern des Internet Explorer besucht werden (die die Schriftart-Installation bei hoher Sicherheitsstufe auch bestätigen).

mfg Maik
 
Ich glaube nun zu wissen, warum die Fonts nicht ausgegeben werden - es scheint ein Problem bei den Server-Einstellungen zu sein!

Nur wie kann ich das ändern bzw. was muss ich ändern?

Die Fehlermeldung:
Warning: imagettftext() [function.imagettftext]: Could not find/open font in /home/www/nc1397/html/clan/atest.php on line 73

Zeile 73:
PHP:
//array imagettftext  ( resource $im  , int $size  , int $angle  , int $x  , int $y  , int $col  , string $fontfile  , string $text  )
imagettftext($captcha, $size, 0, 210, 60+mt_rand(0,10), $col, $fonts.'/'.rand(1,6).'f',$z1);

Jetzt habe ich spaßeshalber mal gängige Fonts benutzt - und selbst die werden nicht angezeigt (identische Fehlermeldung).

Anstatt ich eine Lösung finde, wirft das ganze nur mehr Rätsel auf... :mad:
 
Zurück