Autor | Zpráva | ||
---|---|---|---|
Medvídek Profil |
#1 · Zasláno: 18. 2. 2012, 16:03:04
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 |
#2 · Zasláno: 18. 2. 2012, 17:18:36
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 |
#4 · Zasláno: 18. 2. 2012, 18:15:15
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 |
#5 · Zasláno: 18. 2. 2012, 23:45:57
Chro:
Ještě zkusim program na převody formátů písem, třeba se to chytí :) |
||
Medvídek Profil |
#6 · Zasláno: 19. 2. 2012, 01:15:57
Tak vyřešeno, pomohl převod otf na ttf :)
![]() |
||
Časová prodleva: 12 let
|
0