summaryrefslogtreecommitdiffstats
path: root/utils/consolefont2c.pl
blob: 919664963b5d391066d6e54d4b36e926516d8567 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl

# convert a linux console font (8x16 format) to a font definition
# suitable for processing with LibVNCServer

#if($#ARGV == 0) { exit; }

foreach $i (@ARGV) {
  $fontname = $i;
  $fontname =~ s/\.fnt$//;
  $fontname =~ s/^.*\///g;
  $fontname =~ y/+/_/;

  print STDERR "$i -> $fontname\n";

  open IN, "<$i";
  print STDERR read(IN,$x,4096);
  close(IN);

  open OUT, ">$fontname.h";
  print OUT "unsigned char ".$fontname."FontData[4096+1]={";
  for($i=0;$i<4096;$i++) {
    if(($i%16)==0) {
      print OUT "\n";
    }
    printf OUT "0x%02x,", ord(substr($x,$i));
  }

  print OUT "\n};\nint ".$fontname."FontMetaData[256*5+1]={\n";
  for($i=0;$i<256;$i++) {
    print OUT ($i*16).",8,16,0,0,";
  }

  print OUT "};\nrfbFontData ".$fontname."Font = { ".$fontname."FontData, "
    .$fontname."FontMetaData };\n";

  close OUT;
}