看板 PHP 關於我們 聯絡資訊
我想製作一個動態輸出文字的程式, php 檔案編碼為 UTF-8,程式碼如下: header('Content-type: image/png'); $im = imagecreatetruecolor(500, 50); $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 499, 49, $white); $text = '測試內容Test...'; // 要輸出的文字 $font = 'source/font/fcz.ttf'; // 使用的字體 imagettftext($im, 30, 0, 0, 40, $black, $font, $text); imagepng($im); imagedestroy($im); 一般的造字檔(.tte),只要餵給它正確的編碼或16進位entity都能正確輸出, 但4位元的字如 unicode ext-b 似乎沒辦法這樣輸出 會變成直接印出像 𠀜 。 如果要轉 ext-b 字元,有什麼方法可以解決? 真相:造字檔輸出測試「XO」(XO是前二字直接貼進去): http://tinyurl.com/35lxwy8 ext-B「𠀜X」(X是前一個字直接貼進去): http://tinyurl.com/35dgvzg 還有.. imagettftext 的參數規則是什麼? 第二個參數填 30 可是實際文字寬高佔的像素並不是 30, 而產生的文字並沒有對齊基線或其他東西,像這裡的 0, 40 都是試誤而得, 而且不同字體結果好像又不太一樣...做成一字一圖也常會歪掉, 有明確的規則可以遵循嗎? 另一個小問題是, 使用華康行書體、文鼎正圓體之類的都能正常輸出,微軟正黑體也成功了, 但用新細明體和標楷體,輸出的字卻變得很奇怪。這是什麼原因? 還好目前其他字體還沒遇到類似情形... 真相:華康行書體:http://tinyurl.com/32fsdpg    新細明體:http://tinyurl.com/37x27ns    標楷體:http://tinyurl.com/3yu2cj3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.14.179.157 ※ 編輯: danny0838 來自: 119.14.179.157 (08/21 16:39)
SKL:參數那邊要看你是 GD1 還是 GD2 08/21 17:38
SKL:至於對齊那邊,我是先用 imagettfbbox 然後去減出寬/高 08/21 17:40
SKL:字型那邊我不清楚原因,因為我自己試驗都是正常的 08/21 18:06
SKL:不過可能要提醒一下使用上授權的問題喔 @.@ 08/21 18:06
LPH66:𠀜 的問題可能是 fcz.ttf 中只有做到 U+FFFF 的字型 08/21 19:36
danny0838:@SKL: 感謝,imagettfbbox確實有解決對齊的問題 08/21 20:26
danny0838:GD1/2是看phpinfo中GD version 1.xx或2.xx嗎? 08/21 20:27
danny0838:授權字體是因為在測試,實際會改用免費的XD 08/21 20:28
danny0838:@LPH66:該字體有涵蓋ext-B(安裝後可在word用),而且一 08/21 20:29
danny0838:般沒字體是會產生空白或方框,不會變成&#x...; 08/21 20:29