狐の王国


2002年11月06日(水) [過去の今日]

#1 mkttfdir

mkttfdirでTrueTypeフォント用のfonts.dirを作ると、X-TTで実現できるイタリックやボールドまでは作ってくれない。しょうがないのでへたくそなスクリプトで対処。

#!/usr/bin/perl
system("mkttfdir");
push @style, ("medium-r", "bold-r", "medium-i", "bold-i");
@lang = ("iso8859-1", "jisx0201.1976-0", "jisx0208.1983-0", "jisx0212.1990-0");
$size = "-0-0-0-0-c-0";

open(FDIR, "<fonts.dir");
@fdir = <FDIR>;
close(FDIR);

foreach $fdir(@fdir)
{
    if ($fdir =~ /iso8859-1$/)
    {
	@tmp = split(/ /, $fdir);
	$file = shift @tmp;
	$name = join (" ", @tmp);
	@tmp = ();
	if ($file !~ /^bw=/ )
	{
	    push (@output, $fdir);
	    #print $fdir;
	    next;
	}
	@tmp = split(/:/, $file);
	$filename = $tmp[$#tmp];
	
	$name =~ s/^-//;
	@tmp = split(/-/, $name);
	$vender = $tmp[0];
	$fontname = $tmp[1];
	    foreach $lang(@lang)
	    {
		foreach $style(@style)
		{
		    $cap = &getcap;
#		    if ($lang eq 'iso8859-1')
#		    {
#			$cap =~ s/^bw=0.5://;
#			$cap =~ s/-c-/-p-/;
#		    }
		    push @output, sprintf ("%s%s -%s-%s-%s-normal-%s-%s\n",
					   $cap, $filename,
					   $vender, $fontname, $style, 
					   $size, $lang);
		}
	    }
    }
}

$lines = $#output + 1;
open (FDIR,">fonts.dir");
print FDIR "$lines\n";
#print FDIR sort @output;
print FDIR @output;
close(FDIR);
exit;

sub getcap
{
    my @cap;
    my $cap;
    if ($lang eq 'iso8859-1' || $lang eq 'jisx0201.1976-0')
    {
	push @cap, "bw=0.5:";
    }
    if ($style =~ /^bold/)
    {
	push @cap, "ds=y:";
    }
    if ($style =~ /-i$/ )
    {
	push @cap, "ai=0.5:";
    }
    foreach $tmp(@cap)
    {
	$cap = "$cap$tmp";
    }
    $cap =~ s/::/:/g;
    $cap =~ s/^://;
    return ($cap);
}

いちおうこれでイタリックやボールドも作れた……が、mkttfdirに頼り切ってる当たりが情けない。ホントはmkttfdirをhackすべきなんだろうけどなあ。
(@713)

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ