[請益] 指定字型輸出文字圖片

看板PHP作者 (道可道非常道)時間13年前 (2010/08/21 16:35), 編輯推噓2(209)
留言11則, 3人參與, 最新討論串1/1
我想製作一個動態輸出文字的程式, 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)

08/21 17:38, , 1F
參數那邊要看你是 GD1 還是 GD2
08/21 17:38, 1F

08/21 17:40, , 3F
至於對齊那邊,我是先用 imagettfbbox 然後去減出寬/高
08/21 17:40, 3F

08/21 18:06, , 4F
字型那邊我不清楚原因,因為我自己試驗都是正常的
08/21 18:06, 4F

08/21 18:06, , 5F
不過可能要提醒一下使用上授權的問題喔 @.@
08/21 18:06, 5F

08/21 19:36, , 6F
𠀜 的問題可能是 fcz.ttf 中只有做到 U+FFFF 的字型
08/21 19:36, 6F

08/21 20:26, , 7F
@SKL: 感謝,imagettfbbox確實有解決對齊的問題
08/21 20:26, 7F

08/21 20:27, , 8F
GD1/2是看phpinfo中GD version 1.xx或2.xx嗎?
08/21 20:27, 8F

08/21 20:28, , 9F
授權字體是因為在測試,實際會改用免費的XD
08/21 20:28, 9F

08/21 20:29, , 10F
@LPH66:該字體有涵蓋ext-B(安裝後可在word用),而且一
08/21 20:29, 10F

08/21 20:29, , 11F
般沒字體是會產生空白或方框,不會變成&#x...;
08/21 20:29, 11F
文章代碼(AID): #1CRu_4Iy (PHP)