2006年02月09日

フリーフォント利用

ダウンロード



font.txt
( 使用可能なサイトを http:// からの文字列で指定します。ディレクトリを含んでもいいです )
http://winofsql.jp
http://lightbox.sblo.jp
http://webase.winofsql.jp

font.php
<?
# ***********************************************************
# このソースコードは、shift_jis で記述されています
# ***********************************************************
header("Content-type: image/png");
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

# ***********************************************************
# この php からのフォントの相対位置( 最後に / を入れる )
# ***********************************************************
$font_path = "../../php/";

# ***********************************************************
# キャラクタセット変換用
# ***********************************************************
mb_language( "ja" );
mb_internal_encoding("EUC-JP");

# ***********************************************************
# デフォルトのキャラクタセット
# キャラクタセットは SJIS,EUC-JP,UTF-8 が一般的
# ***********************************************************
if ( $_GET['cset'] == '' ) {
	$_GET['cset'] = 'SJIS';
}

# ***********************************************************
# リファラチェック
# font.txt に 対象ドメインを列挙する
# ***********************************************************
$Site = FALSE;
$file = file( "font.txt" );
for( $i = 0; $i < count( $file ); $i++ ) {

	# 改行削除
	$target = rtrim( $file[$i] );

	# 空行は無視
	if ( $target == "" ) {
		continue;
	}

	# コメント文字
	if ( substr( $target, 0, 1 ) == ";" ) {
		continue;
	}

	$len = strlen( $target );
	$ref = substr( $_SERVER['HTTP_REFERER'], 0, $len );
	if ( $target == $ref ) {
		$Site = TRUE;
		break;
	}
}

if ( !$Site ) {
	$img_text = "can't use";
}
else {
	$_GET['cset'] = strtoupper( $_GET['cset'] );

	// PHP が行う自動的な変換を元に戻す
	if ( $_GET['cset'] == 'SJIS' ) {
		$_GET['text'] = str_replace("\\\\", "\\", $_GET['text'] );
	}
	$_GET['text'] = str_replace("\\'", "'", $_GET['text'] );
	$_GET['text'] = str_replace("\\\"", "\"", $_GET['text'] );

	// テキストは UTF-8 に変換する
	if ( $_GET['cset'] != 'UTF-8' ) {
		$_GET['text'] = mb_convert_encoding($_GET['text'],"UTF-8",$_GET['cset']);
	}
	$img_text = $_GET['text'];
}

# ***********************************************************
# デフォルトのパラメータ値
# ***********************************************************
if ( $_GET['a'] == '' ) {
	$_GET['a'] = 0;
}
if ( $_GET['s'] == '' ) {
	$_GET['s'] = 32;
}
if ( $_GET['w'] == '' ) {
	$_GET['w'] = 400;
}
if ( $_GET['h'] == '' ) {
	$_GET['h'] = 100;
}
if ( $_GET['x'] == '' ) {
	$_GET['x'] = 0;
}
if ( $_GET['y'] == '' ) {
	$_GET['y'] = 50;
}

# ***********************************************************
# 画像の大きさ
# ***********************************************************
$im = imagecreate($_GET['w'],$_GET['h']);

# ***********************************************************
# 画像の背景色
# imagecolorallocate() の最初のコールで背景色がセットされます
# ***********************************************************
$white = imagecolorallocate($im, 255,255,255);

# ***********************************************************
# 画像の文字色
# ***********************************************************
$black = imagecolorallocate($im, 0,0,0);

# ***********************************************************
# フォントを使用した文字の画像化
# ***********************************************************
imagettftext(
	$im,
	$_GET['s'],
	$_GET['a'],
	$_GET['x'],
	$_GET['y'],
	$black,
	"$font_path{$_GET['font']}.ttf",
	$img_text);

# ***********************************************************
# PNG 出力
# ***********************************************************
imagepng($im);

# ***********************************************************
# 終了処理
# ***********************************************************
imagecolordeallocate( $im, $black );
imagecolordeallocate( $im, $white );
imagedestroy($im);


# ***********************************************************
# パラメータ説明
# ***********************************************************
# font 
# ttf フォントの名前 ( 必須 )
#
# text 
# 画像化したいテキスト文字列
#
# cset 
# テキスト文字列のキャラクタセット
# mb_convert_encoding の 3つ目の引数として渡される PHP で有効な
# エンコーディング文字列
#
# w, h
# 画像の幅と高さ。省略すると 400 x 100
#
# s
# フォントサイズ。GD のバージョンに依存し、ピクセルサイズ (GD1)
# もしくはポイントサイズ (GD2) で指定する必要があります。 
#
# a
# 度で表される角度。0 度は左から右にテキストを読む方向になります。
# 0 より大きな値は、時計廻りの回転を表現します。例えば、90 とい
# う値は下から上にテキストを読む方向になります。 
#
# x
# x と y で与えられた座標は、最初の文字のベースポイント 
# (ほぼ文字の左下角) を定義します。 この仕様は、x と y 
# で最初の文字の右上角を定義する imagestring() と異なっています。 
# 例えば、左上は 0, 0 となります。
#
# y
# y 座標。これは文字の最下位置ではなく、フォントペースラインの
# 位置を指定します。 
# ***********************************************************
?>

Trackback on "フリーフォント利用"

このエントリーのトラックバックURL: 

"フリーフォント利用"へのトラックバックはまだありません。

Comment on "フリーフォント利用"

ちょいと変更しました

  •   lightbox
  • 2006年02月16日 03:39