2007-04-05 23:05:16 +02:00
// ymage8BitFontGenerator.java
// ---------------------------
// by Marc Nause
// created: 05.04.2007
//
// based on:
// ymageFontGenerator.java
// ---------------------------
2008-07-20 19:14:51 +02:00
// (C) by Michael Peter Christen; mc@yacy.net
2007-04-05 23:05:16 +02:00
// first published on http://www.anomic.de
// Frankfurt, Germany, 2005
// created: 31.10.2005
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package de.anomic.ymage ;
public class ymage8BitFontGenerator {
//A valid ymage font has 96 characters:
/ *
0x20 : ! " #$%&'
0x28 : ( ) * + , - . /
0x30 : 01234567
0x38 : 89 : ; < = > ?
0x40 : @ABCDEFG
0x48 : HIJKLMNO
0x50 : PQRSTUVW
0x58 : XYZ [ \ ] ^ _
0x60 : ` abcdefg
0x68 : hijklmno
0x70 : pqrstuvw
0x78 : xyz { | } ~
* /
//Each character has the same height of m lines with n pixels each.
//While m does not need to equal n both have to stay consistend through
//the whole font.
public static final String [ ] [ ] font =
{
{ " ........ " , //0x20
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ........ " ,
" ...X.... " ,
" ........ " } ,
{ " ..X.X... " ,
" ..X.X... " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " ..X.X... " ,
" ..X.X... " ,
" XXXXXXX. " ,
" ..X.X... " ,
" XXXXXXX. " ,
" ..X.X... " ,
" ..X.X... " ,
" ........ " } ,
{ " ...XX... " ,
" .XXXXXX. " ,
" X..XX... " ,
" .XXXXX.. " ,
" ...XX.X. " ,
" XXXXXX.. " ,
" ...X.... " ,
" ........ " } ,
{ " .XX...X. " ,
" .XX..X.. " ,
" ....X... " ,
" ...X.... " ,
" ..X..... " ,
" .X...XX. " ,
" X....XX. " ,
" ........ " } ,
{ " .XX..... " ,
" X..X.... " ,
" .XX..... " ,
" ..X...X. " ,
" X..X.X.. " ,
" X...X... " ,
" .XXX..X. " ,
" ........ " } ,
{ " ...X.... " ,
" ...X.... " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " ....X... " ,
" ...X.... " ,
" ..X..... " ,
" ..X..... " ,
" ..X..... " ,
" ...X.... " ,
" ....X... " ,
" ........ " } ,
{ " ...X.... " ,
" ....X... " ,
" .....X.. " ,
" .....X.. " ,
" .....X.. " ,
" ....X... " ,
" ...X.... " ,
" ........ " } ,
{ " ...X.... " ,
" .X.X.X.. " ,
" ..XXX... " ,
" XXXXXXX. " ,
" ..XXX... " ,
" .X..X.X. " ,
" ...X.... " ,
" ........ " } ,
{ " ........ " ,
" ...X.... " ,
" ...X.... " ,
" .XXXXX.. " ,
" ...X.... " ,
" ...X.... " ,
" ........ " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ...XX... " ,
" ...XX... " ,
" ....X... " } ,
{ " ........ " ,
" ........ " ,
" ........ " ,
" .XXXXX.. " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ...XX... " ,
" ...XX... " ,
" ........ " } ,
{ " ......X. " ,
" .....X.. " ,
" ....X... " ,
" ...X.... " ,
" ..X..... " ,
" .X...... " ,
" X....... " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X....XX. " ,
" X...X.X. " ,
" X..X..X. " ,
" X.X...X. " ,
" XX....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ...X.... " ,
" ..XX.... " ,
" .X.X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ..XXX... " ,
" .X...X.. " ,
" .....X.. " ,
" ....X... " ,
" ...X.... " ,
" ..X..... " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ..XXX... " ,
" .X...X.. " ,
" .....X.. " ,
" ...XX... " ,
" .....X.. " ,
" .X...X.. " ,
" ..XXX... " ,
" ........ " } ,
{ " .....X.. " ,
" ....XX.. " ,
" ...X.X.. " ,
" ..X..X.. " ,
" .XXXXXX. " ,
" .....X.. " ,
" .....X.. " ,
" ........ " } ,
{ " .XXXXXX. " ,
" .X...... " ,
" .X...... " ,
" .XXXXX.. " ,
" ......X. " ,
" ......X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ..XXX... " ,
" .X...X.. " ,
" .X...... " ,
" .XXXX... " ,
" .X...X.. " ,
" .X...X.. " ,
" ..XXX... " ,
" ........ " } ,
{ " .XXXXX.. " ,
" .....X.. " ,
" .....X.. " ,
" ....X... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ........ " } ,
{ " ..XXX... " ,
" .X...X.. " ,
" .X...X.. " ,
" ..XXX... " ,
" .X...X.. " ,
" .X...X.. " ,
" ..XXX... " ,
" ........ " } ,
{ " ..XXX... " ,
" .X...X.. " ,
" .X...X.. " ,
" ..XXXX.. " ,
" .....X.. " ,
" .X...X.. " ,
" ..XXX... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ...XX... " ,
" ...XX... " ,
" ........ " ,
" ...XX... " ,
" ...XX... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ...XX... " ,
" ...XX... " ,
" ........ " ,
" ...XX... " ,
" ...XX... " ,
" ....X... " } ,
{ " .....XX. " ,
" ...XX... " ,
" .XX..... " ,
" X....... " ,
" .XX..... " ,
" ...XX... " ,
" .....XX. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ..XXXX.. " ,
" ........ " ,
" ..XXXX.. " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " XX...... " ,
" ..XX.... " ,
" ....XX.. " ,
" ......X. " ,
" ....XX.. " ,
" ..XX.... " ,
" XX...... " ,
" ........ " , } ,
{ " ..XXX... " ,
" .X...X.. " ,
" .....X.. " ,
" ....X... " ,
" ...X.... " ,
" ........ " ,
" ...X.... " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X.....X. " ,
" X...XXX. " ,
" X..X..X. " ,
" X...XXX. " ,
" X....... " ,
" .XXXXXX. " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXXX. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" ........ " } ,
{ " XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXX.. " ,
" ........ " } ,
{ " ..XXXX.. " ,
" .X....X. " ,
" X....... " ,
" X....... " ,
" X....... " ,
" .X....X. " ,
" ..XXXX.. " ,
" ........ " } ,
{ " XXXXX... " ,
" X....X.. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X....X.. " ,
" XXXXX... " ,
" ........ " } ,
{ " XXXXXXX. " ,
" X....... " ,
" X....... " ,
" XXXXXX.. " ,
" X....... " ,
" X....... " ,
" XXXXXXX. " ,
" ........ " } ,
{ " XXXXXXX. " ,
" X....... " ,
" X....... " ,
" XXXXXX.. " ,
" X....... " ,
" X....... " ,
" X....... " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X....... " ,
" X....... " ,
" X..XXXX. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXXX. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" ........ " } ,
{ " ..XXX... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ..XXX... " ,
" ........ " } ,
{ " ...XXX.. " ,
" ....X... " ,
" ....X... " ,
" ....X... " ,
" ....X... " ,
" X...X... " ,
" .XXX.... " ,
" ........ " } ,
{ " X....XX. " ,
" X...XX.. " ,
" X..XX... " ,
" XXX..... " ,
" X..XX... " ,
" X...XX.. " ,
" X....XX. " ,
" ........ " } ,
{ " X....... " ,
" X....... " ,
" X....... " ,
" X....... " ,
" X....... " ,
" X....... " ,
" XXXXXXX. " ,
" ........ " } ,
{ " X.....X. " ,
" XX...XX. " ,
" X.X.X.X. " ,
" X..X..X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" ........ " } ,
{ " X.....X. " ,
" XX....X. " ,
" X.X...X. " ,
" X..X..X. " ,
" X...X.X. " ,
" X....XX. " ,
" X.....X. " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXX.. " ,
" X....... " ,
" X....... " ,
" X....... " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X...X.X. " ,
" .XXXXX.. " ,
" ......X. " } ,
{ " XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXX.. " ,
" X...X... " ,
" X....X.. " ,
" X.....X. " ,
" ........ " } ,
{ " .XXXXX.. " ,
" X.....X. " ,
" X....... " ,
" .XXXXX.. " ,
" ......X. " ,
" X.....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " XXXXXXX. " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ........ " } ,
{ " X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" .X...X.. " ,
" ..X.X... " ,
" ...X.... " ,
" ........ " } ,
{ " X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X..X..X. " ,
" X.X.X.X. " ,
" .X...X.. " ,
" ........ " } ,
{ " X.....X. " ,
" .X...X.. " ,
" ..X.X... " ,
" ...X.... " ,
" ..X.X... " ,
" .X...X.. " ,
" X.....X. " ,
" ........ " } ,
{ " X.....X. " ,
" .X...X.. " ,
" ..X.X... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ........ " } ,
{ " XXXXXXX. " ,
" .....X.. " ,
" ....X... " ,
" ...X.... " ,
" ..X..... " ,
" .X...... " ,
" XXXXXXX. " ,
" ........ " } ,
{ " ..XXXX.. " ,
" ..X..... " ,
" ..X..... " ,
" ..X..... " ,
" ..X..... " ,
" ..X..... " ,
" ..XXXX.. " ,
" ........ " } ,
{ " X....... " ,
" .X...... " ,
" ..X..... " ,
" ...X.... " ,
" ....X... " ,
" .....X.. " ,
" ......X. " ,
" ........ " } ,
{ " ..XXXX.. " ,
" .....X.. " ,
" .....X.. " ,
" .....X.. " ,
" .....X.. " ,
" .....X.. " ,
" ..XXXX.. " ,
" ........ " } ,
{ " ...X.... " ,
" ..X.X... " ,
" .X...X.. " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" XXXXXXX. " ,
" ........ " } ,
{ " ...X.... " ,
" ....X... " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXX... " ,
" .....X.. " ,
" .XXXXX.. " ,
" X....X.. " ,
" .XXXX.X. " ,
" ........ " } ,
{ " X....... " ,
" X....... " ,
" X....... " ,
" XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXX.. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXXXX. " ,
" X....... " ,
" X....... " ,
" X....... " ,
" .XXXXXX. " ,
" ........ " } ,
{ " ......X. " ,
" ......X. " ,
" ......X. " ,
" .XXXXXX. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXXX. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXXX.. " ,
" X.....X. " ,
" XXXXXXX. " ,
" X....... " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ...XX... " ,
" ..X..... " ,
" ..X..... " ,
" .XXX.... " ,
" ..X..... " ,
" ..X..... " ,
" ..X..... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXXX. " ,
" ......X. " ,
" .XXXXX.. " } ,
{ " X....... " ,
" X....... " ,
" X....... " ,
" XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" ........ " } ,
{ " ........ " ,
" ...X.... " ,
" ........ " ,
" ..XX.... " ,
" ...X.... " ,
" ...X.... " ,
" ..XXX... " ,
" ........ " } ,
{ " ........ " ,
" ....X... " ,
" ........ " ,
" ...XX... " ,
" ....X... " ,
" ....X... " ,
" ....X... " ,
" ..XX.... " } ,
{ " X....... " ,
" X....... " ,
" X....XX. " ,
" X..XX... " ,
" XXX..... " ,
" X..XX... " ,
" X....XX. " ,
" ........ " } ,
{ " ..XX.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ..XXX... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XX.XX.. " ,
" X..X..X. " ,
" X..X..X. " ,
" X..X..X. " ,
" X..X..X. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" XXXXXX.. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXX.. " ,
" X....... " ,
" X....... " } ,
{ " ........ " ,
" ........ " ,
" .XXXXXX. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXXX. " ,
" ......X. " ,
" ......X. " } ,
{ " ........ " ,
" ........ " ,
" X.XXXX.. " ,
" XX....X. " ,
" X....... " ,
" X....... " ,
" X....... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" .XXXXX.. " ,
" X....... " ,
" .XXXXX.. " ,
" ......X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" .XXXXX.. " ,
" ...X.... " ,
" ...X.... " ,
" ....XX.. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXX.. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" X.....X. " ,
" X.....X. " ,
" .X...X.. " ,
" ..X.X... " ,
" ...X.... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" X.....X. " ,
" X.....X. " ,
" X..X..X. " ,
" X.X.X.X. " ,
" .X...X.. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" X.....X. " ,
" .XX.XX.. " ,
" ...X.... " ,
" .XX.XX.. " ,
" X.....X. " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" .XXXXXX. " ,
" ......X. " ,
" .XXXXX.. " } ,
{ " ........ " ,
" ........ " ,
" XXXXXXX. " ,
" ....XX.. " ,
" ...X.... " ,
" .XX..... " ,
" XXXXXXX. " ,
" ........ " } ,
{ " ...XX... " ,
" ..X..... " ,
" ..X..... " ,
" XX...... " ,
" ..X..... " ,
" ..X..... " ,
" ...XX... " ,
" ........ " } ,
{ " ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " ,
" ...X.... " } ,
{ " ...XX... " ,
" .....X.. " ,
" .....X.. " ,
" ......XX " ,
" .....X.. " ,
" .....X.. " ,
" ...XX... " ,
" ........ " } ,
{ " ........ " ,
" ........ " ,
" ..X..... " ,
" .X.XX.X. " ,
" .....X.. " ,
" ........ " ,
" ........ " ,
" ........ " } ,
{ " XXXXXXX. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" X.....X. " ,
" XXXXXXX. " ,
" ........ " } ,
} ;
2008-08-02 14:12:04 +02:00
public static void main ( final String [ ] args ) {
2007-04-05 23:05:16 +02:00
String [ ] letter ;
int b ;
int v ;
int c = 0 ;
int n = - 1 ;
int m = - 1 ;
String s ;
//check if font has correct number of letters
if ( font . length ! = 96 ) {
System . out . println ( " \ nWARNING: Font has " + font . length + " letters, should have 96 letters. " ) ;
System . out . println ( " Font will be invalid! \ n " ) ;
}
for ( int i = 0 ; i < font . length ; i + + ) {
letter = font [ i ] ;
b = 0 ;
//check if all letters have same numbers of lines
if ( ( letter . length ! = n ) & & ( n = = - 1 ) ) {
n = letter . length ;
}
else if ( letter . length ! = n ) {
System . out . println ( " \ n \ nWARNING: Letter number " + i + " has different number of lines ( " + letter . length + " ) than predecessors ( " + n + " ). " ) ;
System . out . println ( " Font will be invalid! \ n " ) ;
}
for ( int j = 0 ; j < letter . length ; j + + ) {
b = b < < letter [ j ] . length ( ) ;
v = 16 ;
//check if all letters have same number of lines
if ( ( letter [ j ] . length ( ) ! = m ) & & ( m = = - 1 ) ) {
m = letter [ j ] . length ( ) ;
}
else if ( letter [ j ] . length ( ) ! = m ) {
System . out . println ( " \ n \ nWARNING: Letter number " + i + " has a different number of bits ( " + letter [ j ] . length ( ) + " ) than predecessors ( " + m + " ) in line " + j + " . " ) ;
System . out . println ( " Font will be invalid! \ n " ) ;
}
for ( int col = 0 ; col < letter [ j ] . length ( ) ; col + + ) {
if ( letter [ j ] . charAt ( col ) = = 'X' ) b + = v ;
v = v > > 1 ;
}
}
s = Long . toHexString ( b ) . toUpperCase ( ) ;
while ( s . length ( ) < ( letter . length * m / 8 ) ) s = " 0 " + s ;
System . out . print ( " 0x " + s + " , " ) ;
c + + ;
if ( c > = 8 ) {
System . out . println ( ) ;
c = 0 ;
}
}
}
}