#!/usr/bin/perl @encodings=(); for($i=0;$i<256*5;$i++) { $encodings[$i]="0"; } $out=""; $counter=0; $fontname="default"; $i=0; $searchfor=""; $nullx="0x"; while(<>) { if(/^FONT (.*)$/) { $fontname=$1; $fontname=~y/\"//d; } elsif(/^ENCODING (.*)$/) { $glyphindex=$1; $searchfor="BBX"; $dwidth=0; } elsif(/^DWIDTH (.*) (.*)/) { $dwidth=$1; } elsif(/^BBX (.*) (.*) (.*) (.*)$/) { ($width,$height,$x,$y)=($1,$2,$3,$4); @encodings[$glyphindex*5..($glyphindex*5+4)]=($counter,$width,$height,$x,$y); if($dwidth != 0) { $encodings[$glyphindex*5+1]=$dwidth; } else { $dwidth=$width; } $searchfor="BITMAP"; } elsif(/^BITMAP/) { $i=1; } elsif($i>0) { if($i>$height) { $i=0; $out.=" /* $glyphindex */\n"; } else { if(int(($dwidth+7)/8) > int(($width+7)/8)) { $_ .= "00"x(int(($dwidth+7)/8)-int(($width+7)/8)); } $_=substr($_,0,(int(($dwidth+7)/8)*2)); $counter+=(int(($dwidth+7)/8)); s/(..)/$nullx$1,/g; $out.=$_; $i++; } } } print "unsigned char " . $fontname . "FontData[$counter]={\n" . $out; print "};\nint " . $fontname . "FontMetaData[256*5]={\n"; for($i=0;$i<256*5;$i++) { print $encodings[$i] . ","; } print "};\nrfbFontData " . $fontname . "Font={" . $fontname . "FontData, " . $fontname . "FontMetaData};\n";