GDでのフォント指定

GDでttc(TrueType Collection font file)ファイルを指定すると、普通に使えるけど、どのフォントが実際使われているか分からないし、設定もできない。
ので、一度バラすことにした。

breakttc.exeを使って分解して、できたttfファイルを指定してImageTTFTextを呼べばOK。

header ("Content-type: image/jpeg");

$im = imagecreatetruecolor (455, 75);
imageantialias ($im, true);
$black = ImageColorAllocate ($im, 0, 0, 0);
$white = ImageColorAllocate ($im, 255, 255, 255);

$font1 = "./DShirkg7.ttf";

$str = "ほげ\n";
$str = mb_convert_encoding( $str, 'UTF-8', 'EUC-JP' );

ImageTTFText ($im, 13.4, 0, 10, 29, $white, $font1, $str);

ImageJpeg ($im);
ImageDestroy ($im);

こんな感じで。
ImageTTFTextのサイズって普通に小数で指定できたのね。


PHP3の$HTTP_SERVER_VARS

何か定義されてなかった…orz

getallheaders()とgetenv()で対応。

で、Apacheのモジュール版じゃないとgetallheaders()が使えないので、自前で定義。

if ( !function_exists('getallheaders') ) {
   
    function getallheaders() {
       
        global $HTTP_SERVER_VARS;
       
        if (!empty($HTTP_SERVER_VARS) && is_array($HTTP_SERVER_VARS)) {
            reset( $HTTP_SERVER_VARS );
            while( $each_HTTP_SERVER_VARS = each($HTTP_SERVER_VARS) ) {
                $name = $each_HTTP_SERVER_VARS['key'];
                $value = $each_HTTP_SERVER_VARS['value'];
                if(substr($name, 0, 5) == 'HTTP_')
                    $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
            }
        }
       
        return $headers;
       
    }
   
}


JS用IDE Aptana

すげー!感動した。

でもこういうのを見るたびに、WEB界隈の開発環境がWin32開発環境に比べて遅れているのを感じますね…

で、qooxdooはこれで対応できるんですかね。


…Feedのdescriptionも置換されるょ…

('A`)<えー
ATOMのsummaryとRSSのdescriptionまでもが%author%を置換してしまう件…
Feed周りヤバいなぁ…

今日はこれ以上時間割けないので対応は次回。

それともまさか意図した動作なんでしょうか。


PivotのATOM FeedにnicknameじゃなくてログインIDの方が表示されてしまう件。

とりあえず%author%を追いかけてみる。

pivot/modules/module_parser.phpで置換をかけてるらしい。
…共通の置換エンジンがあるわけではないのか…

1849: "%author%",
(中略)
1869: $user,
(中略)
1882: $atom_item= str_replace($from, $to, $atom_item);

一応、対応タグは以下の通り。テンプレート内で、——で区切られた2番目の部分(item)に関してのみ。

$from = array(
  "%title%",
  "%subtitle%",
  "%link%",
  "%description%",
  "%summary%",
  "%author%",
  "%guid%",
  "%date%",
  "%date_rfc%",
  "%category%",
  "%content%",
  "%tag%",
  "%lang%",
  "%vialink%",
  "%viatitle%"
);

で、辿っていくと$userは下記コードで定義されてる。

824: $entry = $db->read_entry($list_entry['code'], TRUE);
(中略)
846: add_rss($entry['code'], $entry['date'], $entry['title'], $entry['introduction'], $entry['body'], $entry['user'], $entry['category'] );

$entryの中見たらこんな感じ。

array(22) {
  ["code"]=>
  ["date"]=>
  ["introduction"]=>
  ["body"]=>
  ["category"]=>
    [0]=>
    [1]=>
  ["publish_date"]=>
  ["edit_date"]=>
  ["title"]=>
  ["subtitle"]=>
  ["user"]=>
  ["convert_lb"]=>
  ["status"]=>
  ["allow_comments"]=>
  ["keywords"]=>
  ["vialink"]=>
  ["viatitle"]=>
  ["commnames"]=>
  ["commcount"]=>
  ["commcount_str"]=>
  ["tracknames"]=>
  ["trackcount"]=>
  ["trackcount_str"]=>
}

…ニックネームないね。

$fromの定義の前に

1843: if (isset($Users[$user]['nick']) && $Users[$user]['nick'] != '') {
1844:     $user = $Users[$user]['nick'];
1845: }

こんなコード追加して解決。
あとglobalに$Users追加。

1778: global $db, $rss_items, $atom_items, $items_added, $Cfg, $Weblogs, $Current_weblog, $Allow_RSS, $Paths, $Users;

%author-nick%みたいなのを追加するというのでもいいかな。


prototype.js 1.4でのAjax同期取得

あれ?同期モードで取ろうと思ってasynchronousをfalseにしたらonCompleteが呼ばれなくなった…

var myAjax = new Ajax.Request(
    url,
    {
        method: 'post',
        parameters: pars,
        asynchronous: false,
        onComplete: showResponse
    });

要調査。

追記:解決編 Ajax/prototype.jsで同期通信


qooxdooのデザインコーディング

どうにかqooxdooのデザインコーディングを楽にできないかと考えているのですが、XHTML+XSLTでいい感じに書いたHTMLをまるっと変換できたらスゴくね?とか思いついた。

…タブとかどーすんだ。

VisualStudioでレイアウト組んだものを変換できたりすると嬉しいなぁー…誰かー…


デザインの変更

とりあえずこのblogのデザインをデフォルトのものから変更した。

あとはちょこちょこ気になる部分を修正していく方向で。 

しかし毎回、何かにインスパイア受けすぎ。

マウスオーバーでモードとか表示されるようにしたらどうだろう。


qooxdooとprototype.jsでコンフリクト?

svnに上がってる最新のqooxdooではprototype.jsとコンフリクトするらしい…

とりあえず試してみないことには何とも言えませんが。

今回は0.6.1で作るからまぁいいか。

将来的にはmochikitへの移行も考えないといけないか…


Pivotの個別エントリが飛ばない件

ん?Pivotの.htaccessがおかしいような気が。
個別エントリが404になる。

RewriteRule ^entry/([0-9]*)/.*$

↓修正

RewriteRule ^entry/([0-9]*).*$

おk。