// FontGenerator8Pixel.java // --------------------------- // by Marc Nause // created: 05.04.2007 // // $LastChangedDate$ // $LastChangedRevision$ // $LastChangedBy$ // // based on: // FontGenerator5Pixle.java // --------------------------- // (C) by Michael Peter Christen; mc@yacy.net // 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 net.yacy.visualization; public class FontGenerator8Pixel { //A valid 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.", "........"}, }; public static void main(final String[] args) { 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; } } } }