Autor Zpráva
Medvídek
Profil
Ahoj, celý dopoledne se tu trápím s funkcí imagettftext a dikaritikou. Pročetl sem snad všechny články, vyzkoušel snad všechny postupy, ale zatím bez výsledku.
Kódování souboru mam v UTF-8.

<?php 
//PREVODNI TABULKA ZNAKU
//$co=array("Č","č","Ď","ď","Ě","ě","Ň","ň","Ř","ř","Š","š","Ť","ť","Ů","ů","Ž","ž");
//$za=array("Č","č","Ď","ď","Ě","ě","Ň","ň","Ř","ř","Š","š","Ť","ť","Ů","ů","Ž","ž");

$text="Export událostí ščřžýáíé";
//$text=str_ireplace($co,$za,$text);

$obrazek = ImageCreateFromJpeg("../img/EX-nadpis.jpg");
$txt = ImageColorAllocate($obrazek, 0, 0, 0);
$box = Imagettfbbox(30, 0, "font/helvetica.otf", $text);
$x=$box[0] + (imagesx($obrazek)/2) - ($box[4]/2) - 10;
$y=$box[1] + (imagesy($obrazek)/2) - ($box[5]/2) - 15;
ImageFttext($obrazek, 30, 0, $x, $y, $txt, "font/helvetica.otf", $text);
Header("Content-type: image/jpg");
imagejpeg($obrazek, NULL, 100);
imagedestroy($obrazek);
?>  

Ale výsledek vždy takovýto:

Nevíte, kde by mohla být chyba?
Chro
Profil
Píšeš o imagettftext (font TrueType), ale v kódu máš imagefttext (font FreeType 2). Nehádá se použitá funkce s použitým fontem? Mně normálně funguje imagettftext s fontem např. arial.ttf v UTF-8.
Medvídek
Profil
Chro:
To je asi pozůstatek, zkušel sem oboje.
Teď sem si skopčil arial ze systému na ftp a výsledek je stejný při použítí imagettftext:
Takže tam opravdu někde bude chyba v kódování :(

Ale pokud si dám mb_detect_encoding($text); tak mi to psrávně vypíše UTF-8 :(


EDIT:
Tak pokud provedu toto:
$text="Export událostí ščřžýáíé";

$tabulkaUTF = array("Č"=>268, "č"=>269, "Ď"=>270, "ď"=>271, "Ě"=>282, "ě"=>283, "Ň"=>327, "ň"=>328, "Ř"=>344, "ř"=>345, "Š"=>352, "š"=>353, "Ť"=>356, "ť"=>357, "Ů"=>366, "ů"=>367, "Ž"=>381, "ž"=>382);
$vystup="";
for($i=0;$i<mb_strlen($text,"UTF-8");$i++){
 $pismeno = mb_substr($text,$i,1,"UTF-8");
 if($tabulkaUTF[$pismeno]){$vystup.= "&#".$tabulkaUTF[$pismeno].";";} 
 else{$vystup.= "&#".ord(iconv("UTF-8","ISO-8859-2",$pismeno)).";";}
}

Tak mi to Arial veme.

Pokud dám font helvetica.otf, tak vznikne toto:

Přitom ten font české znaky na 100% umí, používám i přes cufon.
Problem asi bude v tom, že mam tento font k dispozici jen jako Open Type :(
Chro
Profil
Medvídek:
Jsem vygoogloval, že znaky v OpenType (*.otf) mohou být popsány pomocí
zvyklostí TrueType nebo PostScript, takže je třeba možné, že imageTTFtext má se znaky popsány v PostScript třeba problém. Nevím, hlouběji jsem to nezkoumal. Zkus si tady vybrat nějaký font, který zobrazuje i ážů (skoro stejným skriptem jako tvým) a použít. Pokud bude fungovat, problém je v tvém fontu.
Medvídek
Profil
Chro:
Ještě zkusim program na převody formátů písem, třeba se to chytí :)
Medvídek
Profil
Tak vyřešeno, pomohl převod otf na ttf :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: