Home | History | Annotate | Download | only in utils
      1 #!/usr/bin/perl
      2 
      3 @encodings=();
      4 for($i=0;$i<256*5;$i++) {
      5   $encodings[$i]="0";
      6 }
      7 
      8 $out="";
      9 $counter=0;
     10 $fontname="default";
     11 
     12 $i=0;
     13 $searchfor="";
     14 $nullx="0x";
     15 
     16 while(<>) {
     17   if(/^FONT (.*)$/) {
     18     $fontname=$1;
     19     $fontname=~y/\"//d;
     20   } elsif(/^ENCODING (.*)$/) {
     21     $glyphindex=$1;
     22     $searchfor="BBX";
     23     $dwidth=0;
     24   } elsif(/^DWIDTH (.*) (.*)/) {
     25     $dwidth=$1;
     26   } elsif(/^BBX (.*) (.*) (.*) (.*)$/) {
     27     ($width,$height,$x,$y)=($1,$2,$3,$4);
     28     @encodings[$glyphindex*5..($glyphindex*5+4)]=($counter,$width,$height,$x,$y);
     29     if($dwidth != 0) {
     30       $encodings[$glyphindex*5+1]=$dwidth;
     31     } else {
     32       $dwidth=$width;
     33     }
     34     $searchfor="BITMAP";
     35   } elsif(/^BITMAP/) {
     36     $i=1;
     37   } elsif($i>0) {
     38     if($i>$height) {
     39       $i=0;
     40       $out.=" /* $glyphindex */\n";
     41     } else {
     42       if(int(($dwidth+7)/8) > int(($width+7)/8)) {
     43 	$_ .= "00"x(int(($dwidth+7)/8)-int(($width+7)/8));
     44       }
     45       $_=substr($_,0,(int(($dwidth+7)/8)*2));
     46       $counter+=(int(($dwidth+7)/8));
     47       s/(..)/$nullx$1,/g;
     48       $out.=$_;
     49       $i++;
     50     }
     51   }
     52 }
     53 
     54 print "unsigned char " . $fontname . "FontData[$counter]={\n" . $out;
     55 print "};\nint " . $fontname . "FontMetaData[256*5]={\n";
     56 for($i=0;$i<256*5;$i++) {
     57   print $encodings[$i] . ",";
     58 }
     59 print "};\nrfbFontData " . $fontname . "Font={" .
     60   $fontname . "FontData, " . $fontname . "FontMetaData};\n";
     61