Source file: /~heha/Mikrocontroller/Displays/utft/uno-itdb28.zip/convert.awk

# Konvertiere PixelFontGenerator 6 generierte Proportionalschrift in etwas komprimierteres für den ATmega328p
# henni, 150920

BEGIN{
 FS=",";
 i=0;
 min=80;
}

/^0x/ {
 k=strtonum($1);	// Zeichenbreite
 w[i]=k;
 if (min>k) min=k;
 if (max<k) max=k;
 z=NF-2;		// Zeilenzahl
 for (j=0;j<z;j++) data[i,j]=strtonum($(j+2));
 i++;
}

END {
 print "//Zeichen=" i " Breiten min=" min " max=" max;
 pix=0;

 for (k=0; k<i; k+=2) {
  h=w[k+1];
  l=w[k];
  printf("0x%X%X,",h?h-min:0,l-min);
  pix+=h+l;
 }
 print;
 print "// Zeilenlaenge (Pixel)=" pix;
 bit=0;
 byte=0;
 
 for (n=0; n<z; n++) {
#  print "// Zeile " n;
  for (k=0; k<i; k++) {
   for (l=lshift(1,w[k]-1);l;l=rshift(l,1)) {
    byte+=byte;
    if (and(l,data[k,n])) byte++;
    bit++;
    if (!and(bit,7)) {printf("0x%02X,",byte); byte=0;}
    if (!and(bit,127)) print;
   }
  }
#  print "// bit=" bit;
 }
 if (and(bit,7)) printf("0x%02X,",lshift(byte,8-and(bit,7)));
 print;
 print "// bit=" bit " x=" pix " y=" z " x*y=" z*pix
# for (i=0; i<10; i++) {
#  for (j=0; j<10; j++) {
#   printf("%X,",data[i,j]);
#  }
#  print;
# }
}
Detected encoding: UTF-80