ขอแจมมั่งครับ
การทำให้ JP Graph แสดงอักษรภาษาไทยได้
เริ่มต้นต้องไป define font ให้แก่ jpgraph.php
ประมาณบรรทัดที่ 70 จะเป็นการ define TTF นะครับ เราต้อง DEFINEfont
ที่ต้องการใช้ไว้ ผมจะยกตัวอย่างเป็นTAHOMA นะครับ
| DEFINE("FF_TAHOMA",n); |
เลข n คือเลขลำดับน่ะครับ เราก็ใส่เลขต่อจาก font ที่
define ไว้ก่อนหน้า (เช่น DEFINE("FF_MICROSS",44);
DEFINE("FF_TAHOMA",45);) นะครับ
ต่อไปจะเป็นการ define path ของ font น่ะครับ อาจจะ configure ใน jpg-configure หรือใน jpgraph.php
ประมาณบรรทัดที่ 52 ของ jpgraph.php จะมีเงื่อนไขว่า !define(TTF_DIR) น่ะครับ ในเงื่อนไขนั้นจะมีให้ตั้ง path ของ font TTF ของ OS window กับ OS อื่นๆ ใส่ path ของ font เข้าไปเลยครบ เช่น เก็บ font TAHOMA.TTF ไว้ใน /home/www/htdocs/eutility/jpgraph/fonts/
ก็จะกำหนด TTF_DIR เป็น DEFINE('TTF_DIR','/home/www/htdocs/eutility/jpgraph/fonts/');
ตัวอย่างจากโค้ด
| if (!defined('TTF_DIR')) { if (strstr( PHP_OS, 'WIN') ) { $sroot = getenv('SystemRoot'); if( empty($sroot) ) { die('JpGraph Error: No path specified for TTF_DIR and path can not be determined automatically. Please specify TTF_DIR manually (in jpg-config.inc).'); }else { DEFINE('TTF_DIR', $sroot.'/fonts/'); } }else { DEFINE('TTF_DIR','/home/www/htdocs/eutility/jpgraph/fonts/'); } } |
ต่อมาจะแก้ไข class TTF โดยแก้ไข array font_files
โดยเพิ่ม element เข้าไป ตัวอย่างจะเป็นการเพิ่ม element ของ font TAHOMA
| FF_TAHOMA => array(FS_NORMAL=>'TAHOMA.TTF', FS_BOLD=>'tahomabd.TTF', FS_ITALIC=>'', FS_BOLDITALIC=>'' ) |
สุดท้ายต้องทำการเปลี่ยนโค้ดอักษรภาษาไทยสักหน่อย กระผมเองก็ไม่ทราบเหตุผลน่ะครับ(หุๆ ก็แค่ใช้เป็นน่ะครับ ไม่ได้เก่งอะไรมากนัก)
เอาฟังก์ชัน php อันนี้ไว้ใช้
| function UniThai($s) { $x = ""; $len = strlen($s); for ( $i = 0; $i < $len; $i++) { if ( ord($s[$i]) > 128 ) $x .= "&#".(ord($s[$i]) - 160 + 3584).";"; else $x .= $s[$i]; } return $x; } |
ตัวอย่างการเรียกใช้
| $graphName="เปรียบเทียบการใช้ประปา"; $graphName=UniThai($graphName); $graph->title->Set($graphName); $graph->title->SetFont(FF_TAHOMA,FS_NORMAL); |