summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/credits.c8
-rw-r--r--apps/main.c17
-rw-r--r--apps/main_menu.c5
-rw-r--r--apps/menu.c39
-rw-r--r--apps/recorder/bounce.c1
-rw-r--r--apps/recorder/icons.c23
-rw-r--r--apps/recorder/wormlet.c4
-rw-r--r--apps/settings.c107
-rw-r--r--apps/tree.c36
-rw-r--r--apps/wps-display.c20
-rw-r--r--apps/wps.c46
-rw-r--r--docs/AJF29
-rw-r--r--firmware/X5x8.bdf1967
-rw-r--r--firmware/X5x8.c2853
-rw-r--r--firmware/ajf.c100
-rw-r--r--firmware/ajf.h52
-rw-r--r--firmware/chartables.c248
-rw-r--r--firmware/debug.h3
-rw-r--r--firmware/drivers/fat.c29
-rw-r--r--firmware/drivers/lcd.c315
-rw-r--r--firmware/drivers/lcd.h17
-rw-r--r--firmware/font.c228
-rw-r--r--firmware/font.h126
-rw-r--r--firmware/loadfont.c202
-rw-r--r--firmware/panic.c5
-rw-r--r--firmware/unicode.c101
-rw-r--r--firmware/unicode.h36
-rw-r--r--uisimulator/x11/Makefile30
-rw-r--r--uisimulator/x11/uibasic.c1
29 files changed, 5528 insertions, 1120 deletions
diff --git a/apps/credits.c b/apps/credits.c
index f3bbd5992b..f8b060f31c 100644
--- a/apps/credits.c
+++ b/apps/credits.c
@@ -19,6 +19,7 @@
19 19
20#include "credits.h" 20#include "credits.h"
21#include "lcd.h" 21#include "lcd.h"
22#include "font.h"
22#include "kernel.h" 23#include "kernel.h"
23#include "button.h" 24#include "button.h"
24#include "sprintf.h" 25#include "sprintf.h"
@@ -64,6 +65,7 @@ char* credits[] = {
64 "Chad Lockwood", 65 "Chad Lockwood",
65 "John Pybus", 66 "John Pybus",
66 "Randy Wood", 67 "Randy Wood",
68 "Gregory Haerr",
67}; 69};
68 70
69#ifdef HAVE_LCD_BITMAP 71#ifdef HAVE_LCD_BITMAP
@@ -111,15 +113,15 @@ void roll_credits(void)
111 int height; 113 int height;
112 int width; 114 int width;
113 115
114 lcd_getfontsize(0, &width, &height); 116 lcd_getfontsize(FONT_UI, &width, &height);
115 117
116 while(1) { 118 while(1) {
117 lcd_clear_display(); 119 lcd_clear_display();
118 for ( i=0; i <= (64-y)/height; i++ ) 120 for ( i=0; i <= (64-y)/height; i++ )
119 lcd_putsxy(0, i*height+y, line+i<numnames?credits[line+i]:"", 0); 121 lcd_putsxy(0, i*height+y, line+i<numnames?credits[line+i]:"", FONT_UI);
120 snprintf(buffer, sizeof(buffer), " [Credits] %2d/%2d ", 122 snprintf(buffer, sizeof(buffer), " [Credits] %2d/%2d ",
121 line+1, numnames); 123 line+1, numnames);
122 lcd_putsxy(0, 0, buffer, 0); 124 lcd_putsxy(0, 0, buffer, FONT_UI);
123 lcd_update(); 125 lcd_update();
124 126
125 if (button_get_w_tmo(HZ/20)) 127 if (button_get_w_tmo(HZ/20))
diff --git a/apps/main.c b/apps/main.c
index 22fd8f6051..4b8c9e1e7e 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -45,9 +45,7 @@
45#include "debug_menu.h" 45#include "debug_menu.h"
46#include "version.h" 46#include "version.h"
47#include "sprintf.h" 47#include "sprintf.h"
48#ifdef LOADABLE_FONTS 48#include "font.h"
49#include "unicode.h"
50#endif
51 49
52 50
53char appsversion[]=APPSVERSION; 51char appsversion[]=APPSVERSION;
@@ -65,10 +63,8 @@ void app_main(void)
65void init(void) 63void init(void)
66{ 64{
67 init_threads(); 65 init_threads();
68#ifdef LOADABLE_FONTS
69 unicode_init();
70#endif
71 lcd_init(); 66 lcd_init();
67 font_init();
72 show_logo(); 68 show_logo();
73 settings_reset(); 69 settings_reset();
74 settings_load(); 70 settings_load();
@@ -93,6 +89,10 @@ void init(void)
93 89
94 lcd_init(); 90 lcd_init();
95 91
92 // FIXME should call font_init before this,
93 // because may use loadable font in show_logo().
94 // I didn't call font_init here, since
95 // disk system isn't up yet.
96 show_logo(); 96 show_logo();
97 97
98#ifdef DEBUG 98#ifdef DEBUG
@@ -160,10 +160,7 @@ void init(void)
160 status_init(); 160 status_init();
161 usb_start_monitoring(); 161 usb_start_monitoring();
162 power_init(); 162 power_init();
163#ifdef LOADABLE_FONTS 163 font_init();
164 unicode_init();
165 lcd_init_fonts();
166#endif
167} 164}
168 165
169int main(void) 166int main(void)
diff --git a/apps/main_menu.c b/apps/main_menu.c
index 464b514bc3..8c0b6a01f3 100644
--- a/apps/main_menu.c
+++ b/apps/main_menu.c
@@ -23,6 +23,7 @@
23#include "tree.h" 23#include "tree.h"
24#include "credits.h" 24#include "credits.h"
25#include "lcd.h" 25#include "lcd.h"
26#include "font.h"
26#include "button.h" 27#include "button.h"
27#include "kernel.h" 28#include "kernel.h"
28#include "main_menu.h" 29#include "main_menu.h"
@@ -96,9 +97,9 @@ int show_logo( void )
96#endif 97#endif
97 98
98 snprintf(version, sizeof(version), "Ver. %s", appsversion); 99 snprintf(version, sizeof(version), "Ver. %s", appsversion);
99 lcd_getfontsize(0, &font_w, &font_h); 100 lcd_getfontsize(FONT_SYSFIXED, &font_w, &font_h);
100 lcd_putsxy((LCD_WIDTH/2) - ((strlen(version)*font_w)/2), 101 lcd_putsxy((LCD_WIDTH/2) - ((strlen(version)*font_w)/2),
101 height+10+font_h, version, 0); 102 LCD_HEIGHT-font_h, version, FONT_SYSFIXED);
102 lcd_update(); 103 lcd_update();
103 104
104#else 105#else
diff --git a/apps/menu.c b/apps/menu.c
index f690a1a381..dd5b9ba1e8 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -19,6 +19,7 @@
19#include <stdbool.h> 19#include <stdbool.h>
20 20
21#include "lcd.h" 21#include "lcd.h"
22#include "font.h"
22#include "backlight.h" 23#include "backlight.h"
23#include "menu.h" 24#include "menu.h"
24#include "button.h" 25#include "button.h"
@@ -34,10 +35,6 @@
34#include "widgets.h" 35#include "widgets.h"
35#endif 36#endif
36 37
37#ifdef LOADABLE_FONTS
38#include "ajf.h"
39#endif
40
41struct menu { 38struct menu {
42 int top; 39 int top;
43 int cursor; 40 int cursor;
@@ -54,8 +51,10 @@ struct menu {
54 51
55#define LINE_X 0 /* X position the entry-list starts at */ 52#define LINE_X 0 /* X position the entry-list starts at */
56#define LINE_Y (global_settings.statusbar ? 1 : 0) /* Y position the entry-list starts at */ 53#define LINE_Y (global_settings.statusbar ? 1 : 0) /* Y position the entry-list starts at */
57#define LINE_HEIGTH 8 /* pixels for each text line */
58 54
55//FIXME remove
56#define LINE_HEIGTH 8 /* pixels for each text line */
57//FIXME remove
59#define MENU_LINES (LCD_HEIGHT / LINE_HEIGTH - LINE_Y) 58#define MENU_LINES (LCD_HEIGHT / LINE_HEIGTH - LINE_Y)
60 59
61#define CURSOR_X (global_settings.scrollbar ? 1 : 0) 60#define CURSOR_X (global_settings.scrollbar ? 1 : 0)
@@ -89,17 +88,12 @@ struct menu {
89static struct menu menus[MAX_MENUS]; 88static struct menu menus[MAX_MENUS];
90static bool inuse[MAX_MENUS] = { false }; 89static bool inuse[MAX_MENUS] = { false };
91 90
92/* count in letter posistions, NOT pixels */ 91/* count in letter positions, NOT pixels */
93void put_cursorxy(int x, int y, bool on) 92void put_cursorxy(int x, int y, bool on)
94{ 93{
95#ifdef HAVE_LCD_BITMAP 94#ifdef HAVE_LCD_BITMAP
96#ifdef LOADABLE_FONTS 95 int fh, fw;
97 int fh; 96 lcd_getfontsize(FONT_UI, &fw, &fh);
98 unsigned char* font = lcd_getcurrentldfont();
99 fh = ajf_get_fontheight(font);
100#else
101 int fh = 8;
102#endif
103#endif 97#endif
104 98
105 /* place the cursor */ 99 /* place the cursor */
@@ -131,11 +125,10 @@ void put_cursorxy(int x, int y, bool on)
131static void menu_draw(int m) 125static void menu_draw(int m)
132{ 126{
133 int i = 0; 127 int i = 0;
134#ifdef LOADABLE_FONTS 128#if LCD_PROPFONTS
129 int fw, fh;
135 int menu_lines; 130 int menu_lines;
136 int fh; 131 lcd_getfontsize(FONT_UI, &fw, &fh);
137 unsigned char* font = lcd_getcurrentldfont();
138 fh = ajf_get_fontheight(font);
139 if (global_settings.statusbar) 132 if (global_settings.statusbar)
140 menu_lines = (LCD_HEIGHT - STATUSBAR_HEIGHT) / fh; 133 menu_lines = (LCD_HEIGHT - STATUSBAR_HEIGHT) / fh;
141 else 134 else
@@ -148,7 +141,7 @@ static void menu_draw(int m)
148 lcd_clear_display(); /* ...then clean the screen */ 141 lcd_clear_display(); /* ...then clean the screen */
149#ifdef HAVE_LCD_BITMAP 142#ifdef HAVE_LCD_BITMAP
150 lcd_setmargins(MARGIN_X,MARGIN_Y); /* leave room for cursor and icon */ 143 lcd_setmargins(MARGIN_X,MARGIN_Y); /* leave room for cursor and icon */
151 lcd_setfont(0); 144 lcd_setfont(FONT_UI);
152#endif 145#endif
153 /* correct cursor pos if out of screen */ 146 /* correct cursor pos if out of screen */
154 if (menus[m].cursor - menus[m].top >= menu_lines) 147 if (menus[m].cursor - menus[m].top >= menu_lines)
@@ -182,18 +175,18 @@ static void menu_draw(int m)
182static void put_cursor(int m, int target) 175static void put_cursor(int m, int target)
183{ 176{
184 bool do_update = true; 177 bool do_update = true;
185#ifdef LOADABLE_FONTS 178#if LCD_PROPFONTS
179 int fw, fh;
186 int menu_lines; 180 int menu_lines;
187 int fh; 181 lcd_getfontsize(FONT_UI, &fw, &fh);
188 unsigned char* font = lcd_getcurrentldfont();
189 fh = ajf_get_fontheight(font);
190 if (global_settings.statusbar) 182 if (global_settings.statusbar)
191 menu_lines = (LCD_HEIGHT-STATUSBAR_HEIGHT)/fh; 183 menu_lines = (LCD_HEIGHT - STATUSBAR_HEIGHT) / fh;
192 else 184 else
193 menu_lines = LCD_HEIGHT/fh; 185 menu_lines = LCD_HEIGHT/fh;
194#else 186#else
195 int menu_lines = MENU_LINES; 187 int menu_lines = MENU_LINES;
196#endif 188#endif
189
197 put_cursorxy(CURSOR_X, menus[m].cursor - menus[m].top, false); 190 put_cursorxy(CURSOR_X, menus[m].cursor - menus[m].top, false);
198 menus[m].cursor = target; 191 menus[m].cursor = target;
199 menu_draw(m); 192 menu_draw(m);
diff --git a/apps/recorder/bounce.c b/apps/recorder/bounce.c
index 96291066e5..999ba47366 100644
--- a/apps/recorder/bounce.c
+++ b/apps/recorder/bounce.c
@@ -136,7 +136,6 @@ static void loopit(void)
136 lcd_bitmap((char *)char_gen_12x16[rock[i]-0x20], 136 lcd_bitmap((char *)char_gen_12x16[rock[i]-0x20],
137 xtable[xx%71], table[yy&63], 137 xtable[xx%71], table[yy&63],
138 11, 16, false); 138 11, 16, false);
139
140 lcd_update(); 139 lcd_update();
141 140
142 ysanke+= values[NUM_YSANKE].num; 141 ysanke+= values[NUM_YSANKE].num;
diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c
index 0501a3f0c0..fbfaf6cd8c 100644
--- a/apps/recorder/icons.c
+++ b/apps/recorder/icons.c
@@ -16,8 +16,9 @@
16 * KIND, either express or implied. 16 * KIND, either express or implied.
17 * 17 *
18 ****************************************************************************/ 18 ****************************************************************************/
19#include <lcd.h>
20#include <string.h> 19#include <string.h>
20#include "lcd.h"
21#include "font.h"
21#include "kernel.h" 22#include "kernel.h"
22#include "sprintf.h" 23#include "sprintf.h"
23#include "rtc.h" 24#include "rtc.h"
@@ -233,15 +234,7 @@ void statusbar_icon_volume(int percent)
233 /* display volume lever numerical? */ 234 /* display volume lever numerical? */
234 if (TIME_BEFORE(current_tick,switch_tick)) { 235 if (TIME_BEFORE(current_tick,switch_tick)) {
235 snprintf(buffer, sizeof(buffer), "%2d", percent); 236 snprintf(buffer, sizeof(buffer), "%2d", percent);
236#if defined(LCD_PROPFONTS) 237 lcd_getstringsize(buffer, FONT_UI, &width, &height);
237 lcd_getstringsize(buffer, 0, &width, &height);
238#elif defined(LOADABLE_FONTS)
239 font = lcd_getcurrentldfont();
240 lcd_getstringsize(buffer, font, &width, &height);
241#else
242 width = 6*strlen(buffer);
243 height = 8;
244#endif
245 if (height <= STATUSBAR_HEIGHT) 238 if (height <= STATUSBAR_HEIGHT)
246 lcd_putsxy(ICON_VOLUME_X_POS + ICON_VOLUME_WIDTH / 2 - 239 lcd_putsxy(ICON_VOLUME_X_POS + ICON_VOLUME_WIDTH / 2 -
247 width/2, STATUSBAR_Y_POS, buffer, 0); 240 width/2, STATUSBAR_Y_POS, buffer, 0);
@@ -316,15 +309,7 @@ void statusbar_time(int hour, int minute)
316 strncpy(buffer, "--:--", sizeof buffer); 309 strncpy(buffer, "--:--", sizeof buffer);
317 } 310 }
318 311
319#if defined(LCD_PROPFONTS) 312 lcd_getstringsize(buffer, FONT_UI, &width, &height);
320 lcd_getstringsize(buffer, 0, &width, &height);
321#elif defined(LOADABLE_FONTS)
322 font = lcd_getcurrentldfont();
323 lcd_getstringsize(buffer, font, &width, &height);
324#else
325 width = 6*strlen(buffer);
326 height = 8;
327#endif
328 if (height <= STATUSBAR_HEIGHT) 313 if (height <= STATUSBAR_HEIGHT)
329 lcd_putsxy(TIME_X_END - width, STATUSBAR_Y_POS, buffer, 0); 314 lcd_putsxy(TIME_X_END - width, STATUSBAR_Y_POS, buffer, 0);
330} 315}
diff --git a/apps/recorder/wormlet.c b/apps/recorder/wormlet.c
index ba96f6b9de..84ee55062c 100644
--- a/apps/recorder/wormlet.c
+++ b/apps/recorder/wormlet.c
@@ -67,11 +67,7 @@
67/* size of the field the worm lives in */ 67/* size of the field the worm lives in */
68#define FIELD_RECT_X 1 68#define FIELD_RECT_X 1
69#define FIELD_RECT_Y 1 69#define FIELD_RECT_Y 1
70#ifdef LCD_PROPFONTS
71#define FIELD_RECT_WIDTH (LCD_WIDTH - 39) 70#define FIELD_RECT_WIDTH (LCD_WIDTH - 39)
72#else
73#define FIELD_RECT_WIDTH (LCD_WIDTH - 46)
74#endif
75#define FIELD_RECT_HEIGHT (LCD_HEIGHT - 2) 71#define FIELD_RECT_HEIGHT (LCD_HEIGHT - 2)
76 72
77/* size of the ring of the worm 73/* size of the ring of the worm
diff --git a/apps/settings.c b/apps/settings.c
index a1bbe4a3db..ce2b28f16b 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -40,6 +40,7 @@
40#include "atoi.h" 40#include "atoi.h"
41#ifdef HAVE_LCD_BITMAP 41#ifdef HAVE_LCD_BITMAP
42#include "icons.h" 42#include "icons.h"
43#include "font.h"
43#endif 44#endif
44 45
45struct user_settings global_settings; 46struct user_settings global_settings;
@@ -772,15 +773,10 @@ void set_time(char* string, int timedate[])
772 int realyear; 773 int realyear;
773 int julianday; 774 int julianday;
774 int i; 775 int i;
775#if defined(LOADABLE_FONTS) || defined(LCD_PROPFONTS)
776 unsigned char reffub[5]; 776 unsigned char reffub[5];
777 unsigned int width, height; 777 unsigned int width, height;
778 unsigned int separator_width, weekday_width; 778 unsigned int separator_width, weekday_width;
779 unsigned int line_height, prev_line_height; 779 unsigned int line_height, prev_line_height;
780#if defined(LOADABLE_FONTS)
781 unsigned char *font = lcd_getcurrentldfont();
782#endif
783#endif
784 780
785#ifdef HAVE_LCD_BITMAP 781#ifdef HAVE_LCD_BITMAP
786 if(global_settings.statusbar) 782 if(global_settings.statusbar)
@@ -817,65 +813,35 @@ void set_time(char* string, int timedate[])
817 timedate[1], 813 timedate[1],
818 timedate[2]); 814 timedate[2]);
819 lcd_puts(0, 1, buffer); 815 lcd_puts(0, 1, buffer);
820#if defined(LCD_PROPFONTS) 816
821 /* recalculate the positions and offsets */ 817 /* recalculate the positions and offsets */
822 lcd_getstringsize(string, 0, &width, &prev_line_height); 818 lcd_getstringsize(string, FONT_UI, &width, &prev_line_height);
823 lcd_getstringsize(buffer, 0, &width, &line_height); 819 lcd_getstringsize(buffer, FONT_UI, &width, &line_height);
824 lcd_getstringsize(":", 0, &separator_width, &height); 820 lcd_getstringsize(":", FONT_UI, &separator_width, &height);
825 821
826 strncpy(reffub, buffer, 2); 822 strncpy(reffub, buffer, 2);
827 reffub[2] = '\0'; 823 reffub[2] = '\0';
828 lcd_getstringsize(reffub, 0, &width, &height); 824 lcd_getstringsize(reffub, FONT_UI, &width, &height);
829 cursor[0][INDEX_X] = 0; 825 cursor[0][INDEX_X] = 0;
830 cursor[0][INDEX_Y] = 1 + prev_line_height + 1; 826 cursor[0][INDEX_Y] = 1 + prev_line_height + 1;
831 cursor[0][INDEX_WIDTH] = width; 827 cursor[0][INDEX_WIDTH] = width;
832 828
833 strncpy(reffub, buffer + 3, 2); 829 strncpy(reffub, buffer + 3, 2);
834 reffub[2] = '\0'; 830 reffub[2] = '\0';
835 lcd_getstringsize(reffub, 0, &width, &height); 831 lcd_getstringsize(reffub, FONT_UI, &width, &height);
836 cursor[1][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width; 832 cursor[1][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width;
837 cursor[1][INDEX_Y] = 1 + prev_line_height + 1; 833 cursor[1][INDEX_Y] = 1 + prev_line_height + 1;
838 cursor[1][INDEX_WIDTH] = width; 834 cursor[1][INDEX_WIDTH] = width;
839 835
840 strncpy(reffub, buffer + 6, 2); 836 strncpy(reffub, buffer + 6, 2);
841 reffub[2] = '\0'; 837 reffub[2] = '\0';
842 lcd_getstringsize(reffub, 0, &width, &height); 838 lcd_getstringsize(reffub, FONT_UI, &width, &height);
843 cursor[2][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width + 839 cursor[2][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width +
844 cursor[1][INDEX_WIDTH] + separator_width; 840 cursor[1][INDEX_WIDTH] + separator_width;
845 cursor[2][INDEX_Y] = 1 + prev_line_height + 1; 841 cursor[2][INDEX_Y] = 1 + prev_line_height + 1;
846 cursor[2][INDEX_WIDTH] = width; 842 cursor[2][INDEX_WIDTH] = width;
847 843
848 lcd_getstringsize(buffer, 0, &width, &prev_line_height); 844 lcd_getstringsize(buffer, FONT_UI, &width, &prev_line_height);
849#elif defined(LOADABLE_FONTS)
850 /* recalculate the positions and offsets */
851 lcd_getstringsize(string, font, &width, &prev_line_height);
852 lcd_getstringsize(buffer, font, &width, &line_height);
853 lcd_getstringsize(":", font, &separator_width, &height);
854
855 strncpy(reffub, buffer, 2);
856 reffub[2] = '\0';
857 lcd_getstringsize(reffub, font, &width, &height);
858 cursor[0][INDEX_X] = 0;
859 cursor[0][INDEX_Y] = prev_line_height;
860 cursor[0][INDEX_WIDTH] = width;
861
862 strncpy(reffub, buffer + 3, 2);
863 reffub[2] = '\0';
864 lcd_getstringsize(reffub, font, &width, &height);
865 cursor[1][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width;
866 cursor[1][INDEX_Y] = prev_line_height;
867 cursor[1][INDEX_WIDTH] = width;
868
869 strncpy(reffub, buffer + 6, 2);
870 reffub[2] = '\0';
871 lcd_getstringsize(reffub, font, &width, &height);
872 cursor[2][INDEX_X] = cursor[0][INDEX_WIDTH] + separator_width +
873 cursor[1][INDEX_WIDTH] + separator_width;
874 cursor[2][INDEX_Y] = prev_line_height;
875 cursor[2][INDEX_WIDTH] = width;
876
877 lcd_getstringsize(buffer, font, &width, &prev_line_height);
878#endif
879 845
880 snprintf(buffer, sizeof(buffer), "%s 20%02d %s %02d ", 846 snprintf(buffer, sizeof(buffer), "%s 20%02d %s %02d ",
881 dayname[timedate[6]], 847 dayname[timedate[6]],
@@ -883,24 +849,24 @@ void set_time(char* string, int timedate[])
883 monthname[timedate[4] - 1], 849 monthname[timedate[4] - 1],
884 timedate[5]); 850 timedate[5]);
885 lcd_puts(0, 2, buffer); 851 lcd_puts(0, 2, buffer);
886#if defined(LCD_PROPFONTS) 852
887 /* recalculate the positions and offsets */ 853 /* recalculate the positions and offsets */
888 lcd_getstringsize(buffer, 0, &width, &line_height); 854 lcd_getstringsize(buffer, FONT_UI, &width, &line_height);
889 strncpy(reffub, buffer, 3); 855 strncpy(reffub, buffer, 3);
890 reffub[3] = '\0'; 856 reffub[3] = '\0';
891 lcd_getstringsize(reffub, 0, &weekday_width, &height); 857 lcd_getstringsize(reffub, FONT_UI, &weekday_width, &height);
892 lcd_getstringsize(" ", 0, &separator_width, &height); 858 lcd_getstringsize(" ", FONT_UI, &separator_width, &height);
893 859
894 strncpy(reffub, buffer + 4, 4); 860 strncpy(reffub, buffer + 4, 4);
895 reffub[4] = '\0'; 861 reffub[4] = '\0';
896 lcd_getstringsize(reffub, 0, &width, &height); 862 lcd_getstringsize(reffub, FONT_UI, &width, &height);
897 cursor[3][INDEX_X] = weekday_width + separator_width; 863 cursor[3][INDEX_X] = weekday_width + separator_width;
898 cursor[3][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height + 1; 864 cursor[3][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height + 1;
899 cursor[3][INDEX_WIDTH] = width; 865 cursor[3][INDEX_WIDTH] = width;
900 866
901 strncpy(reffub, buffer + 9, 3); 867 strncpy(reffub, buffer + 9, 3);
902 reffub[3] = '\0'; 868 reffub[3] = '\0';
903 lcd_getstringsize(reffub, 0, &width, &height); 869 lcd_getstringsize(reffub, FONT_UI, &width, &height);
904 cursor[4][INDEX_X] = weekday_width + separator_width + 870 cursor[4][INDEX_X] = weekday_width + separator_width +
905 cursor[3][INDEX_WIDTH] + separator_width; 871 cursor[3][INDEX_WIDTH] + separator_width;
906 cursor[4][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height + 1; 872 cursor[4][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height + 1;
@@ -908,7 +874,7 @@ void set_time(char* string, int timedate[])
908 874
909 strncpy(reffub, buffer + 13, 2); 875 strncpy(reffub, buffer + 13, 2);
910 reffub[2] = '\0'; 876 reffub[2] = '\0';
911 lcd_getstringsize(reffub, 0, &width, &height); 877 lcd_getstringsize(reffub, FONT_UI, &width, &height);
912 cursor[5][INDEX_X] = weekday_width + separator_width + 878 cursor[5][INDEX_X] = weekday_width + separator_width +
913 cursor[3][INDEX_WIDTH] + separator_width + 879 cursor[3][INDEX_WIDTH] + separator_width +
914 cursor[4][INDEX_WIDTH] + separator_width; 880 cursor[4][INDEX_WIDTH] + separator_width;
@@ -919,48 +885,7 @@ void set_time(char* string, int timedate[])
919 cursor[cursorpos][INDEX_Y] + lcd_getymargin(), 885 cursor[cursorpos][INDEX_Y] + lcd_getymargin(),
920 cursor[cursorpos][INDEX_WIDTH], 886 cursor[cursorpos][INDEX_WIDTH],
921 line_height); 887 line_height);
922#elif defined(LOADABLE_FONTS)
923 /* recalculate the positions and offsets */
924 lcd_getstringsize(buffer, font, &width, &line_height);
925 strncpy(reffub, buffer, 3);
926 reffub[3] = '\0';
927 lcd_getstringsize(reffub, font, &weekday_width, &height);
928 lcd_getstringsize(" ", font, &separator_width, &height);
929 888
930 strncpy(reffub, buffer + 4, 4);
931 reffub[4] = '\0';
932 lcd_getstringsize(reffub, font, &width, &height);
933 cursor[3][INDEX_X] = weekday_width + separator_width;
934 cursor[3][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height;
935 cursor[3][INDEX_WIDTH] = width;
936
937 strncpy(reffub, buffer + 9, 3);
938 reffub[3] = '\0';
939 lcd_getstringsize(reffub, font, &width, &height);
940 cursor[4][INDEX_X] = weekday_width + separator_width +
941 cursor[3][INDEX_WIDTH] + separator_width;
942 cursor[4][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height;
943 cursor[4][INDEX_WIDTH] = width;
944
945 strncpy(reffub, buffer + 13, 2);
946 reffub[2] = '\0';
947 lcd_getstringsize(reffub, font, &width, &height);
948 cursor[5][INDEX_X] = weekday_width + separator_width +
949 cursor[3][INDEX_WIDTH] + separator_width +
950 cursor[4][INDEX_WIDTH] + separator_width;
951 cursor[5][INDEX_Y] = cursor[0][INDEX_Y] + prev_line_height;
952 cursor[5][INDEX_WIDTH] = width;
953
954 lcd_invertrect(cursor[cursorpos][INDEX_X],
955 cursor[cursorpos][INDEX_Y] + lcd_getymargin(),
956 cursor[cursorpos][INDEX_WIDTH],
957 line_height);
958#else
959 lcd_invertrect(cursor[cursorpos][INDEX_X],
960 cursor[cursorpos][INDEX_Y] + lcd_getymargin(),
961 cursor[cursorpos][INDEX_WIDTH],
962 8);
963#endif
964 lcd_puts(0, 4, "ON to set"); 889 lcd_puts(0, 4, "ON to set");
965 lcd_puts(0, 5, "OFF to revert"); 890 lcd_puts(0, 5, "OFF to revert");
966#ifdef HAVE_LCD_BITMAP 891#ifdef HAVE_LCD_BITMAP
diff --git a/apps/tree.c b/apps/tree.c
index 47853f03c9..21aa78c74d 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -26,6 +26,7 @@
26#include "dir.h" 26#include "dir.h"
27#include "file.h" 27#include "file.h"
28#include "lcd.h" 28#include "lcd.h"
29#include "font.h"
29#include "backlight.h" 30#include "backlight.h"
30#include "button.h" 31#include "button.h"
31#include "kernel.h" 32#include "kernel.h"
@@ -49,10 +50,6 @@
49#include "widgets.h" 50#include "widgets.h"
50#endif 51#endif
51 52
52#ifdef LOADABLE_FONTS
53#include "ajf.h"
54#endif
55
56#define NAME_BUFFER_SIZE (AVERAGE_FILENAME_LENGTH * MAX_FILES_IN_DIR) 53#define NAME_BUFFER_SIZE (AVERAGE_FILENAME_LENGTH * MAX_FILES_IN_DIR)
57 54
58char name_buffer[NAME_BUFFER_SIZE]; 55char name_buffer[NAME_BUFFER_SIZE];
@@ -190,17 +187,16 @@ static int showdir(char *path, int start)
190 int i; 187 int i;
191 int tree_max_on_screen; 188 int tree_max_on_screen;
192 bool dir_buffer_full; 189 bool dir_buffer_full;
193#ifdef LOADABLE_FONTS 190
194 int fh; 191#ifdef HAVE_LCD_BITMAP
195 unsigned char *font = lcd_getcurrentldfont(); 192 int fw, fh;
196 fh = ajf_get_fontheight(font); 193 lcd_getfontsize(FONT_UI, &fw, &fh);
197 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; 194 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
198 line_height = fh; 195 line_height = fh;
199#else 196#else
200 tree_max_on_screen = TREE_MAX_ON_SCREEN; 197 tree_max_on_screen = TREE_MAX_ON_SCREEN;
201#endif 198#endif
202 199
203
204 /* new dir? cache it */ 200 /* new dir? cache it */
205 if (strncmp(path,lastdir,sizeof(lastdir))) { 201 if (strncmp(path,lastdir,sizeof(lastdir))) {
206 DIR *dir = opendir(path); 202 DIR *dir = opendir(path);
@@ -339,7 +335,7 @@ static int showdir(char *path, int start)
339 lcd_clear_display(); 335 lcd_clear_display();
340#ifdef HAVE_LCD_BITMAP 336#ifdef HAVE_LCD_BITMAP
341 lcd_setmargins(MARGIN_X,MARGIN_Y); /* leave room for cursor and icon */ 337 lcd_setmargins(MARGIN_X,MARGIN_Y); /* leave room for cursor and icon */
342 lcd_setfont(0); 338 lcd_setfont(FONT_UI);
343#endif 339#endif
344 340
345 for ( i=start; i < start+tree_max_on_screen; i++ ) { 341 for ( i=start; i < start+tree_max_on_screen; i++ ) {
@@ -573,10 +569,9 @@ bool dirbrowse(char *root)
573 bool lastfilter = global_settings.mp3filter; 569 bool lastfilter = global_settings.mp3filter;
574 bool lastsortcase = global_settings.sort_case; 570 bool lastsortcase = global_settings.sort_case;
575 bool lastshowhidden = global_settings.show_hidden_files; 571 bool lastshowhidden = global_settings.show_hidden_files;
576#ifdef LOADABLE_FONTS 572#ifdef HAVE_LCD_BITMAP
577 int fh; 573 int fw, fh;
578 unsigned char *font = lcd_getcurrentldfont(); 574 lcd_getfontsize(FONT_UI, &fw, &fh);
579 fh = ajf_get_fontheight(font);
580 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; 575 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
581#else 576#else
582 tree_max_on_screen = TREE_MAX_ON_SCREEN; 577 tree_max_on_screen = TREE_MAX_ON_SCREEN;
@@ -743,10 +738,8 @@ bool dirbrowse(char *root)
743 reload_root = true; 738 reload_root = true;
744 global_settings.resume_index = -1; 739 global_settings.resume_index = -1;
745 } 740 }
746#ifdef LOADABLE_FONTS 741#ifdef HAVE_LCD_BITMAP
747 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; 742 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
748#else
749 tree_max_on_screen = TREE_MAX_ON_SCREEN;
750#endif 743#endif
751 } 744 }
752 } 745 }
@@ -836,10 +829,8 @@ bool dirbrowse(char *root)
836 lcd_stop_scroll(); 829 lcd_stop_scroll();
837 if (wps_show() == SYS_USB_CONNECTED) 830 if (wps_show() == SYS_USB_CONNECTED)
838 reload_root = true; 831 reload_root = true;
839#ifdef LOADABLE_FONTS 832#ifdef HAVE_LCD_BITMAP
840 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; 833 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
841#else
842 tree_max_on_screen = TREE_MAX_ON_SCREEN;
843#endif 834#endif
844 restore = true; 835 restore = true;
845 } 836 }
@@ -855,10 +846,9 @@ bool dirbrowse(char *root)
855 case BUTTON_F3: 846 case BUTTON_F3:
856 if (f3_screen()) 847 if (f3_screen())
857 reload_root = true; 848 reload_root = true;
858#ifdef LOADABLE_FONTS 849
850#ifdef HAVE_LCD_BITMAP
859 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; 851 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
860#else
861 tree_max_on_screen = TREE_MAX_ON_SCREEN;
862#endif 852#endif
863 restore = true; 853 restore = true;
864 break; 854 break;
diff --git a/apps/wps-display.c b/apps/wps-display.c
index 5d6290d244..8d33c723a4 100644
--- a/apps/wps-display.c
+++ b/apps/wps-display.c
@@ -27,6 +27,7 @@
27#include <stdlib.h> 27#include <stdlib.h>
28 28
29#include "lcd.h" 29#include "lcd.h"
30#include "font.h"
30#include "mpeg.h" 31#include "mpeg.h"
31#include "id3.h" 32#include "id3.h"
32#include "settings.h" 33#include "settings.h"
@@ -42,10 +43,6 @@
42#include "widgets.h" 43#include "widgets.h"
43#endif 44#endif
44 45
45#ifdef LOADABLE_FONTS
46#include "ajf.h"
47#endif
48
49#define WPS_CONFIG ROCKBOX_DIR "/default.wps" 46#define WPS_CONFIG ROCKBOX_DIR "/default.wps"
50 47
51#ifdef HAVE_LCD_BITMAP 48#ifdef HAVE_LCD_BITMAP
@@ -551,11 +548,7 @@ bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_all)
551#else 548#else
552 int w,h; 549 int w,h;
553 int offset = global_settings.statusbar ? STATUSBAR_HEIGHT : 0; 550 int offset = global_settings.statusbar ? STATUSBAR_HEIGHT : 0;
554#ifdef LCD_PROPFONTS 551 lcd_getstringsize("M",FONT_UI,&w,&h);
555 lcd_getstringsize("M",0,&w,&h);
556#else
557 lcd_getfontsize(0,&w,&h);
558#endif
559 slidebar(0, i*h + offset + 1, LCD_WIDTH, 6, 552 slidebar(0, i*h + offset + 1, LCD_WIDTH, 6,
560 (id3->elapsed + ff_rewind_count) * 100 / id3->length, 553 (id3->elapsed + ff_rewind_count) * 100 / id3->length,
561 Grow_Right); 554 Grow_Right);
@@ -581,15 +574,6 @@ bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_all)
581 574
582void wps_display(struct mp3entry* id3) 575void wps_display(struct mp3entry* id3)
583{ 576{
584 int font_height;
585
586#ifdef LOADABLE_FONTS
587 unsigned char *font = lcd_getcurrentldfont();
588 font_height = ajf_get_fontheight(font);
589#else
590 font_height = 8;
591#endif
592
593 lcd_clear_display(); 577 lcd_clear_display();
594 578
595 if (!id3 && !mpeg_is_playing()) 579 if (!id3 && !mpeg_is_playing())
diff --git a/apps/wps.c b/apps/wps.c
index 4ac2476da7..d10eb92655 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -22,6 +22,7 @@
22 22
23#include "file.h" 23#include "file.h"
24#include "lcd.h" 24#include "lcd.h"
25#include "font.h"
25#include "backlight.h" 26#include "backlight.h"
26#include "button.h" 27#include "button.h"
27#include "kernel.h" 28#include "kernel.h"
@@ -40,10 +41,6 @@
40#include "icons.h" 41#include "icons.h"
41#endif 42#endif
42 43
43#ifdef LOADABLE_FONTS
44#include "ajf.h"
45#endif
46
47#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ 44#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */
48 /* 3% of 30min file == 54s step size */ 45 /* 3% of 30min file == 54s step size */
49 46
@@ -634,21 +631,17 @@ bool f2_screen(void)
634 char buf[32]; 631 char buf[32];
635 632
636 /* Get the font height */ 633 /* Get the font height */
637#ifdef LCD_PROPFONTS 634 lcd_getstringsize("A",FONT_UI,&w,&h);
638 lcd_getstringsize("A",0,&w,&h);
639#else
640 lcd_getfontsize(0,&w,&h);
641#endif
642 635
643 lcd_stop_scroll(); 636 lcd_stop_scroll();
644 637
645 while (!exit) { 638 while (!exit) {
646 lcd_clear_display(); 639 lcd_clear_display();
647 640
648 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Shuffle", 0); 641 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Shuffle", FONT_UI);
649 lcd_putsxy(0, LCD_HEIGHT/2 - h, "mode:", 0); 642 lcd_putsxy(0, LCD_HEIGHT/2 - h, "mode:", FONT_UI);
650 lcd_putsxy(0, LCD_HEIGHT/2, 643 lcd_putsxy(0, LCD_HEIGHT/2,
651 global_settings.playlist_shuffle ? "on" : "off", 0); 644 global_settings.playlist_shuffle ? "on" : "off", FONT_UI);
652 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], 645 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
653 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); 646 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
654 647
@@ -656,13 +649,8 @@ bool f2_screen(void)
656 global_settings.mp3filter ? "on" : "off"); 649 global_settings.mp3filter ? "on" : "off");
657 650
658 /* Get the string width and height */ 651 /* Get the string width and height */
659#ifdef LCD_PROPFONTS 652 lcd_getstringsize(buf,FONT_UI,&w,&h);
660 lcd_getstringsize(buf,0,&w,&h); 653 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, buf, FONT_UI);
661#else
662 lcd_getfontsize(0,&w,&h);
663 w *= strlen(buf);
664#endif
665 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, buf, 0);
666 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], 654 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow],
667 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); 655 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true);
668 656
@@ -717,26 +705,20 @@ bool f3_screen(void)
717 char* ptr; 705 char* ptr;
718 706
719 ptr = "Status"; 707 ptr = "Status";
720#ifdef LCD_PROPFONTS 708 lcd_getstringsize(ptr,FONT_UI,&w,&h);
721 lcd_getstringsize(ptr,0,&w,&h);
722#else
723 lcd_getfontsize(0,&w,&h);
724 w *= strlen(ptr);
725#endif
726
727 lcd_clear_display(); 709 lcd_clear_display();
728 710
729 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Scroll", 0); 711 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, "Scroll", FONT_UI);
730 lcd_putsxy(0, LCD_HEIGHT/2 - h, "bar:", 0); 712 lcd_putsxy(0, LCD_HEIGHT/2 - h, "bar:", FONT_UI);
731 lcd_putsxy(0, LCD_HEIGHT/2, 713 lcd_putsxy(0, LCD_HEIGHT/2,
732 global_settings.scrollbar ? "on" : "off", 0); 714 global_settings.scrollbar ? "on" : "off", FONT_UI);
733 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], 715 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
734 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); 716 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
735 717
736 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr, 0); 718 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr, FONT_UI);
737 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, "bar:", 0); 719 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, "bar:", FONT_UI);
738 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, 720 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2,
739 global_settings.statusbar ? "on" : "off", 0 ); 721 global_settings.statusbar ? "on" : "off", FONT_UI);
740 lcd_bitmap(bitmap_icons_7x8[Icon_FastForward], 722 lcd_bitmap(bitmap_icons_7x8[Icon_FastForward],
741 LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true); 723 LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true);
742 lcd_update(); 724 lcd_update();
diff --git a/docs/AJF b/docs/AJF
index 6558dfcf45..9a3c86eb02 100644
--- a/docs/AJF
+++ b/docs/AJF
@@ -1,4 +1,4 @@
1Description of the binary AJF font file format 1Description of the binary AJF font file format (version 2)
2 2
3Index Descripton 3Index Descripton
4 4
@@ -9,14 +9,27 @@ Index Descripton
923 - 24 "bound width" (high 8 bits, low 8 bits) 923 - 24 "bound width" (high 8 bits, low 8 bits)
1025 - 26 "bound height" (high 8 bits, low 8 bits) 1025 - 26 "bound height" (high 8 bits, low 8 bits)
1126 - 28 first character in the font 1126 - 28 first character in the font
1229 - 2a 0x00ff (supposed number of characters in the font?) 1229 - 2a number of characters in the font (alwasys 0x00ff now)
132b - map offset table starts here. Each offset entry is supposed to be 132b - map offset table starts here. Each offset entry is two bytes:
14 three bytes: width, offset highbyte, offset lowbyte 14 offset highbyte, offset lowbyte
15 The offset is a relative offset, counted in bytes, to where in the
16 font data this particular char's bitmap image starts.
17 15
18 font data, in Rockbox-internal image-format. That means column-wise 16 The offset is number of bytes from the start of this file, to where
17 in the font data this particular char's font data starts.
18
19 There is one offset entry for each character in this font, starting
20 with 'first character' (set above) and ending when all the 'number
21 of characters' have been stored.
22
23?? - Font data. First four bytes width, height, dispx and dispy and then
24 the glyph in Rockbox-internal image-format. That means column-wise
19 left-to-right for the full width, the first 8 pixels of height. Then 25 left-to-right for the full width, the first 8 pixels of height. Then
20 follows the next 8 pixels of height left-to-right. 26 follows the next 8 pixels of height left-to-right.
21 27
22 We don't currently support fonts larger than 16 pixels. 28 We don't currently support fonts larger than 16 pixels. (This font
29 file format would have no problem with bigger sizes, but the internal
30 bitmap function has.)
31
32References
33
34 The BDF file format
35 http://partners.adobe.com/asn/developer/pdfs/tn/5005.BDF_Spec.pdf \ No newline at end of file
diff --git a/firmware/X5x8.bdf b/firmware/X5x8.bdf
new file mode 100644
index 0000000000..adb452a3ee
--- /dev/null
+++ b/firmware/X5x8.bdf
@@ -0,0 +1,1967 @@
1STARTFONT 2.1
2COMMENT $Xorg: 5x8.bdf,v 1.3 2000/08/18 15:17:39 xorgcvs Exp $
3COMMENT Copyright 1989 Cognition Corp.
4COMMENT
5COMMENT Permission to use, copy, modify, and distribute this software and its
6COMMENT documentation for any purpose and without fee is hereby granted,
7COMMENT provided that the above copyright notice appear in all copies and that
8COMMENT both that copyright notice and this permission notice appear in
9COMMENT supporting documentation, and that the name of Cognition Corp. not be
10COMMENT used in advertising or publicity pertaining to distribution of the
11COMMENT software without specific, written prior permission. Cognition Corp.
12COMMENT makes no representations about the suitability of this software for any
13COMMENT purpose. It is provided "as is" without express or implied warranty.
14COMMENT
15COMMENT COGNITION CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16COMMENT INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
17COMMENT EVENT SHALL COGNITION CORP. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18COMMENT CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
19COMMENT USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
20COMMENT OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
21COMMENT PERFORMANCE OF THIS SOFTWARE.
22FONT -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO646.1991-IRV
23SIZE 11 75 75
24FONTBOUNDINGBOX 5 8 0 0
25STARTPROPERTIES 19
26FONTNAME_REGISTRY ""
27FOUNDRY "Misc"
28FAMILY_NAME "Fixed"
29WEIGHT_NAME "Medium"
30SLANT "R"
31SETWIDTH_NAME "Normal"
32ADD_STYLE_NAME ""
33PIXEL_SIZE 8
34POINT_SIZE 80
35RESOLUTION_X 75
36RESOLUTION_Y 75
37SPACING "C"
38AVERAGE_WIDTH 50
39CHARSET_REGISTRY "ISO646.1991"
40CHARSET_ENCODING "IRV"
41FONT_DESCENT 1
42FONT_ASCENT 7
43COPYRIGHT "Copyright 1989 by Cognition Corp."
44DEFAULT_CHAR 0
45ENDPROPERTIES
46CHARS 128
47STARTCHAR C000
48ENCODING 0
49SWIDTH 1 0
50DWIDTH 5 0
51BBX 5 8 0 -1
52BITMAP
5300
5400
5500
5600
5700
5800
5900
6000
61ENDCHAR
62STARTCHAR C001
63ENCODING 1
64SWIDTH 1 0
65DWIDTH 5 0
66BBX 5 8 0 -1
67BITMAP
6800
6920
7070
71f8
7270
7320
7400
7500
76ENDCHAR
77STARTCHAR C002
78ENCODING 2
79SWIDTH 1 0
80DWIDTH 5 0
81BBX 5 8 0 -1
82BITMAP
8300
8428
8550
8628
8750
8828
8950
9028
91ENDCHAR
92STARTCHAR C003
93ENCODING 3
94SWIDTH 1 0
95DWIDTH 5 0
96BBX 5 8 0 -1
97BITMAP
9850
9950
10070
10150
10250
10338
10410
10510
106ENDCHAR
107STARTCHAR C004
108ENCODING 4
109SWIDTH 1 0
110DWIDTH 5 0
111BBX 5 8 0 -1
112BITMAP
113e0
11480
115c0
116b8
117a0
11830
11920
12020
121ENDCHAR
122STARTCHAR C005
123ENCODING 5
124SWIDTH 1 0
125DWIDTH 5 0
126BBX 5 8 0 -1
127BITMAP
12860
12980
13060
13100
13230
13328
13430
13528
136ENDCHAR
137STARTCHAR C006
138ENCODING 6
139SWIDTH 1 0
140DWIDTH 5 0
141BBX 5 8 0 -1
142BITMAP
14380
14480
14580
146e0
14738
14820
14930
15020
151ENDCHAR
152STARTCHAR C007
153ENCODING 7
154SWIDTH 1 0
155DWIDTH 5 0
156BBX 5 8 0 -1
157BITMAP
15800
15920
16050
16120
16200
16300
16400
16500
166ENDCHAR
167STARTCHAR C010
168ENCODING 8
169SWIDTH 1 0
170DWIDTH 5 0
171BBX 5 8 0 -1
172BITMAP
17300
17420
17570
17620
17700
17870
17900
18000
181ENDCHAR
182STARTCHAR C011
183ENCODING 9
184SWIDTH 1 0
185DWIDTH 5 0
186BBX 5 8 0 -1
187BITMAP
18890
189d0
190b0
19190
19220
19320
19420
19538
196ENDCHAR
197STARTCHAR C012
198ENCODING 10
199SWIDTH 1 0
200DWIDTH 5 0
201BBX 5 8 0 -1
202BITMAP
203a0
204a0
205a0
20640
20738
20810
20910
21010
211ENDCHAR
212STARTCHAR C013
213ENCODING 11
214SWIDTH 1 0
215DWIDTH 5 0
216BBX 5 8 0 -1
217BITMAP
21820
21920
22020
221e0
22200
22300
22400
22500
226ENDCHAR
227STARTCHAR C014
228ENCODING 12
229SWIDTH 1 0
230DWIDTH 5 0
231BBX 5 8 0 -1
232BITMAP
23300
23400
23500
236e0
23720
23820
23920
24020
241ENDCHAR
242STARTCHAR C015
243ENCODING 13
244SWIDTH 1 0
245DWIDTH 5 0
246BBX 5 8 0 -1
247BITMAP
24800
24900
25000
25138
25220
25320
25420
25520
256ENDCHAR
257STARTCHAR C016
258ENCODING 14
259SWIDTH 1 0
260DWIDTH 5 0
261BBX 5 8 0 -1
262BITMAP
26320
26420
26520
26638
26700
26800
26900
27000
271ENDCHAR
272STARTCHAR C017
273ENCODING 15
274SWIDTH 1 0
275DWIDTH 5 0
276BBX 5 8 0 -1
277BITMAP
27820
27920
28020
281f8
28220
28320
28420
28520
286ENDCHAR
287STARTCHAR C020
288ENCODING 16
289SWIDTH 1 0
290DWIDTH 5 0
291BBX 5 8 0 -1
292BITMAP
29300
294f8
29500
29600
29700
29800
29900
30000
301ENDCHAR
302STARTCHAR C021
303ENCODING 17
304SWIDTH 1 0
305DWIDTH 5 0
306BBX 5 8 0 -1
307BITMAP
30800
30900
310f8
31100
31200
31300
31400
31500
316ENDCHAR
317STARTCHAR C022
318ENCODING 18
319SWIDTH 1 0
320DWIDTH 5 0
321BBX 5 8 0 -1
322BITMAP
32300
32400
32500
326f8
32700
32800
32900
33000
331ENDCHAR
332STARTCHAR C023
333ENCODING 19
334SWIDTH 1 0
335DWIDTH 5 0
336BBX 5 8 0 -1
337BITMAP
33800
33900
34000
34100
342f8
34300
34400
34500
346ENDCHAR
347STARTCHAR C024
348ENCODING 20
349SWIDTH 1 0
350DWIDTH 5 0
351BBX 5 8 0 -1
352BITMAP
35300
35400
35500
35600
35700
358f8
35900
36000
361ENDCHAR
362STARTCHAR C025
363ENCODING 21
364SWIDTH 1 0
365DWIDTH 5 0
366BBX 5 8 0 -1
367BITMAP
36820
36920
37020
37138
37220
37320
37420
37520
376ENDCHAR
377STARTCHAR C026
378ENCODING 22
379SWIDTH 1 0
380DWIDTH 5 0
381BBX 5 8 0 -1
382BITMAP
38320
38420
38520
386e0
38720
38820
38920
39020
391ENDCHAR
392STARTCHAR C027
393ENCODING 23
394SWIDTH 1 0
395DWIDTH 5 0
396BBX 5 8 0 -1
397BITMAP
39820
39920
40020
401f8
40200
40300
40400
40500
406ENDCHAR
407STARTCHAR C030
408ENCODING 24
409SWIDTH 1 0
410DWIDTH 5 0
411BBX 5 8 0 -1
412BITMAP
41300
41400
41500
416f8
41720
41820
41920
42020
421ENDCHAR
422STARTCHAR C031
423ENCODING 25
424SWIDTH 1 0
425DWIDTH 5 0
426BBX 5 8 0 -1
427BITMAP
42820
42920
43020
43120
43220
43320
43420
43520
436ENDCHAR
437STARTCHAR C032
438ENCODING 26
439SWIDTH 1 0
440DWIDTH 5 0
441BBX 5 8 0 -1
442BITMAP
44300
44410
44520
44640
44720
44810
44970
45000
451ENDCHAR
452STARTCHAR C033
453ENCODING 27
454SWIDTH 1 0
455DWIDTH 5 0
456BBX 5 8 0 -1
457BITMAP
45800
45940
46020
46110
46220
46340
46470
46500
466ENDCHAR
467STARTCHAR C034
468ENCODING 28
469SWIDTH 1 0
470DWIDTH 5 0
471BBX 5 8 0 -1
472BITMAP
47300
474f8
47550
47650
47750
47850
47900
48000
481ENDCHAR
482STARTCHAR C035
483ENCODING 29
484SWIDTH 1 0
485DWIDTH 5 0
486BBX 5 8 0 -1
487BITMAP
48800
48910
490f8
49120
492f8
49340
49400
49500
496ENDCHAR
497STARTCHAR C036
498ENCODING 30
499SWIDTH 1 0
500DWIDTH 5 0
501BBX 5 8 0 -1
502BITMAP
50300
50430
50548
506e0
50740
50848
509b0
51000
511ENDCHAR
512STARTCHAR C037
513ENCODING 31
514SWIDTH 1 0
515DWIDTH 5 0
516BBX 5 8 0 -1
517BITMAP
51800
51900
52000
52120
52200
52300
52400
52500
526ENDCHAR
527STARTCHAR C040
528ENCODING 32
529SWIDTH 1 0
530DWIDTH 5 0
531BBX 5 8 0 -1
532BITMAP
53300
53400
53500
53600
53700
53800
53900
54000
541ENDCHAR
542STARTCHAR !
543ENCODING 33
544SWIDTH 1 0
545DWIDTH 5 0
546BBX 5 8 0 -1
547BITMAP
54800
54920
55020
55120
55220
55300
55420
55500
556ENDCHAR
557STARTCHAR "
558ENCODING 34
559SWIDTH 1 0
560DWIDTH 5 0
561BBX 5 8 0 -1
562BITMAP
56300
56450
56550
56650
56700
56800
56900
57000
571ENDCHAR
572STARTCHAR #
573ENCODING 35
574SWIDTH 1 0
575DWIDTH 5 0
576BBX 5 8 0 -1
577BITMAP
57850
57950
580f8
58150
582f8
58350
58450
58500
586ENDCHAR
587STARTCHAR $
588ENCODING 36
589SWIDTH 1 0
590DWIDTH 5 0
591BBX 5 8 0 -1
592BITMAP
59320
59470
595a0
59670
59728
59870
59920
60000
601ENDCHAR
602STARTCHAR %
603ENCODING 37
604SWIDTH 1 0
605DWIDTH 5 0
606BBX 5 8 0 -1
607BITMAP
60800
60940
61050
61120
61250
61310
61400
61500
616ENDCHAR
617STARTCHAR &
618ENCODING 38
619SWIDTH 1 0
620DWIDTH 5 0
621BBX 5 8 0 -1
622BITMAP
62320
62450
62550
62620
62750
62850
62928
63000
631ENDCHAR
632STARTCHAR '
633ENCODING 39
634SWIDTH 1 0
635DWIDTH 5 0
636BBX 5 8 0 -1
637BITMAP
63800
63930
64020
64140
64200
64300
64400
64500
646ENDCHAR
647STARTCHAR (
648ENCODING 40
649SWIDTH 1 0
650DWIDTH 5 0
651BBX 5 8 0 -1
652BITMAP
65300
65410
65520
65620
65720
65810
65900
66000
661ENDCHAR
662STARTCHAR )
663ENCODING 41
664SWIDTH 1 0
665DWIDTH 5 0
666BBX 5 8 0 -1
667BITMAP
66800
66940
67020
67120
67220
67340
67400
67500
676ENDCHAR
677STARTCHAR *
678ENCODING 42
679SWIDTH 1 0
680DWIDTH 5 0
681BBX 5 8 0 -1
682BITMAP
68300
68448
68530
68678
68730
68848
68900
69000
691ENDCHAR
692STARTCHAR +
693ENCODING 43
694SWIDTH 1 0
695DWIDTH 5 0
696BBX 5 8 0 -1
697BITMAP
69800
69920
70020
701f8
70220
70320
70400
70500
706ENDCHAR
707STARTCHAR ,
708ENCODING 44
709SWIDTH 1 0
710DWIDTH 5 0
711BBX 5 8 0 -1
712BITMAP
71300
71400
71500
71600
71730
71820
71940
72000
721ENDCHAR
722STARTCHAR -
723ENCODING 45
724SWIDTH 1 0
725DWIDTH 5 0
726BBX 5 8 0 -1
727BITMAP
72800
72900
73000
73100
73278
73300
73400
73500
736ENDCHAR
737STARTCHAR .
738ENCODING 46
739SWIDTH 1 0
740DWIDTH 5 0
741BBX 5 8 0 -1
742BITMAP
74300
74400
74500
74600
74720
74870
74920
75000
751ENDCHAR
752STARTCHAR /
753ENCODING 47
754SWIDTH 1 0
755DWIDTH 5 0
756BBX 5 8 0 -1
757BITMAP
75800
75908
76008
76110
76220
76340
76440
76500
766ENDCHAR
767STARTCHAR 0
768ENCODING 48
769SWIDTH 1 0
770DWIDTH 5 0
771BBX 5 8 0 -1
772BITMAP
77300
77420
77550
77650
77750
77850
77920
78000
781ENDCHAR
782STARTCHAR 1
783ENCODING 49
784SWIDTH 1 0
785DWIDTH 5 0
786BBX 5 8 0 -1
787BITMAP
78800
78920
79060
79120
79220
79320
79470
79500
796ENDCHAR
797STARTCHAR 2
798ENCODING 50
799SWIDTH 1 0
800DWIDTH 5 0
801BBX 5 8 0 -1
802BITMAP
80300
80430
80548
80608
80730
80840
80978
81000
811ENDCHAR
812STARTCHAR 3
813ENCODING 51
814SWIDTH 1 0
815DWIDTH 5 0
816BBX 5 8 0 -1
817BITMAP
81800
81930
82048
82110
82208
82348
82430
82500
826ENDCHAR
827STARTCHAR 4
828ENCODING 52
829SWIDTH 1 0
830DWIDTH 5 0
831BBX 5 8 0 -1
832BITMAP
83300
83410
83530
83650
83778
83810
83910
84000
841ENDCHAR
842STARTCHAR 5
843ENCODING 53
844SWIDTH 1 0
845DWIDTH 5 0
846BBX 5 8 0 -1
847BITMAP
84800
84978
85040
85170
85208
85348
85430
85500
856ENDCHAR
857STARTCHAR 6
858ENCODING 54
859SWIDTH 1 0
860DWIDTH 5 0
861BBX 5 8 0 -1
862BITMAP
86300
86430
86540
86650
86768
86848
86930
87000
871ENDCHAR
872STARTCHAR 7
873ENCODING 55
874SWIDTH 1 0
875DWIDTH 5 0
876BBX 5 8 0 -1
877BITMAP
87800
87978
88008
88110
88210
88320
88420
88500
886ENDCHAR
887STARTCHAR 8
888ENCODING 56
889SWIDTH 1 0
890DWIDTH 5 0
891BBX 5 8 0 -1
892BITMAP
89300
89430
89548
89630
89748
89848
89930
90000
901ENDCHAR
902STARTCHAR 9
903ENCODING 57
904SWIDTH 1 0
905DWIDTH 5 0
906BBX 5 8 0 -1
907BITMAP
90800
90930
91048
91158
91228
91308
91430
91500
916ENDCHAR
917STARTCHAR :
918ENCODING 58
919SWIDTH 1 0
920DWIDTH 5 0
921BBX 5 8 0 -1
922BITMAP
92300
92430
92530
92600
92730
92830
92900
93000
931ENDCHAR
932STARTCHAR ;
933ENCODING 59
934SWIDTH 1 0
935DWIDTH 5 0
936BBX 5 8 0 -1
937BITMAP
93800
93930
94030
94100
94230
94320
94440
94500
946ENDCHAR
947STARTCHAR <
948ENCODING 60
949SWIDTH 1 0
950DWIDTH 5 0
951BBX 5 8 0 -1
952BITMAP
95300
95410
95520
95640
95740
95820
95910
96000
961ENDCHAR
962STARTCHAR =
963ENCODING 61
964SWIDTH 1 0
965DWIDTH 5 0
966BBX 5 8 0 -1
967BITMAP
96800
96900
97070
97100
97270
97300
97400
97500
976ENDCHAR
977STARTCHAR >
978ENCODING 62
979SWIDTH 1 0
980DWIDTH 5 0
981BBX 5 8 0 -1
982BITMAP
98300
98440
98520
98610
98710
98820
98940
99000
991ENDCHAR
992STARTCHAR ?
993ENCODING 63
994SWIDTH 1 0
995DWIDTH 5 0
996BBX 5 8 0 -1
997BITMAP
99800
99920
100050
100110
100220
100300
100420
100500
1006ENDCHAR
1007STARTCHAR @
1008ENCODING 64
1009SWIDTH 1 0
1010DWIDTH 5 0
1011BBX 5 8 0 -1
1012BITMAP
101330
101448
101598
1016a8
1017a8
101890
101940
102030
1021ENDCHAR
1022STARTCHAR A
1023ENCODING 65
1024SWIDTH 1 0
1025DWIDTH 5 0
1026BBX 5 8 0 -1
1027BITMAP
102800
102930
103048
103148
103278
103348
103448
103500
1036ENDCHAR
1037STARTCHAR B
1038ENCODING 66
1039SWIDTH 1 0
1040DWIDTH 5 0
1041BBX 5 8 0 -1
1042BITMAP
104300
104470
104548
104670
104748
104848
104970
105000
1051ENDCHAR
1052STARTCHAR C
1053ENCODING 67
1054SWIDTH 1 0
1055DWIDTH 5 0
1056BBX 5 8 0 -1
1057BITMAP
105800
105930
106048
106140
106240
106348
106430
106500
1066ENDCHAR
1067STARTCHAR D
1068ENCODING 68
1069SWIDTH 1 0
1070DWIDTH 5 0
1071BBX 5 8 0 -1
1072BITMAP
107300
107470
107548
107648
107748
107848
107970
108000
1081ENDCHAR
1082STARTCHAR E
1083ENCODING 69
1084SWIDTH 1 0
1085DWIDTH 5 0
1086BBX 5 8 0 -1
1087BITMAP
108800
108978
109040
109170
109240
109340
109478
109500
1096ENDCHAR
1097STARTCHAR F
1098ENCODING 70
1099SWIDTH 1 0
1100DWIDTH 5 0
1101BBX 5 8 0 -1
1102BITMAP
110300
110478
110540
110670
110740
110840
110940
111000
1111ENDCHAR
1112STARTCHAR G
1113ENCODING 71
1114SWIDTH 1 0
1115DWIDTH 5 0
1116BBX 5 8 0 -1
1117BITMAP
111800
111930
112048
112140
112258
112348
112430
112500
1126ENDCHAR
1127STARTCHAR H
1128ENCODING 72
1129SWIDTH 1 0
1130DWIDTH 5 0
1131BBX 5 8 0 -1
1132BITMAP
113300
113448
113548
113678
113748
113848
113948
114000
1141ENDCHAR
1142STARTCHAR I
1143ENCODING 73
1144SWIDTH 1 0
1145DWIDTH 5 0
1146BBX 5 8 0 -1
1147BITMAP
114800
114970
115020
115120
115220
115320
115470
115500
1156ENDCHAR
1157STARTCHAR J
1158ENCODING 74
1159SWIDTH 1 0
1160DWIDTH 5 0
1161BBX 5 8 0 -1
1162BITMAP
116300
116438
116508
116608
116708
116848
116930
117000
1171ENDCHAR
1172STARTCHAR K
1173ENCODING 75
1174SWIDTH 1 0
1175DWIDTH 5 0
1176BBX 5 8 0 -1
1177BITMAP
117800
117948
118050
118160
118250
118350
118448
118500
1186ENDCHAR
1187STARTCHAR L
1188ENCODING 76
1189SWIDTH 1 0
1190DWIDTH 5 0
1191BBX 5 8 0 -1
1192BITMAP
119300
119440
119540
119640
119740
119840
119970
120000
1201ENDCHAR
1202STARTCHAR M
1203ENCODING 77
1204SWIDTH 1 0
1205DWIDTH 5 0
1206BBX 5 8 0 -1
1207BITMAP
120800
120948
121078
121178
121248
121348
121448
121500
1216ENDCHAR
1217STARTCHAR N
1218ENCODING 78
1219SWIDTH 1 0
1220DWIDTH 5 0
1221BBX 5 8 0 -1
1222BITMAP
122300
122448
122568
122678
122758
122858
122948
123000
1231ENDCHAR
1232STARTCHAR O
1233ENCODING 79
1234SWIDTH 1 0
1235DWIDTH 5 0
1236BBX 5 8 0 -1
1237BITMAP
123800
123930
124048
124148
124248
124348
124430
124500
1246ENDCHAR
1247STARTCHAR P
1248ENCODING 80
1249SWIDTH 1 0
1250DWIDTH 5 0
1251BBX 5 8 0 -1
1252BITMAP
125300
125470
125548
125648
125770
125840
125940
126000
1261ENDCHAR
1262STARTCHAR Q
1263ENCODING 81
1264SWIDTH 1 0
1265DWIDTH 5 0
1266BBX 5 8 0 -1
1267BITMAP
126800
126930
127048
127148
127268
127358
127430
127508
1276ENDCHAR
1277STARTCHAR R
1278ENCODING 82
1279SWIDTH 1 0
1280DWIDTH 5 0
1281BBX 5 8 0 -1
1282BITMAP
128300
128470
128548
128648
128770
128858
128948
129000
1291ENDCHAR
1292STARTCHAR S
1293ENCODING 83
1294SWIDTH 1 0
1295DWIDTH 5 0
1296BBX 5 8 0 -1
1297BITMAP
129800
129930
130048
130120
130210
130348
130430
130500
1306ENDCHAR
1307STARTCHAR T
1308ENCODING 84
1309SWIDTH 1 0
1310DWIDTH 5 0
1311BBX 5 8 0 -1
1312BITMAP
131300
1314f8
131520
131620
131720
131820
131920
132000
1321ENDCHAR
1322STARTCHAR U
1323ENCODING 85
1324SWIDTH 1 0
1325DWIDTH 5 0
1326BBX 5 8 0 -1
1327BITMAP
132800
132948
133048
133148
133248
133348
133430
133500
1336ENDCHAR
1337STARTCHAR V
1338ENCODING 86
1339SWIDTH 1 0
1340DWIDTH 5 0
1341BBX 5 8 0 -1
1342BITMAP
134300
134448
134548
134648
134748
134830
134930
135000
1351ENDCHAR
1352STARTCHAR W
1353ENCODING 87
1354SWIDTH 1 0
1355DWIDTH 5 0
1356BBX 5 8 0 -1
1357BITMAP
135800
135948
136048
136148
136278
136378
136448
136500
1366ENDCHAR
1367STARTCHAR X
1368ENCODING 88
1369SWIDTH 1 0
1370DWIDTH 5 0
1371BBX 5 8 0 -1
1372BITMAP
137300
137448
137548
137630
137730
137848
137948
138000
1381ENDCHAR
1382STARTCHAR Y
1383ENCODING 89
1384SWIDTH 1 0
1385DWIDTH 5 0
1386BBX 5 8 0 -1
1387BITMAP
138800
138988
139088
139150
139220
139320
139420
139500
1396ENDCHAR
1397STARTCHAR Z
1398ENCODING 90
1399SWIDTH 1 0
1400DWIDTH 5 0
1401BBX 5 8 0 -1
1402BITMAP
140300
140478
140508
140610
140720
140840
140978
141000
1411ENDCHAR
1412STARTCHAR [
1413ENCODING 91
1414SWIDTH 1 0
1415DWIDTH 5 0
1416BBX 5 8 0 -1
1417BITMAP
141800
141970
142040
142140
142240
142340
142470
142500
1426ENDCHAR
1427STARTCHAR \
1428ENCODING 92
1429SWIDTH 1 0
1430DWIDTH 5 0
1431BBX 5 8 0 -1
1432BITMAP
143300
143440
143540
143620
143710
143808
143908
144000
1441ENDCHAR
1442STARTCHAR ]
1443ENCODING 93
1444SWIDTH 1 0
1445DWIDTH 5 0
1446BBX 5 8 0 -1
1447BITMAP
144800
144970
145010
145110
145210
145310
145470
145500
1456ENDCHAR
1457STARTCHAR ^
1458ENCODING 94
1459SWIDTH 1 0
1460DWIDTH 5 0
1461BBX 5 8 0 -1
1462BITMAP
146300
146420
146550
146650
146700
146800
146900
147000
1471ENDCHAR
1472STARTCHAR _
1473ENCODING 95
1474SWIDTH 1 0
1475DWIDTH 5 0
1476BBX 5 8 0 -1
1477BITMAP
147800
147900
148000
148100
148200
148300
148400
148578
1486ENDCHAR
1487STARTCHAR `
1488ENCODING 96
1489SWIDTH 1 0
1490DWIDTH 5 0
1491BBX 5 8 0 -1
1492BITMAP
149300
149460
149540
149620
149700
149800
149900
150000
1501ENDCHAR
1502STARTCHAR a
1503ENCODING 97
1504SWIDTH 1 0
1505DWIDTH 5 0
1506BBX 5 8 0 -1
1507BITMAP
150800
150900
151000
151128
151258
151358
151428
151500
1516ENDCHAR
1517STARTCHAR b
1518ENCODING 98
1519SWIDTH 1 0
1520DWIDTH 5 0
1521BBX 5 8 0 -1
1522BITMAP
152300
152440
152540
152670
152748
152848
152970
153000
1531ENDCHAR
1532STARTCHAR c
1533ENCODING 99
1534SWIDTH 1 0
1535DWIDTH 5 0
1536BBX 5 8 0 -1
1537BITMAP
153800
153900
154000
154130
154240
154340
154430
154500
1546ENDCHAR
1547STARTCHAR d
1548ENCODING 100
1549SWIDTH 1 0
1550DWIDTH 5 0
1551BBX 5 8 0 -1
1552BITMAP
155300
155408
155508
155628
155758
155858
155928
156000
1561ENDCHAR
1562STARTCHAR e
1563ENCODING 101
1564SWIDTH 1 0
1565DWIDTH 5 0
1566BBX 5 8 0 -1
1567BITMAP
156800
156900
157000
157130
157278
157340
157430
157500
1576ENDCHAR
1577STARTCHAR f
1578ENCODING 102
1579SWIDTH 1 0
1580DWIDTH 5 0
1581BBX 5 8 0 -1
1582BITMAP
158300
158410
158528
158620
158770
158820
158920
159000
1591ENDCHAR
1592STARTCHAR g
1593ENCODING 103
1594SWIDTH 1 0
1595DWIDTH 5 0
1596BBX 5 8 0 -1
1597BITMAP
159800
159900
160000
160130
160248
160338
160408
160530
1606ENDCHAR
1607STARTCHAR h
1608ENCODING 104
1609SWIDTH 1 0
1610DWIDTH 5 0
1611BBX 5 8 0 -1
1612BITMAP
161300
161440
161540
161670
161748
161848
161948
162000
1621ENDCHAR
1622STARTCHAR i
1623ENCODING 105
1624SWIDTH 1 0
1625DWIDTH 5 0
1626BBX 5 8 0 -1
1627BITMAP
162800
162920
163000
163160
163220
163320
163470
163500
1636ENDCHAR
1637STARTCHAR j
1638ENCODING 106
1639SWIDTH 1 0
1640DWIDTH 5 0
1641BBX 5 8 0 -1
1642BITMAP
164300
164410
164500
164610
164710
164810
164950
165020
1651ENDCHAR
1652STARTCHAR k
1653ENCODING 107
1654SWIDTH 1 0
1655DWIDTH 5 0
1656BBX 5 8 0 -1
1657BITMAP
165800
165940
166040
166148
166270
166348
166448
166500
1666ENDCHAR
1667STARTCHAR l
1668ENCODING 108
1669SWIDTH 1 0
1670DWIDTH 5 0
1671BBX 5 8 0 -1
1672BITMAP
167300
167460
167520
167620
167720
167820
167970
168000
1681ENDCHAR
1682STARTCHAR m
1683ENCODING 109
1684SWIDTH 1 0
1685DWIDTH 5 0
1686BBX 5 8 0 -1
1687BITMAP
168800
168900
169000
169150
1692a8
1693a8
169488
169500
1696ENDCHAR
1697STARTCHAR n
1698ENCODING 110
1699SWIDTH 1 0
1700DWIDTH 5 0
1701BBX 5 8 0 -1
1702BITMAP
170300
170400
170500
170670
170748
170848
170948
171000
1711ENDCHAR
1712STARTCHAR o
1713ENCODING 111
1714SWIDTH 1 0
1715DWIDTH 5 0
1716BBX 5 8 0 -1
1717BITMAP
171800
171900
172000
172130
172248
172348
172430
172500
1726ENDCHAR
1727STARTCHAR p
1728ENCODING 112
1729SWIDTH 1 0
1730DWIDTH 5 0
1731BBX 5 8 0 -1
1732BITMAP
173300
173400
173500
173670
173748
173870
173940
174040
1741ENDCHAR
1742STARTCHAR q
1743ENCODING 113
1744SWIDTH 1 0
1745DWIDTH 5 0
1746BBX 5 8 0 -1
1747BITMAP
174800
174900
175000
175138
175248
175338
175408
175508
1756ENDCHAR
1757STARTCHAR r
1758ENCODING 114
1759SWIDTH 1 0
1760DWIDTH 5 0
1761BBX 5 8 0 -1
1762BITMAP
176300
176400
176500
176650
176768
176840
176940
177000
1771ENDCHAR
1772STARTCHAR s
1773ENCODING 115
1774SWIDTH 1 0
1775DWIDTH 5 0
1776BBX 5 8 0 -1
1777BITMAP
177800
177900
178000
178170
178260
178310
178470
178500
1786ENDCHAR
1787STARTCHAR t
1788ENCODING 116
1789SWIDTH 1 0
1790DWIDTH 5 0
1791BBX 5 8 0 -1
1792BITMAP
179300
179420
179520
179670
179720
179828
179910
180000
1801ENDCHAR
1802STARTCHAR u
1803ENCODING 117
1804SWIDTH 1 0
1805DWIDTH 5 0
1806BBX 5 8 0 -1
1807BITMAP
180800
180900
181000
181148
181248
181348
181438
181500
1816ENDCHAR
1817STARTCHAR v
1818ENCODING 118
1819SWIDTH 1 0
1820DWIDTH 5 0
1821BBX 5 8 0 -1
1822BITMAP
182300
182400
182500
182650
182750
182850
182920
183000
1831ENDCHAR
1832STARTCHAR w
1833ENCODING 119
1834SWIDTH 1 0
1835DWIDTH 5 0
1836BBX 5 8 0 -1
1837BITMAP
183800
183900
184000
184188
1842a8
1843a8
184470
184500
1846ENDCHAR
1847STARTCHAR x
1848ENCODING 120
1849SWIDTH 1 0
1850DWIDTH 5 0
1851BBX 5 8 0 -1
1852BITMAP
185300
185400
185500
185648
185730
185830
185948
186000
1861ENDCHAR
1862STARTCHAR y
1863ENCODING 121
1864SWIDTH 1 0
1865DWIDTH 5 0
1866BBX 5 8 0 -1
1867BITMAP
186800
186900
187000
187148
187248
187338
187448
187530
1876ENDCHAR
1877STARTCHAR z
1878ENCODING 122
1879SWIDTH 1 0
1880DWIDTH 5 0
1881BBX 5 8 0 -1
1882BITMAP
188300
188400
188500
188678
188710
188820
188978
189000
1891ENDCHAR
1892STARTCHAR {
1893ENCODING 123
1894SWIDTH 1 0
1895DWIDTH 5 0
1896BBX 5 8 0 -1
1897BITMAP
189818
189920
190010
190160
190210
190320
190418
190500
1906ENDCHAR
1907STARTCHAR |
1908ENCODING 124
1909SWIDTH 1 0
1910DWIDTH 5 0
1911BBX 5 8 0 -1
1912BITMAP
191300
191420
191520
191620
191720
191820
191920
192000
1921ENDCHAR
1922STARTCHAR }
1923ENCODING 125
1924SWIDTH 1 0
1925DWIDTH 5 0
1926BBX 5 8 0 -1
1927BITMAP
192860
192910
193020
193118
193220
193310
193460
193500
1936ENDCHAR
1937STARTCHAR ~
1938ENCODING 126
1939SWIDTH 1 0
1940DWIDTH 5 0
1941BBX 5 8 0 -1
1942BITMAP
194300
194428
194550
194600
194700
194800
194900
195000
1951ENDCHAR
1952STARTCHAR C177
1953ENCODING 127
1954SWIDTH 1 0
1955DWIDTH 5 0
1956BBX 5 8 0 -1
1957BITMAP
195800
195900
196000
196100
196200
196300
196400
196500
1966ENDCHAR
1967ENDFONT
diff --git a/firmware/X5x8.c b/firmware/X5x8.c
new file mode 100644
index 0000000000..6422cc892d
--- /dev/null
+++ b/firmware/X5x8.c
@@ -0,0 +1,2853 @@
1/* Generated by convbdf on Tue Sep 10 11:31:14 MDT 2002. */
2#include "config.h"
3#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR)
4#include "font.h"
5
6/* Font information:
7
8 name: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO646.1991-IRV
9 pixel size: 8
10 ascent: 7
11 descent: 1
12*/
13
14/* Font character bitmap data. */
15static MWIMAGEBITS X5x8_bits[] = {
16
17/* Character (0x00):
18 bbw=5, bbh=8, bbx=0, bby=-1, width=5
19 +----------------+
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 +----------------+ */
290x0000,
300x0000,
310x0000,
320x0000,
330x0000,
340x0000,
350x0000,
360x0000,
37
38/* Character (0x01):
39 bbw=5, bbh=8, bbx=0, bby=-1, width=5
40 +----------------+
41 | |
42 | * |
43 | *** |
44 |***** |
45 | *** |
46 | * |
47 | |
48 | |
49 +----------------+ */
500x0000,
510x2000,
520x7000,
530xf800,
540x7000,
550x2000,
560x0000,
570x0000,
58
59/* Character (0x02):
60 bbw=5, bbh=8, bbx=0, bby=-1, width=5
61 +----------------+
62 | |
63 | * * |
64 | * * |
65 | * * |
66 | * * |
67 | * * |
68 | * * |
69 | * * |
70 +----------------+ */
710x0000,
720x2800,
730x5000,
740x2800,
750x5000,
760x2800,
770x5000,
780x2800,
79
80/* Character (0x03):
81 bbw=5, bbh=8, bbx=0, bby=-1, width=5
82 +----------------+
83 | * * |
84 | * * |
85 | *** |
86 | * * |
87 | * * |
88 | *** |
89 | * |
90 | * |
91 +----------------+ */
920x5000,
930x5000,
940x7000,
950x5000,
960x5000,
970x3800,
980x1000,
990x1000,
100
101/* Character (0x04):
102 bbw=5, bbh=8, bbx=0, bby=-1, width=5
103 +----------------+
104 |*** |
105 |* |
106 |** |
107 |* *** |
108 |* * |
109 | ** |
110 | * |
111 | * |
112 +----------------+ */
1130xe000,
1140x8000,
1150xc000,
1160xb800,
1170xa000,
1180x3000,
1190x2000,
1200x2000,
121
122/* Character (0x05):
123 bbw=5, bbh=8, bbx=0, bby=-1, width=5
124 +----------------+
125 | ** |
126 |* |
127 | ** |
128 | |
129 | ** |
130 | * * |
131 | ** |
132 | * * |
133 +----------------+ */
1340x6000,
1350x8000,
1360x6000,
1370x0000,
1380x3000,
1390x2800,
1400x3000,
1410x2800,
142
143/* Character (0x06):
144 bbw=5, bbh=8, bbx=0, bby=-1, width=5
145 +----------------+
146 |* |
147 |* |
148 |* |
149 |*** |
150 | *** |
151 | * |
152 | ** |
153 | * |
154 +----------------+ */
1550x8000,
1560x8000,
1570x8000,
1580xe000,
1590x3800,
1600x2000,
1610x3000,
1620x2000,
163
164/* Character (0x07):
165 bbw=5, bbh=8, bbx=0, bby=-1, width=5
166 +----------------+
167 | |
168 | * |
169 | * * |
170 | * |
171 | |
172 | |
173 | |
174 | |
175 +----------------+ */
1760x0000,
1770x2000,
1780x5000,
1790x2000,
1800x0000,
1810x0000,
1820x0000,
1830x0000,
184
185/* Character (0x08):
186 bbw=5, bbh=8, bbx=0, bby=-1, width=5
187 +----------------+
188 | |
189 | * |
190 | *** |
191 | * |
192 | |
193 | *** |
194 | |
195 | |
196 +----------------+ */
1970x0000,
1980x2000,
1990x7000,
2000x2000,
2010x0000,
2020x7000,
2030x0000,
2040x0000,
205
206/* Character (0x09):
207 bbw=5, bbh=8, bbx=0, bby=-1, width=5
208 +----------------+
209 |* * |
210 |** * |
211 |* ** |
212 |* * |
213 | * |
214 | * |
215 | * |
216 | *** |
217 +----------------+ */
2180x9000,
2190xd000,
2200xb000,
2210x9000,
2220x2000,
2230x2000,
2240x2000,
2250x3800,
226
227/* Character (0x0a):
228 bbw=5, bbh=8, bbx=0, bby=-1, width=5
229 +----------------+
230 |* * |
231 |* * |
232 |* * |
233 | * |
234 | *** |
235 | * |
236 | * |
237 | * |
238 +----------------+ */
2390xa000,
2400xa000,
2410xa000,
2420x4000,
2430x3800,
2440x1000,
2450x1000,
2460x1000,
247
248/* Character (0x0b):
249 bbw=5, bbh=8, bbx=0, bby=-1, width=5
250 +----------------+
251 | * |
252 | * |
253 | * |
254 |*** |
255 | |
256 | |
257 | |
258 | |
259 +----------------+ */
2600x2000,
2610x2000,
2620x2000,
2630xe000,
2640x0000,
2650x0000,
2660x0000,
2670x0000,
268
269/* Character (0x0c):
270 bbw=5, bbh=8, bbx=0, bby=-1, width=5
271 +----------------+
272 | |
273 | |
274 | |
275 |*** |
276 | * |
277 | * |
278 | * |
279 | * |
280 +----------------+ */
2810x0000,
2820x0000,
2830x0000,
2840xe000,
2850x2000,
2860x2000,
2870x2000,
2880x2000,
289
290/* Character (0x0d):
291 bbw=5, bbh=8, bbx=0, bby=-1, width=5
292 +----------------+
293 | |
294 | |
295 | |
296 | *** |
297 | * |
298 | * |
299 | * |
300 | * |
301 +----------------+ */
3020x0000,
3030x0000,
3040x0000,
3050x3800,
3060x2000,
3070x2000,
3080x2000,
3090x2000,
310
311/* Character (0x0e):
312 bbw=5, bbh=8, bbx=0, bby=-1, width=5
313 +----------------+
314 | * |
315 | * |
316 | * |
317 | *** |
318 | |
319 | |
320 | |
321 | |
322 +----------------+ */
3230x2000,
3240x2000,
3250x2000,
3260x3800,
3270x0000,
3280x0000,
3290x0000,
3300x0000,
331
332/* Character (0x0f):
333 bbw=5, bbh=8, bbx=0, bby=-1, width=5
334 +----------------+
335 | * |
336 | * |
337 | * |
338 |***** |
339 | * |
340 | * |
341 | * |
342 | * |
343 +----------------+ */
3440x2000,
3450x2000,
3460x2000,
3470xf800,
3480x2000,
3490x2000,
3500x2000,
3510x2000,
352
353/* Character (0x10):
354 bbw=5, bbh=8, bbx=0, bby=-1, width=5
355 +----------------+
356 | |
357 |***** |
358 | |
359 | |
360 | |
361 | |
362 | |
363 | |
364 +----------------+ */
3650x0000,
3660xf800,
3670x0000,
3680x0000,
3690x0000,
3700x0000,
3710x0000,
3720x0000,
373
374/* Character (0x11):
375 bbw=5, bbh=8, bbx=0, bby=-1, width=5
376 +----------------+
377 | |
378 | |
379 |***** |
380 | |
381 | |
382 | |
383 | |
384 | |
385 +----------------+ */
3860x0000,
3870x0000,
3880xf800,
3890x0000,
3900x0000,
3910x0000,
3920x0000,
3930x0000,
394
395/* Character (0x12):
396 bbw=5, bbh=8, bbx=0, bby=-1, width=5
397 +----------------+
398 | |
399 | |
400 | |
401 |***** |
402 | |
403 | |
404 | |
405 | |
406 +----------------+ */
4070x0000,
4080x0000,
4090x0000,
4100xf800,
4110x0000,
4120x0000,
4130x0000,
4140x0000,
415
416/* Character (0x13):
417 bbw=5, bbh=8, bbx=0, bby=-1, width=5
418 +----------------+
419 | |
420 | |
421 | |
422 | |
423 |***** |
424 | |
425 | |
426 | |
427 +----------------+ */
4280x0000,
4290x0000,
4300x0000,
4310x0000,
4320xf800,
4330x0000,
4340x0000,
4350x0000,
436
437/* Character (0x14):
438 bbw=5, bbh=8, bbx=0, bby=-1, width=5
439 +----------------+
440 | |
441 | |
442 | |
443 | |
444 | |
445 |***** |
446 | |
447 | |
448 +----------------+ */
4490x0000,
4500x0000,
4510x0000,
4520x0000,
4530x0000,
4540xf800,
4550x0000,
4560x0000,
457
458/* Character (0x15):
459 bbw=5, bbh=8, bbx=0, bby=-1, width=5
460 +----------------+
461 | * |
462 | * |
463 | * |
464 | *** |
465 | * |
466 | * |
467 | * |
468 | * |
469 +----------------+ */
4700x2000,
4710x2000,
4720x2000,
4730x3800,
4740x2000,
4750x2000,
4760x2000,
4770x2000,
478
479/* Character (0x16):
480 bbw=5, bbh=8, bbx=0, bby=-1, width=5
481 +----------------+
482 | * |
483 | * |
484 | * |
485 |*** |
486 | * |
487 | * |
488 | * |
489 | * |
490 +----------------+ */
4910x2000,
4920x2000,
4930x2000,
4940xe000,
4950x2000,
4960x2000,
4970x2000,
4980x2000,
499
500/* Character (0x17):
501 bbw=5, bbh=8, bbx=0, bby=-1, width=5
502 +----------------+
503 | * |
504 | * |
505 | * |
506 |***** |
507 | |
508 | |
509 | |
510 | |
511 +----------------+ */
5120x2000,
5130x2000,
5140x2000,
5150xf800,
5160x0000,
5170x0000,
5180x0000,
5190x0000,
520
521/* Character (0x18):
522 bbw=5, bbh=8, bbx=0, bby=-1, width=5
523 +----------------+
524 | |
525 | |
526 | |
527 |***** |
528 | * |
529 | * |
530 | * |
531 | * |
532 +----------------+ */
5330x0000,
5340x0000,
5350x0000,
5360xf800,
5370x2000,
5380x2000,
5390x2000,
5400x2000,
541
542/* Character (0x19):
543 bbw=5, bbh=8, bbx=0, bby=-1, width=5
544 +----------------+
545 | * |
546 | * |
547 | * |
548 | * |
549 | * |
550 | * |
551 | * |
552 | * |
553 +----------------+ */
5540x2000,
5550x2000,
5560x2000,
5570x2000,
5580x2000,
5590x2000,
5600x2000,
5610x2000,
562
563/* Character (0x1a):
564 bbw=5, bbh=8, bbx=0, bby=-1, width=5
565 +----------------+
566 | |
567 | * |
568 | * |
569 | * |
570 | * |
571 | * |
572 | *** |
573 | |
574 +----------------+ */
5750x0000,
5760x1000,
5770x2000,
5780x4000,
5790x2000,
5800x1000,
5810x7000,
5820x0000,
583
584/* Character (0x1b):
585 bbw=5, bbh=8, bbx=0, bby=-1, width=5
586 +----------------+
587 | |
588 | * |
589 | * |
590 | * |
591 | * |
592 | * |
593 | *** |
594 | |
595 +----------------+ */
5960x0000,
5970x4000,
5980x2000,
5990x1000,
6000x2000,
6010x4000,
6020x7000,
6030x0000,
604
605/* Character (0x1c):
606 bbw=5, bbh=8, bbx=0, bby=-1, width=5
607 +----------------+
608 | |
609 |***** |
610 | * * |
611 | * * |
612 | * * |
613 | * * |
614 | |
615 | |
616 +----------------+ */
6170x0000,
6180xf800,
6190x5000,
6200x5000,
6210x5000,
6220x5000,
6230x0000,
6240x0000,
625
626/* Character (0x1d):
627 bbw=5, bbh=8, bbx=0, bby=-1, width=5
628 +----------------+
629 | |
630 | * |
631 |***** |
632 | * |
633 |***** |
634 | * |
635 | |
636 | |
637 +----------------+ */
6380x0000,
6390x1000,
6400xf800,
6410x2000,
6420xf800,
6430x4000,
6440x0000,
6450x0000,
646
647/* Character (0x1e):
648 bbw=5, bbh=8, bbx=0, bby=-1, width=5
649 +----------------+
650 | |
651 | ** |
652 | * * |
653 |*** |
654 | * |
655 | * * |
656 |* ** |
657 | |
658 +----------------+ */
6590x0000,
6600x3000,
6610x4800,
6620xe000,
6630x4000,
6640x4800,
6650xb000,
6660x0000,
667
668/* Character (0x1f):
669 bbw=5, bbh=8, bbx=0, bby=-1, width=5
670 +----------------+
671 | |
672 | |
673 | |
674 | * |
675 | |
676 | |
677 | |
678 | |
679 +----------------+ */
6800x0000,
6810x0000,
6820x0000,
6830x2000,
6840x0000,
6850x0000,
6860x0000,
6870x0000,
688
689/* Character (0x20):
690 bbw=5, bbh=8, bbx=0, bby=-1, width=5
691 +----------------+
692 | |
693 | |
694 | |
695 | |
696 | |
697 | |
698 | |
699 | |
700 +----------------+ */
7010x0000,
7020x0000,
7030x0000,
7040x0000,
7050x0000,
7060x0000,
7070x0000,
7080x0000,
709
710/* Character (0x21):
711 bbw=5, bbh=8, bbx=0, bby=-1, width=5
712 +----------------+
713 | |
714 | * |
715 | * |
716 | * |
717 | * |
718 | |
719 | * |
720 | |
721 +----------------+ */
7220x0000,
7230x2000,
7240x2000,
7250x2000,
7260x2000,
7270x0000,
7280x2000,
7290x0000,
730
731/* Character (0x22):
732 bbw=5, bbh=8, bbx=0, bby=-1, width=5
733 +----------------+
734 | |
735 | * * |
736 | * * |
737 | * * |
738 | |
739 | |
740 | |
741 | |
742 +----------------+ */
7430x0000,
7440x5000,
7450x5000,
7460x5000,
7470x0000,
7480x0000,
7490x0000,
7500x0000,
751
752/* Character (0x23):
753 bbw=5, bbh=8, bbx=0, bby=-1, width=5
754 +----------------+
755 | * * |
756 | * * |
757 |***** |
758 | * * |
759 |***** |
760 | * * |
761 | * * |
762 | |
763 +----------------+ */
7640x5000,
7650x5000,
7660xf800,
7670x5000,
7680xf800,
7690x5000,
7700x5000,
7710x0000,
772
773/* Character (0x24):
774 bbw=5, bbh=8, bbx=0, bby=-1, width=5
775 +----------------+
776 | * |
777 | *** |
778 |* * |
779 | *** |
780 | * * |
781 | *** |
782 | * |
783 | |
784 +----------------+ */
7850x2000,
7860x7000,
7870xa000,
7880x7000,
7890x2800,
7900x7000,
7910x2000,
7920x0000,
793
794/* Character (0x25):
795 bbw=5, bbh=8, bbx=0, bby=-1, width=5
796 +----------------+
797 | |
798 | * |
799 | * * |
800 | * |
801 | * * |
802 | * |
803 | |
804 | |
805 +----------------+ */
8060x0000,
8070x4000,
8080x5000,
8090x2000,
8100x5000,
8110x1000,
8120x0000,
8130x0000,
814
815/* Character (0x26):
816 bbw=5, bbh=8, bbx=0, bby=-1, width=5
817 +----------------+
818 | * |
819 | * * |
820 | * * |
821 | * |
822 | * * |
823 | * * |
824 | * * |
825 | |
826 +----------------+ */
8270x2000,
8280x5000,
8290x5000,
8300x2000,
8310x5000,
8320x5000,
8330x2800,
8340x0000,
835
836/* Character (0x27):
837 bbw=5, bbh=8, bbx=0, bby=-1, width=5
838 +----------------+
839 | |
840 | ** |
841 | * |
842 | * |
843 | |
844 | |
845 | |
846 | |
847 +----------------+ */
8480x0000,
8490x3000,
8500x2000,
8510x4000,
8520x0000,
8530x0000,
8540x0000,
8550x0000,
856
857/* Character (0x28):
858 bbw=5, bbh=8, bbx=0, bby=-1, width=5
859 +----------------+
860 | |
861 | * |
862 | * |
863 | * |
864 | * |
865 | * |
866 | |
867 | |
868 +----------------+ */
8690x0000,
8700x1000,
8710x2000,
8720x2000,
8730x2000,
8740x1000,
8750x0000,
8760x0000,
877
878/* Character (0x29):
879 bbw=5, bbh=8, bbx=0, bby=-1, width=5
880 +----------------+
881 | |
882 | * |
883 | * |
884 | * |
885 | * |
886 | * |
887 | |
888 | |
889 +----------------+ */
8900x0000,
8910x4000,
8920x2000,
8930x2000,
8940x2000,
8950x4000,
8960x0000,
8970x0000,
898
899/* Character (0x2a):
900 bbw=5, bbh=8, bbx=0, bby=-1, width=5
901 +----------------+
902 | |
903 | * * |
904 | ** |
905 | **** |
906 | ** |
907 | * * |
908 | |
909 | |
910 +----------------+ */
9110x0000,
9120x4800,
9130x3000,
9140x7800,
9150x3000,
9160x4800,
9170x0000,
9180x0000,
919
920/* Character (0x2b):
921 bbw=5, bbh=8, bbx=0, bby=-1, width=5
922 +----------------+
923 | |
924 | * |
925 | * |
926 |***** |
927 | * |
928 | * |
929 | |
930 | |
931 +----------------+ */
9320x0000,
9330x2000,
9340x2000,
9350xf800,
9360x2000,
9370x2000,
9380x0000,
9390x0000,
940
941/* Character (0x2c):
942 bbw=5, bbh=8, bbx=0, bby=-1, width=5
943 +----------------+
944 | |
945 | |
946 | |
947 | |
948 | ** |
949 | * |
950 | * |
951 | |
952 +----------------+ */
9530x0000,
9540x0000,
9550x0000,
9560x0000,
9570x3000,
9580x2000,
9590x4000,
9600x0000,
961
962/* Character (0x2d):
963 bbw=5, bbh=8, bbx=0, bby=-1, width=5
964 +----------------+
965 | |
966 | |
967 | |
968 | |
969 | **** |
970 | |
971 | |
972 | |
973 +----------------+ */
9740x0000,
9750x0000,
9760x0000,
9770x0000,
9780x7800,
9790x0000,
9800x0000,
9810x0000,
982
983/* Character (0x2e):
984 bbw=5, bbh=8, bbx=0, bby=-1, width=5
985 +----------------+
986 | |
987 | |
988 | |
989 | |
990 | * |
991 | *** |
992 | * |
993 | |
994 +----------------+ */
9950x0000,
9960x0000,
9970x0000,
9980x0000,
9990x2000,
10000x7000,
10010x2000,
10020x0000,
1003
1004/* Character (0x2f):
1005 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1006 +----------------+
1007 | |
1008 | * |
1009 | * |
1010 | * |
1011 | * |
1012 | * |
1013 | * |
1014 | |
1015 +----------------+ */
10160x0000,
10170x0800,
10180x0800,
10190x1000,
10200x2000,
10210x4000,
10220x4000,
10230x0000,
1024
1025/* Character (0x30):
1026 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1027 +----------------+
1028 | |
1029 | * |
1030 | * * |
1031 | * * |
1032 | * * |
1033 | * * |
1034 | * |
1035 | |
1036 +----------------+ */
10370x0000,
10380x2000,
10390x5000,
10400x5000,
10410x5000,
10420x5000,
10430x2000,
10440x0000,
1045
1046/* Character (0x31):
1047 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1048 +----------------+
1049 | |
1050 | * |
1051 | ** |
1052 | * |
1053 | * |
1054 | * |
1055 | *** |
1056 | |
1057 +----------------+ */
10580x0000,
10590x2000,
10600x6000,
10610x2000,
10620x2000,
10630x2000,
10640x7000,
10650x0000,
1066
1067/* Character (0x32):
1068 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1069 +----------------+
1070 | |
1071 | ** |
1072 | * * |
1073 | * |
1074 | ** |
1075 | * |
1076 | **** |
1077 | |
1078 +----------------+ */
10790x0000,
10800x3000,
10810x4800,
10820x0800,
10830x3000,
10840x4000,
10850x7800,
10860x0000,
1087
1088/* Character (0x33):
1089 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1090 +----------------+
1091 | |
1092 | ** |
1093 | * * |
1094 | * |
1095 | * |
1096 | * * |
1097 | ** |
1098 | |
1099 +----------------+ */
11000x0000,
11010x3000,
11020x4800,
11030x1000,
11040x0800,
11050x4800,
11060x3000,
11070x0000,
1108
1109/* Character (0x34):
1110 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1111 +----------------+
1112 | |
1113 | * |
1114 | ** |
1115 | * * |
1116 | **** |
1117 | * |
1118 | * |
1119 | |
1120 +----------------+ */
11210x0000,
11220x1000,
11230x3000,
11240x5000,
11250x7800,
11260x1000,
11270x1000,
11280x0000,
1129
1130/* Character (0x35):
1131 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1132 +----------------+
1133 | |
1134 | **** |
1135 | * |
1136 | *** |
1137 | * |
1138 | * * |
1139 | ** |
1140 | |
1141 +----------------+ */
11420x0000,
11430x7800,
11440x4000,
11450x7000,
11460x0800,
11470x4800,
11480x3000,
11490x0000,
1150
1151/* Character (0x36):
1152 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1153 +----------------+
1154 | |
1155 | ** |
1156 | * |
1157 | * * |
1158 | ** * |
1159 | * * |
1160 | ** |
1161 | |
1162 +----------------+ */
11630x0000,
11640x3000,
11650x4000,
11660x5000,
11670x6800,
11680x4800,
11690x3000,
11700x0000,
1171
1172/* Character (0x37):
1173 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1174 +----------------+
1175 | |
1176 | **** |
1177 | * |
1178 | * |
1179 | * |
1180 | * |
1181 | * |
1182 | |
1183 +----------------+ */
11840x0000,
11850x7800,
11860x0800,
11870x1000,
11880x1000,
11890x2000,
11900x2000,
11910x0000,
1192
1193/* Character (0x38):
1194 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1195 +----------------+
1196 | |
1197 | ** |
1198 | * * |
1199 | ** |
1200 | * * |
1201 | * * |
1202 | ** |
1203 | |
1204 +----------------+ */
12050x0000,
12060x3000,
12070x4800,
12080x3000,
12090x4800,
12100x4800,
12110x3000,
12120x0000,
1213
1214/* Character (0x39):
1215 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1216 +----------------+
1217 | |
1218 | ** |
1219 | * * |
1220 | * ** |
1221 | * * |
1222 | * |
1223 | ** |
1224 | |
1225 +----------------+ */
12260x0000,
12270x3000,
12280x4800,
12290x5800,
12300x2800,
12310x0800,
12320x3000,
12330x0000,
1234
1235/* Character (0x3a):
1236 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1237 +----------------+
1238 | |
1239 | ** |
1240 | ** |
1241 | |
1242 | ** |
1243 | ** |
1244 | |
1245 | |
1246 +----------------+ */
12470x0000,
12480x3000,
12490x3000,
12500x0000,
12510x3000,
12520x3000,
12530x0000,
12540x0000,
1255
1256/* Character (0x3b):
1257 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1258 +----------------+
1259 | |
1260 | ** |
1261 | ** |
1262 | |
1263 | ** |
1264 | * |
1265 | * |
1266 | |
1267 +----------------+ */
12680x0000,
12690x3000,
12700x3000,
12710x0000,
12720x3000,
12730x2000,
12740x4000,
12750x0000,
1276
1277/* Character (0x3c):
1278 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1279 +----------------+
1280 | |
1281 | * |
1282 | * |
1283 | * |
1284 | * |
1285 | * |
1286 | * |
1287 | |
1288 +----------------+ */
12890x0000,
12900x1000,
12910x2000,
12920x4000,
12930x4000,
12940x2000,
12950x1000,
12960x0000,
1297
1298/* Character (0x3d):
1299 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1300 +----------------+
1301 | |
1302 | |
1303 | *** |
1304 | |
1305 | *** |
1306 | |
1307 | |
1308 | |
1309 +----------------+ */
13100x0000,
13110x0000,
13120x7000,
13130x0000,
13140x7000,
13150x0000,
13160x0000,
13170x0000,
1318
1319/* Character (0x3e):
1320 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1321 +----------------+
1322 | |
1323 | * |
1324 | * |
1325 | * |
1326 | * |
1327 | * |
1328 | * |
1329 | |
1330 +----------------+ */
13310x0000,
13320x4000,
13330x2000,
13340x1000,
13350x1000,
13360x2000,
13370x4000,
13380x0000,
1339
1340/* Character (0x3f):
1341 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1342 +----------------+
1343 | |
1344 | * |
1345 | * * |
1346 | * |
1347 | * |
1348 | |
1349 | * |
1350 | |
1351 +----------------+ */
13520x0000,
13530x2000,
13540x5000,
13550x1000,
13560x2000,
13570x0000,
13580x2000,
13590x0000,
1360
1361/* Character (0x40):
1362 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1363 +----------------+
1364 | ** |
1365 | * * |
1366 |* ** |
1367 |* * * |
1368 |* * * |
1369 |* * |
1370 | * |
1371 | ** |
1372 +----------------+ */
13730x3000,
13740x4800,
13750x9800,
13760xa800,
13770xa800,
13780x9000,
13790x4000,
13800x3000,
1381
1382/* Character (0x41):
1383 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1384 +----------------+
1385 | |
1386 | ** |
1387 | * * |
1388 | * * |
1389 | **** |
1390 | * * |
1391 | * * |
1392 | |
1393 +----------------+ */
13940x0000,
13950x3000,
13960x4800,
13970x4800,
13980x7800,
13990x4800,
14000x4800,
14010x0000,
1402
1403/* Character (0x42):
1404 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1405 +----------------+
1406 | |
1407 | *** |
1408 | * * |
1409 | *** |
1410 | * * |
1411 | * * |
1412 | *** |
1413 | |
1414 +----------------+ */
14150x0000,
14160x7000,
14170x4800,
14180x7000,
14190x4800,
14200x4800,
14210x7000,
14220x0000,
1423
1424/* Character (0x43):
1425 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1426 +----------------+
1427 | |
1428 | ** |
1429 | * * |
1430 | * |
1431 | * |
1432 | * * |
1433 | ** |
1434 | |
1435 +----------------+ */
14360x0000,
14370x3000,
14380x4800,
14390x4000,
14400x4000,
14410x4800,
14420x3000,
14430x0000,
1444
1445/* Character (0x44):
1446 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1447 +----------------+
1448 | |
1449 | *** |
1450 | * * |
1451 | * * |
1452 | * * |
1453 | * * |
1454 | *** |
1455 | |
1456 +----------------+ */
14570x0000,
14580x7000,
14590x4800,
14600x4800,
14610x4800,
14620x4800,
14630x7000,
14640x0000,
1465
1466/* Character (0x45):
1467 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1468 +----------------+
1469 | |
1470 | **** |
1471 | * |
1472 | *** |
1473 | * |
1474 | * |
1475 | **** |
1476 | |
1477 +----------------+ */
14780x0000,
14790x7800,
14800x4000,
14810x7000,
14820x4000,
14830x4000,
14840x7800,
14850x0000,
1486
1487/* Character (0x46):
1488 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1489 +----------------+
1490 | |
1491 | **** |
1492 | * |
1493 | *** |
1494 | * |
1495 | * |
1496 | * |
1497 | |
1498 +----------------+ */
14990x0000,
15000x7800,
15010x4000,
15020x7000,
15030x4000,
15040x4000,
15050x4000,
15060x0000,
1507
1508/* Character (0x47):
1509 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1510 +----------------+
1511 | |
1512 | ** |
1513 | * * |
1514 | * |
1515 | * ** |
1516 | * * |
1517 | ** |
1518 | |
1519 +----------------+ */
15200x0000,
15210x3000,
15220x4800,
15230x4000,
15240x5800,
15250x4800,
15260x3000,
15270x0000,
1528
1529/* Character (0x48):
1530 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1531 +----------------+
1532 | |
1533 | * * |
1534 | * * |
1535 | **** |
1536 | * * |
1537 | * * |
1538 | * * |
1539 | |
1540 +----------------+ */
15410x0000,
15420x4800,
15430x4800,
15440x7800,
15450x4800,
15460x4800,
15470x4800,
15480x0000,
1549
1550/* Character (0x49):
1551 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1552 +----------------+
1553 | |
1554 | *** |
1555 | * |
1556 | * |
1557 | * |
1558 | * |
1559 | *** |
1560 | |
1561 +----------------+ */
15620x0000,
15630x7000,
15640x2000,
15650x2000,
15660x2000,
15670x2000,
15680x7000,
15690x0000,
1570
1571/* Character (0x4a):
1572 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1573 +----------------+
1574 | |
1575 | *** |
1576 | * |
1577 | * |
1578 | * |
1579 | * * |
1580 | ** |
1581 | |
1582 +----------------+ */
15830x0000,
15840x3800,
15850x0800,
15860x0800,
15870x0800,
15880x4800,
15890x3000,
15900x0000,
1591
1592/* Character (0x4b):
1593 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1594 +----------------+
1595 | |
1596 | * * |
1597 | * * |
1598 | ** |
1599 | * * |
1600 | * * |
1601 | * * |
1602 | |
1603 +----------------+ */
16040x0000,
16050x4800,
16060x5000,
16070x6000,
16080x5000,
16090x5000,
16100x4800,
16110x0000,
1612
1613/* Character (0x4c):
1614 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1615 +----------------+
1616 | |
1617 | * |
1618 | * |
1619 | * |
1620 | * |
1621 | * |
1622 | *** |
1623 | |
1624 +----------------+ */
16250x0000,
16260x4000,
16270x4000,
16280x4000,
16290x4000,
16300x4000,
16310x7000,
16320x0000,
1633
1634/* Character (0x4d):
1635 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1636 +----------------+
1637 | |
1638 | * * |
1639 | **** |
1640 | **** |
1641 | * * |
1642 | * * |
1643 | * * |
1644 | |
1645 +----------------+ */
16460x0000,
16470x4800,
16480x7800,
16490x7800,
16500x4800,
16510x4800,
16520x4800,
16530x0000,
1654
1655/* Character (0x4e):
1656 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1657 +----------------+
1658 | |
1659 | * * |
1660 | ** * |
1661 | **** |
1662 | * ** |
1663 | * ** |
1664 | * * |
1665 | |
1666 +----------------+ */
16670x0000,
16680x4800,
16690x6800,
16700x7800,
16710x5800,
16720x5800,
16730x4800,
16740x0000,
1675
1676/* Character (0x4f):
1677 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1678 +----------------+
1679 | |
1680 | ** |
1681 | * * |
1682 | * * |
1683 | * * |
1684 | * * |
1685 | ** |
1686 | |
1687 +----------------+ */
16880x0000,
16890x3000,
16900x4800,
16910x4800,
16920x4800,
16930x4800,
16940x3000,
16950x0000,
1696
1697/* Character (0x50):
1698 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1699 +----------------+
1700 | |
1701 | *** |
1702 | * * |
1703 | * * |
1704 | *** |
1705 | * |
1706 | * |
1707 | |
1708 +----------------+ */
17090x0000,
17100x7000,
17110x4800,
17120x4800,
17130x7000,
17140x4000,
17150x4000,
17160x0000,
1717
1718/* Character (0x51):
1719 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1720 +----------------+
1721 | |
1722 | ** |
1723 | * * |
1724 | * * |
1725 | ** * |
1726 | * ** |
1727 | ** |
1728 | * |
1729 +----------------+ */
17300x0000,
17310x3000,
17320x4800,
17330x4800,
17340x6800,
17350x5800,
17360x3000,
17370x0800,
1738
1739/* Character (0x52):
1740 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1741 +----------------+
1742 | |
1743 | *** |
1744 | * * |
1745 | * * |
1746 | *** |
1747 | * ** |
1748 | * * |
1749 | |
1750 +----------------+ */
17510x0000,
17520x7000,
17530x4800,
17540x4800,
17550x7000,
17560x5800,
17570x4800,
17580x0000,
1759
1760/* Character (0x53):
1761 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1762 +----------------+
1763 | |
1764 | ** |
1765 | * * |
1766 | * |
1767 | * |
1768 | * * |
1769 | ** |
1770 | |
1771 +----------------+ */
17720x0000,
17730x3000,
17740x4800,
17750x2000,
17760x1000,
17770x4800,
17780x3000,
17790x0000,
1780
1781/* Character (0x54):
1782 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1783 +----------------+
1784 | |
1785 |***** |
1786 | * |
1787 | * |
1788 | * |
1789 | * |
1790 | * |
1791 | |
1792 +----------------+ */
17930x0000,
17940xf800,
17950x2000,
17960x2000,
17970x2000,
17980x2000,
17990x2000,
18000x0000,
1801
1802/* Character (0x55):
1803 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1804 +----------------+
1805 | |
1806 | * * |
1807 | * * |
1808 | * * |
1809 | * * |
1810 | * * |
1811 | ** |
1812 | |
1813 +----------------+ */
18140x0000,
18150x4800,
18160x4800,
18170x4800,
18180x4800,
18190x4800,
18200x3000,
18210x0000,
1822
1823/* Character (0x56):
1824 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1825 +----------------+
1826 | |
1827 | * * |
1828 | * * |
1829 | * * |
1830 | * * |
1831 | ** |
1832 | ** |
1833 | |
1834 +----------------+ */
18350x0000,
18360x4800,
18370x4800,
18380x4800,
18390x4800,
18400x3000,
18410x3000,
18420x0000,
1843
1844/* Character (0x57):
1845 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1846 +----------------+
1847 | |
1848 | * * |
1849 | * * |
1850 | * * |
1851 | **** |
1852 | **** |
1853 | * * |
1854 | |
1855 +----------------+ */
18560x0000,
18570x4800,
18580x4800,
18590x4800,
18600x7800,
18610x7800,
18620x4800,
18630x0000,
1864
1865/* Character (0x58):
1866 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1867 +----------------+
1868 | |
1869 | * * |
1870 | * * |
1871 | ** |
1872 | ** |
1873 | * * |
1874 | * * |
1875 | |
1876 +----------------+ */
18770x0000,
18780x4800,
18790x4800,
18800x3000,
18810x3000,
18820x4800,
18830x4800,
18840x0000,
1885
1886/* Character (0x59):
1887 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1888 +----------------+
1889 | |
1890 |* * |
1891 |* * |
1892 | * * |
1893 | * |
1894 | * |
1895 | * |
1896 | |
1897 +----------------+ */
18980x0000,
18990x8800,
19000x8800,
19010x5000,
19020x2000,
19030x2000,
19040x2000,
19050x0000,
1906
1907/* Character (0x5a):
1908 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1909 +----------------+
1910 | |
1911 | **** |
1912 | * |
1913 | * |
1914 | * |
1915 | * |
1916 | **** |
1917 | |
1918 +----------------+ */
19190x0000,
19200x7800,
19210x0800,
19220x1000,
19230x2000,
19240x4000,
19250x7800,
19260x0000,
1927
1928/* Character (0x5b):
1929 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1930 +----------------+
1931 | |
1932 | *** |
1933 | * |
1934 | * |
1935 | * |
1936 | * |
1937 | *** |
1938 | |
1939 +----------------+ */
19400x0000,
19410x7000,
19420x4000,
19430x4000,
19440x4000,
19450x4000,
19460x7000,
19470x0000,
1948
1949/* Character (0x5c):
1950 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1951 +----------------+
1952 | |
1953 | * |
1954 | * |
1955 | * |
1956 | * |
1957 | * |
1958 | * |
1959 | |
1960 +----------------+ */
19610x0000,
19620x4000,
19630x4000,
19640x2000,
19650x1000,
19660x0800,
19670x0800,
19680x0000,
1969
1970/* Character (0x5d):
1971 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1972 +----------------+
1973 | |
1974 | *** |
1975 | * |
1976 | * |
1977 | * |
1978 | * |
1979 | *** |
1980 | |
1981 +----------------+ */
19820x0000,
19830x7000,
19840x1000,
19850x1000,
19860x1000,
19870x1000,
19880x7000,
19890x0000,
1990
1991/* Character (0x5e):
1992 bbw=5, bbh=8, bbx=0, bby=-1, width=5
1993 +----------------+
1994 | |
1995 | * |
1996 | * * |
1997 | * * |
1998 | |
1999 | |
2000 | |
2001 | |
2002 +----------------+ */
20030x0000,
20040x2000,
20050x5000,
20060x5000,
20070x0000,
20080x0000,
20090x0000,
20100x0000,
2011
2012/* Character (0x5f):
2013 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2014 +----------------+
2015 | |
2016 | |
2017 | |
2018 | |
2019 | |
2020 | |
2021 | |
2022 | **** |
2023 +----------------+ */
20240x0000,
20250x0000,
20260x0000,
20270x0000,
20280x0000,
20290x0000,
20300x0000,
20310x7800,
2032
2033/* Character (0x60):
2034 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2035 +----------------+
2036 | |
2037 | ** |
2038 | * |
2039 | * |
2040 | |
2041 | |
2042 | |
2043 | |
2044 +----------------+ */
20450x0000,
20460x6000,
20470x4000,
20480x2000,
20490x0000,
20500x0000,
20510x0000,
20520x0000,
2053
2054/* Character (0x61):
2055 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2056 +----------------+
2057 | |
2058 | |
2059 | |
2060 | * * |
2061 | * ** |
2062 | * ** |
2063 | * * |
2064 | |
2065 +----------------+ */
20660x0000,
20670x0000,
20680x0000,
20690x2800,
20700x5800,
20710x5800,
20720x2800,
20730x0000,
2074
2075/* Character (0x62):
2076 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2077 +----------------+
2078 | |
2079 | * |
2080 | * |
2081 | *** |
2082 | * * |
2083 | * * |
2084 | *** |
2085 | |
2086 +----------------+ */
20870x0000,
20880x4000,
20890x4000,
20900x7000,
20910x4800,
20920x4800,
20930x7000,
20940x0000,
2095
2096/* Character (0x63):
2097 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2098 +----------------+
2099 | |
2100 | |
2101 | |
2102 | ** |
2103 | * |
2104 | * |
2105 | ** |
2106 | |
2107 +----------------+ */
21080x0000,
21090x0000,
21100x0000,
21110x3000,
21120x4000,
21130x4000,
21140x3000,
21150x0000,
2116
2117/* Character (0x64):
2118 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2119 +----------------+
2120 | |
2121 | * |
2122 | * |
2123 | * * |
2124 | * ** |
2125 | * ** |
2126 | * * |
2127 | |
2128 +----------------+ */
21290x0000,
21300x0800,
21310x0800,
21320x2800,
21330x5800,
21340x5800,
21350x2800,
21360x0000,
2137
2138/* Character (0x65):
2139 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2140 +----------------+
2141 | |
2142 | |
2143 | |
2144 | ** |
2145 | **** |
2146 | * |
2147 | ** |
2148 | |
2149 +----------------+ */
21500x0000,
21510x0000,
21520x0000,
21530x3000,
21540x7800,
21550x4000,
21560x3000,
21570x0000,
2158
2159/* Character (0x66):
2160 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2161 +----------------+
2162 | |
2163 | * |
2164 | * * |
2165 | * |
2166 | *** |
2167 | * |
2168 | * |
2169 | |
2170 +----------------+ */
21710x0000,
21720x1000,
21730x2800,
21740x2000,
21750x7000,
21760x2000,
21770x2000,
21780x0000,
2179
2180/* Character (0x67):
2181 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2182 +----------------+
2183 | |
2184 | |
2185 | |
2186 | ** |
2187 | * * |
2188 | *** |
2189 | * |
2190 | ** |
2191 +----------------+ */
21920x0000,
21930x0000,
21940x0000,
21950x3000,
21960x4800,
21970x3800,
21980x0800,
21990x3000,
2200
2201/* Character (0x68):
2202 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2203 +----------------+
2204 | |
2205 | * |
2206 | * |
2207 | *** |
2208 | * * |
2209 | * * |
2210 | * * |
2211 | |
2212 +----------------+ */
22130x0000,
22140x4000,
22150x4000,
22160x7000,
22170x4800,
22180x4800,
22190x4800,
22200x0000,
2221
2222/* Character (0x69):
2223 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2224 +----------------+
2225 | |
2226 | * |
2227 | |
2228 | ** |
2229 | * |
2230 | * |
2231 | *** |
2232 | |
2233 +----------------+ */
22340x0000,
22350x2000,
22360x0000,
22370x6000,
22380x2000,
22390x2000,
22400x7000,
22410x0000,
2242
2243/* Character (0x6a):
2244 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2245 +----------------+
2246 | |
2247 | * |
2248 | |
2249 | * |
2250 | * |
2251 | * |
2252 | * * |
2253 | * |
2254 +----------------+ */
22550x0000,
22560x1000,
22570x0000,
22580x1000,
22590x1000,
22600x1000,
22610x5000,
22620x2000,
2263
2264/* Character (0x6b):
2265 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2266 +----------------+
2267 | |
2268 | * |
2269 | * |
2270 | * * |
2271 | *** |
2272 | * * |
2273 | * * |
2274 | |
2275 +----------------+ */
22760x0000,
22770x4000,
22780x4000,
22790x4800,
22800x7000,
22810x4800,
22820x4800,
22830x0000,
2284
2285/* Character (0x6c):
2286 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2287 +----------------+
2288 | |
2289 | ** |
2290 | * |
2291 | * |
2292 | * |
2293 | * |
2294 | *** |
2295 | |
2296 +----------------+ */
22970x0000,
22980x6000,
22990x2000,
23000x2000,
23010x2000,
23020x2000,
23030x7000,
23040x0000,
2305
2306/* Character (0x6d):
2307 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2308 +----------------+
2309 | |
2310 | |
2311 | |
2312 | * * |
2313 |* * * |
2314 |* * * |
2315 |* * |
2316 | |
2317 +----------------+ */
23180x0000,
23190x0000,
23200x0000,
23210x5000,
23220xa800,
23230xa800,
23240x8800,
23250x0000,
2326
2327/* Character (0x6e):
2328 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2329 +----------------+
2330 | |
2331 | |
2332 | |
2333 | *** |
2334 | * * |
2335 | * * |
2336 | * * |
2337 | |
2338 +----------------+ */
23390x0000,
23400x0000,
23410x0000,
23420x7000,
23430x4800,
23440x4800,
23450x4800,
23460x0000,
2347
2348/* Character (0x6f):
2349 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2350 +----------------+
2351 | |
2352 | |
2353 | |
2354 | ** |
2355 | * * |
2356 | * * |
2357 | ** |
2358 | |
2359 +----------------+ */
23600x0000,
23610x0000,
23620x0000,
23630x3000,
23640x4800,
23650x4800,
23660x3000,
23670x0000,
2368
2369/* Character (0x70):
2370 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2371 +----------------+
2372 | |
2373 | |
2374 | |
2375 | *** |
2376 | * * |
2377 | *** |
2378 | * |
2379 | * |
2380 +----------------+ */
23810x0000,
23820x0000,
23830x0000,
23840x7000,
23850x4800,
23860x7000,
23870x4000,
23880x4000,
2389
2390/* Character (0x71):
2391 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2392 +----------------+
2393 | |
2394 | |
2395 | |
2396 | *** |
2397 | * * |
2398 | *** |
2399 | * |
2400 | * |
2401 +----------------+ */
24020x0000,
24030x0000,
24040x0000,
24050x3800,
24060x4800,
24070x3800,
24080x0800,
24090x0800,
2410
2411/* Character (0x72):
2412 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2413 +----------------+
2414 | |
2415 | |
2416 | |
2417 | * * |
2418 | ** * |
2419 | * |
2420 | * |
2421 | |
2422 +----------------+ */
24230x0000,
24240x0000,
24250x0000,
24260x5000,
24270x6800,
24280x4000,
24290x4000,
24300x0000,
2431
2432/* Character (0x73):
2433 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2434 +----------------+
2435 | |
2436 | |
2437 | |
2438 | *** |
2439 | ** |
2440 | * |
2441 | *** |
2442 | |
2443 +----------------+ */
24440x0000,
24450x0000,
24460x0000,
24470x7000,
24480x6000,
24490x1000,
24500x7000,
24510x0000,
2452
2453/* Character (0x74):
2454 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2455 +----------------+
2456 | |
2457 | * |
2458 | * |
2459 | *** |
2460 | * |
2461 | * * |
2462 | * |
2463 | |
2464 +----------------+ */
24650x0000,
24660x2000,
24670x2000,
24680x7000,
24690x2000,
24700x2800,
24710x1000,
24720x0000,
2473
2474/* Character (0x75):
2475 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2476 +----------------+
2477 | |
2478 | |
2479 | |
2480 | * * |
2481 | * * |
2482 | * * |
2483 | *** |
2484 | |
2485 +----------------+ */
24860x0000,
24870x0000,
24880x0000,
24890x4800,
24900x4800,
24910x4800,
24920x3800,
24930x0000,
2494
2495/* Character (0x76):
2496 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2497 +----------------+
2498 | |
2499 | |
2500 | |
2501 | * * |
2502 | * * |
2503 | * * |
2504 | * |
2505 | |
2506 +----------------+ */
25070x0000,
25080x0000,
25090x0000,
25100x5000,
25110x5000,
25120x5000,
25130x2000,
25140x0000,
2515
2516/* Character (0x77):
2517 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2518 +----------------+
2519 | |
2520 | |
2521 | |
2522 |* * |
2523 |* * * |
2524 |* * * |
2525 | *** |
2526 | |
2527 +----------------+ */
25280x0000,
25290x0000,
25300x0000,
25310x8800,
25320xa800,
25330xa800,
25340x7000,
25350x0000,
2536
2537/* Character (0x78):
2538 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2539 +----------------+
2540 | |
2541 | |
2542 | |
2543 | * * |
2544 | ** |
2545 | ** |
2546 | * * |
2547 | |
2548 +----------------+ */
25490x0000,
25500x0000,
25510x0000,
25520x4800,
25530x3000,
25540x3000,
25550x4800,
25560x0000,
2557
2558/* Character (0x79):
2559 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2560 +----------------+
2561 | |
2562 | |
2563 | |
2564 | * * |
2565 | * * |
2566 | *** |
2567 | * * |
2568 | ** |
2569 +----------------+ */
25700x0000,
25710x0000,
25720x0000,
25730x4800,
25740x4800,
25750x3800,
25760x4800,
25770x3000,
2578
2579/* Character (0x7a):
2580 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2581 +----------------+
2582 | |
2583 | |
2584 | |
2585 | **** |
2586 | * |
2587 | * |
2588 | **** |
2589 | |
2590 +----------------+ */
25910x0000,
25920x0000,
25930x0000,
25940x7800,
25950x1000,
25960x2000,
25970x7800,
25980x0000,
2599
2600/* Character (0x7b):
2601 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2602 +----------------+
2603 | ** |
2604 | * |
2605 | * |
2606 | ** |
2607 | * |
2608 | * |
2609 | ** |
2610 | |
2611 +----------------+ */
26120x1800,
26130x2000,
26140x1000,
26150x6000,
26160x1000,
26170x2000,
26180x1800,
26190x0000,
2620
2621/* Character (0x7c):
2622 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2623 +----------------+
2624 | |
2625 | * |
2626 | * |
2627 | * |
2628 | * |
2629 | * |
2630 | * |
2631 | |
2632 +----------------+ */
26330x0000,
26340x2000,
26350x2000,
26360x2000,
26370x2000,
26380x2000,
26390x2000,
26400x0000,
2641
2642/* Character (0x7d):
2643 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2644 +----------------+
2645 | ** |
2646 | * |
2647 | * |
2648 | ** |
2649 | * |
2650 | * |
2651 | ** |
2652 | |
2653 +----------------+ */
26540x6000,
26550x1000,
26560x2000,
26570x1800,
26580x2000,
26590x1000,
26600x6000,
26610x0000,
2662
2663/* Character (0x7e):
2664 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2665 +----------------+
2666 | |
2667 | * * |
2668 | * * |
2669 | |
2670 | |
2671 | |
2672 | |
2673 | |
2674 +----------------+ */
26750x0000,
26760x2800,
26770x5000,
26780x0000,
26790x0000,
26800x0000,
26810x0000,
26820x0000,
2683
2684/* Character (0x7f):
2685 bbw=5, bbh=8, bbx=0, bby=-1, width=5
2686 +----------------+
2687 | |
2688 | |
2689 | |
2690 | |
2691 | |
2692 | |
2693 | |
2694 | |
2695 +----------------+ */
26960x0000,
26970x0000,
26980x0000,
26990x0000,
27000x0000,
27010x0000,
27020x0000,
27030x0000,
2704};
2705
2706/* Character->glyph mapping. */
2707static unsigned long X5x8_offset[] = {
2708 0, /* (0x00) */
2709 8, /* (0x01) */
2710 16, /* (0x02) */
2711 24, /* (0x03) */
2712 32, /* (0x04) */
2713 40, /* (0x05) */
2714 48, /* (0x06) */
2715 56, /* (0x07) */
2716 64, /* (0x08) */
2717 72, /* (0x09) */
2718 80, /* (0x0a) */
2719 88, /* (0x0b) */
2720 96, /* (0x0c) */
2721 104, /* (0x0d) */
2722 112, /* (0x0e) */
2723 120, /* (0x0f) */
2724 128, /* (0x10) */
2725 136, /* (0x11) */
2726 144, /* (0x12) */
2727 152, /* (0x13) */
2728 160, /* (0x14) */
2729 168, /* (0x15) */
2730 176, /* (0x16) */
2731 184, /* (0x17) */
2732 192, /* (0x18) */
2733 200, /* (0x19) */
2734 208, /* (0x1a) */
2735 216, /* (0x1b) */
2736 224, /* (0x1c) */
2737 232, /* (0x1d) */
2738 240, /* (0x1e) */
2739 248, /* (0x1f) */
2740 256, /* (0x20) */
2741 264, /* (0x21) */
2742 272, /* (0x22) */
2743 280, /* (0x23) */
2744 288, /* (0x24) */
2745 296, /* (0x25) */
2746 304, /* (0x26) */
2747 312, /* (0x27) */
2748 320, /* (0x28) */
2749 328, /* (0x29) */
2750 336, /* (0x2a) */
2751 344, /* (0x2b) */
2752 352, /* (0x2c) */
2753 360, /* (0x2d) */
2754 368, /* (0x2e) */
2755 376, /* (0x2f) */
2756 384, /* (0x30) */
2757 392, /* (0x31) */
2758 400, /* (0x32) */
2759 408, /* (0x33) */
2760 416, /* (0x34) */
2761 424, /* (0x35) */
2762 432, /* (0x36) */
2763 440, /* (0x37) */
2764 448, /* (0x38) */
2765 456, /* (0x39) */
2766 464, /* (0x3a) */
2767 472, /* (0x3b) */
2768 480, /* (0x3c) */
2769 488, /* (0x3d) */
2770 496, /* (0x3e) */
2771 504, /* (0x3f) */
2772 512, /* (0x40) */
2773 520, /* (0x41) */
2774 528, /* (0x42) */
2775 536, /* (0x43) */
2776 544, /* (0x44) */
2777 552, /* (0x45) */
2778 560, /* (0x46) */
2779 568, /* (0x47) */
2780 576, /* (0x48) */
2781 584, /* (0x49) */
2782 592, /* (0x4a) */
2783 600, /* (0x4b) */
2784 608, /* (0x4c) */
2785 616, /* (0x4d) */
2786 624, /* (0x4e) */
2787 632, /* (0x4f) */
2788 640, /* (0x50) */
2789 648, /* (0x51) */
2790 656, /* (0x52) */
2791 664, /* (0x53) */
2792 672, /* (0x54) */
2793 680, /* (0x55) */
2794 688, /* (0x56) */
2795 696, /* (0x57) */
2796 704, /* (0x58) */
2797 712, /* (0x59) */
2798 720, /* (0x5a) */
2799 728, /* (0x5b) */
2800 736, /* (0x5c) */
2801 744, /* (0x5d) */
2802 752, /* (0x5e) */
2803 760, /* (0x5f) */
2804 768, /* (0x60) */
2805 776, /* (0x61) */
2806 784, /* (0x62) */
2807 792, /* (0x63) */
2808 800, /* (0x64) */
2809 808, /* (0x65) */
2810 816, /* (0x66) */
2811 824, /* (0x67) */
2812 832, /* (0x68) */
2813 840, /* (0x69) */
2814 848, /* (0x6a) */
2815 856, /* (0x6b) */
2816 864, /* (0x6c) */
2817 872, /* (0x6d) */
2818 880, /* (0x6e) */
2819 888, /* (0x6f) */
2820 896, /* (0x70) */
2821 904, /* (0x71) */
2822 912, /* (0x72) */
2823 920, /* (0x73) */
2824 928, /* (0x74) */
2825 936, /* (0x75) */
2826 944, /* (0x76) */
2827 952, /* (0x77) */
2828 960, /* (0x78) */
2829 968, /* (0x79) */
2830 976, /* (0x7a) */
2831 984, /* (0x7b) */
2832 992, /* (0x7c) */
2833 1000, /* (0x7d) */
2834 1008, /* (0x7e) */
2835 1016, /* (0x7f) */
2836};
2837
2838/* Exported structure definition. */
2839MWCFONT font_X5x8 = {
2840 "X5x8",
2841 5,
2842 8,
2843 7,
2844 0,
2845 128,
2846 X5x8_bits,
2847 X5x8_offset,
2848 0, /* fixed width*/
2849 0,
2850 sizeof(X5x8_bits)/sizeof(MWIMAGEBITS),
2851};
2852#endif /* HAVE_LCD_BITMAP */
2853
diff --git a/firmware/ajf.c b/firmware/ajf.c
deleted file mode 100644
index 82ba0b7939..0000000000
--- a/firmware/ajf.c
+++ /dev/null
@@ -1,100 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alex Gitelman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#ifdef SIMULATOR
20#include <fcntl.h>
21#endif
22#include <file.h>
23#include "ajf.h"
24#include <string.h>
25#include <errno.h>
26#include <stdbool.h>
27#include "debug.h"
28
29static unsigned char font_buf[MAX_FONT_BUFLEN];
30
31unsigned char* ajf_read_font(char* fname)
32{
33 int count;
34#ifdef WIN32
35 int fd = open(fname, O_RDONLY|O_BINARY);
36#else
37 int fd = open(fname, O_RDONLY);
38#endif
39 if (fd<0)
40 {
41#ifdef SIMULATOR
42#ifdef WIN32
43 DEBUGF("Failed opening font file: %d %s. ", _errno(), fname);
44#else
45 DEBUGF("Failed opening font file: %d %s. ", errno, fname);
46#endif
47#endif
48 return NULL;
49 }
50
51 count = read(fd, font_buf, MAX_FONT_BUFLEN);
52 if (count==MAX_FONT_BUFLEN) {
53 DEBUGF("Font is larger than allocated %d bytes!\n",MAX_FONT_BUFLEN);
54 return NULL;
55 }
56 close(fd);
57
58 if (font_buf[0]!=MAGIC1 || font_buf[1]!=MAGIC2) {
59 DEBUGF("Bad magic word in font");
60 return NULL;
61 }
62 return font_buf;
63}
64
65
66unsigned char* ajf_get_charbuf(unsigned char c, unsigned char* font,
67 int *w, int *h)
68{
69 int height = READ_SHORT(&font[HEIGHT_OFFSET]);
70 int size = READ_SHORT(&font[SIZE_OFFSET]);
71 int chars_offset = LOOKUP_MAP_OFFSET + size*3;
72 int rows = (height-1)/8 + 1;
73 int first_char = READ_SHORT(&font[FIRST_CHAR_OFFSET]);
74 int map_idx = LOOKUP_MAP_OFFSET + (c-first_char)*3;
75 int byte_count = font[map_idx];
76 int char_idx;
77
78 *h = height;
79 *w = byte_count/rows;
80
81 map_idx++;
82 char_idx = READ_SHORT(&font[map_idx]);
83 return &font[chars_offset + char_idx];
84}
85
86void ajf_get_charsize(unsigned char c, unsigned char* font,
87 int *width, int *height)
88{
89 int first_char = READ_SHORT(&font[FIRST_CHAR_OFFSET]);
90 int map_idx = LOOKUP_MAP_OFFSET + (c-first_char)*3;
91 int rows = 1;
92 *height = READ_SHORT(&font[HEIGHT_OFFSET]);
93 rows = (*height-1)/8 + 1;
94 *width = font[map_idx]/rows;
95}
96
97int ajf_get_fontheight(unsigned char* font)
98{
99 return READ_SHORT(&font[HEIGHT_OFFSET]);
100}
diff --git a/firmware/ajf.h b/firmware/ajf.h
deleted file mode 100644
index 70d94fb3e0..0000000000
--- a/firmware/ajf.h
+++ /dev/null
@@ -1,52 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alex Gitelman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#ifndef __AJF__
20#define __AJF__
21
22/* defined here because they are used by tools/bdf2ajz */
23#define MAGIC1 0xBD
24#define MAGIC2 0xFC
25#define MAX_FONT_BUFLEN 4096
26
27#define CODE_PAGE_OFFSET 2 /* 1 byte TODO: unused now */
28#define FONT_NAME_OFFSET 3
29#define FONT_NAME_LEN 32
30#define MAX_WIDTH_OFFSET (FONT_NAME_OFFSET + FONT_NAME_LEN) /* 2 byte */
31#define HEIGHT_OFFSET (MAX_WIDTH_OFFSET + 2) /* 2 byte */
32#define ASCENT_OFFSET (HEIGHT_OFFSET+2) /* 2 byte ascent (baseline) height*/
33#define FIRST_CHAR_OFFSET (HEIGHT_OFFSET+2) /* 2 bytes first character of font*/
34#define SIZE_OFFSET (FIRST_CHAR_OFFSET+2) /* 2 bytes size of font (# encodings)*/
35#define LOOKUP_MAP_OFFSET SIZE_OFFSET+2 /* Map to lookup char positions */
36
37
38#define WRITE_SHORT(s,buf) { (buf)[0] = (s & 0xff00) >> 8 ; \
39 (buf)[1] = s & 0x00ff; }
40#define READ_SHORT(buf) (((buf)[0]<<8) + (buf)[1])
41
42unsigned char* ajf_read_font(char* fname);
43unsigned char* ajf_get_charbuf(unsigned char c, unsigned char* font,
44 int *width, int *height);
45void ajf_get_charsize(unsigned char c, unsigned char* font,
46 int *width, int *height);
47int ajf_get_fontheight(unsigned char* font);
48
49extern char _font_error_msg[];
50
51
52#endif
diff --git a/firmware/chartables.c b/firmware/chartables.c
index 8f6b31481e..7177aa7e79 100644
--- a/firmware/chartables.c
+++ b/firmware/chartables.c
@@ -4,8 +4,7 @@
4 4
5#include "config.h" 5#include "config.h"
6 6
7#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) 7#if 0
8
9const unsigned char char_gen_6x8[][5] = 8const unsigned char char_gen_6x8[][5] =
10{ 9{
11 { 0x00,0x00,0x00,0x00,0x00 }, 10 { 0x00,0x00,0x00,0x00,0x00 },
@@ -205,7 +204,9 @@ const unsigned char char_gen_8x12[][14] =
205 { 0x04,0x00,0x06,0x00,0x02,0x00,0x06,0x00,0x04,0x00,0x06,0x00,0x02,0x00 }, 204 { 0x04,0x00,0x06,0x00,0x02,0x00,0x06,0x00,0x04,0x00,0x06,0x00,0x02,0x00 },
206 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } 205 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
207}; 206};
207#endif
208 208
209#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR)
209const unsigned char char_gen_12x16[][22] = 210const unsigned char char_gen_12x16[][22] =
210{ 211{
211 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 212 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
@@ -305,246 +306,5 @@ const unsigned char char_gen_12x16[][22] =
305 { 0x10,0x00,0x18,0x00,0x0c,0x00,0x04,0x00,0x0c,0x00,0x18,0x00,0x10,0x00,0x18,0x00,0x0c,0x00,0x04,0x00,0x00,0x00 }, 306 { 0x10,0x00,0x18,0x00,0x0c,0x00,0x04,0x00,0x0c,0x00,0x18,0x00,0x10,0x00,0x18,0x00,0x0c,0x00,0x04,0x00,0x00,0x00 },
306 { 0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0x00,0x00 } 307 { 0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0xff,0x3f,0x00,0x00 }
307}; 308};
308
309#ifdef LCD_PROPFONTS
310
311
312unsigned char char_dw_8x8_prop[][9] = {
313 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37 } /* */,
314 { 0xbe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ! */,
315 { 0xe,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x37 } /* " */,
316 { 0x28,0x7c,0x28,0x7c,0x28,0x0,0x0,0x0,0x56 } /* # */,
317 { 0x48,0x54,0xfe,0x54,0x24,0x0,0x0,0x0,0x57 } /* $ */,
318 { 0x88,0x40,0x20,0x10,0x88,0x0,0x0,0x0,0x55 } /* % */,
319 { 0x6c,0x92,0x92,0xaa,0x44,0xa0,0x0,0x0,0x67 } /* & */,
320 { 0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ' */,
321 { 0x7c,0x82,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ( */,
322 { 0x82,0x7c,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ) */,
323 { 0x54,0x38,0x7c,0x38,0x54,0x0,0x0,0x0,0x56 } /* * */,
324 { 0x10,0x10,0x7c,0x10,0x10,0x0,0x0,0x0,0x56 } /* + */,
325 { 0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x22 } /* , */,
326 { 0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x45 } /* - */,
327 { 0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11 } /* . */,
328 { 0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x0,0x77 } /* / */,
329 { 0x7c,0x82,0x82,0x7c,0x0,0x0,0x0,0x0,0x47 } /* 0 */,
330 { 0x84,0xfe,0x80,0x0,0x0,0x0,0x0,0x0,0x37 } /* 1 */,
331 { 0xe4,0x92,0x92,0x8c,0x0,0x0,0x0,0x0,0x47 } /* 2 */,
332 { 0x44,0x92,0x92,0x6c,0x0,0x0,0x0,0x0,0x47 } /* 3 */,
333 { 0x1e,0x10,0x10,0xfe,0x0,0x0,0x0,0x0,0x47 } /* 4 */,
334 { 0x4e,0x92,0x92,0x62,0x0,0x0,0x0,0x0,0x47 } /* 5 */,
335 { 0x7c,0x92,0x92,0x60,0x0,0x0,0x0,0x0,0x47 } /* 6 */,
336 { 0x2,0x12,0x12,0xfe,0x0,0x0,0x0,0x0,0x47 } /* 7 */,
337 { 0x6c,0x92,0x92,0x6c,0x0,0x0,0x0,0x0,0x47 } /* 8 */,
338 { 0xc,0x92,0x92,0x7c,0x0,0x0,0x0,0x0,0x47 } /* 9 */,
339 { 0x44,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16 } /* : */,
340 { 0x80,0x44,0x0,0x0,0x0,0x0,0x0,0x0,0x26 } /* ; */,
341 { 0x10,0x28,0x44,0x0,0x0,0x0,0x0,0x0,0x36 } /* < */,
342 { 0x28,0x28,0x28,0x28,0x28,0x0,0x0,0x0,0x55 } /* = */,
343 { 0x44,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0x36 } /* > */,
344 { 0xb2,0x12,0x12,0xc,0x0,0x0,0x0,0x0,0x47 } /* ? */,
345 { 0x60,0x94,0x94,0x94,0xa4,0x48,0x30,0x0,0x76 } /* @ */,
346 { 0xfc,0x22,0x22,0xfc,0x0,0x0,0x0,0x0,0x47 } /* A */,
347 { 0xfe,0x92,0x92,0x6c,0x0,0x0,0x0,0x0,0x47 } /* B */,
348 { 0x7c,0x82,0x82,0x44,0x0,0x0,0x0,0x0,0x47 } /* C */,
349 { 0xfe,0x82,0x82,0x7c,0x0,0x0,0x0,0x0,0x47 } /* D */,
350 { 0xfe,0x92,0x92,0x82,0x0,0x0,0x0,0x0,0x47 } /* E */,
351 { 0xfe,0x12,0x12,0x2,0x0,0x0,0x0,0x0,0x47 } /* F */,
352 { 0x7c,0x82,0x92,0xf2,0x0,0x0,0x0,0x0,0x47 } /* G */,
353 { 0xfe,0x10,0x10,0xfe,0x0,0x0,0x0,0x0,0x47 } /* H */,
354 { 0x82,0xfe,0x82,0x0,0x0,0x0,0x0,0x0,0x37 } /* I */,
355 { 0x42,0x82,0x82,0x7e,0x0,0x0,0x0,0x0,0x47 } /* J */,
356 { 0xfe,0x10,0x28,0xc6,0x0,0x0,0x0,0x0,0x47 } /* K */,
357 { 0xfe,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x47 } /* L */,
358 { 0xfe,0x4,0x18,0x4,0xfe,0x0,0x0,0x0,0x57 } /* M */,
359 { 0xfe,0x2,0x2,0xfc,0x0,0x0,0x0,0x0,0x47 } /* N */,
360 { 0x7c,0x82,0x82,0x7c,0x0,0x0,0x0,0x0,0x47 } /* O */,
361 { 0xfe,0x12,0x12,0xc,0x0,0x0,0x0,0x0,0x47 } /* P */,
362 { 0x7c,0x82,0xa2,0x7c,0x40,0x80,0x0,0x0,0x67 } /* Q */,
363 { 0xfe,0x12,0x12,0xec,0x0,0x0,0x0,0x0,0x47 } /* R */,
364 { 0x8c,0x92,0x92,0x62,0x0,0x0,0x0,0x0,0x47 } /* S */,
365 { 0x2,0x2,0xfe,0x2,0x2,0x0,0x0,0x0,0x57 } /* T */,
366 { 0x7e,0x80,0x80,0x7e,0x0,0x0,0x0,0x0,0x47 } /* U */,
367 { 0x3e,0x40,0x80,0x40,0x3e,0x0,0x0,0x0,0x57 } /* V */,
368 { 0xfe,0x40,0x30,0x40,0xfe,0x0,0x0,0x0,0x57 } /* W */,
369 { 0xc6,0x28,0x10,0x28,0xc6,0x0,0x0,0x0,0x57 } /* X */,
370 { 0xe,0x10,0xe0,0x10,0xe,0x0,0x0,0x0,0x57 } /* Y */,
371 { 0xe2,0x92,0x92,0x8e,0x0,0x0,0x0,0x0,0x47 } /* Z */,
372 { 0xfe,0x82,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* [ */,
373 { 0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x77 } /* \ */,
374 { 0x82,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ] */,
375 { 0x8,0x4,0x2,0x4,0x8,0x0,0x0,0x0,0x57 } /* ^ */,
376 { 0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x15 } /* _ */,
377 { 0x6,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ` */,
378 { 0x40,0xa8,0xa8,0xa8,0xf0,0x0,0x0,0x0,0x55 } /* a */,
379 { 0xfe,0x90,0x90,0x60,0x0,0x0,0x0,0x0,0x47 } /* b */,
380 { 0x70,0x88,0x88,0x88,0x0,0x0,0x0,0x0,0x45 } /* c */,
381 { 0x60,0x90,0x90,0xfe,0x0,0x0,0x0,0x0,0x47 } /* d */,
382 { 0x70,0xa8,0xa8,0xa8,0x10,0x0,0x0,0x0,0x55 } /* e */,
383 { 0x10,0xfc,0x12,0x2,0x0,0x0,0x0,0x0,0x47 } /* f */,
384 { 0x10,0xa8,0xa8,0xa8,0x78,0x0,0x0,0x0,0x55 } /* g */,
385 { 0xfe,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x47 } /* h */,
386 { 0x88,0xfa,0x80,0x0,0x0,0x0,0x0,0x0,0x37 } /* i */,
387 { 0x40,0x80,0x88,0x7a,0x0,0x0,0x0,0x0,0x47 } /* j */,
388 { 0xfe,0x20,0x50,0x88,0x0,0x0,0x0,0x0,0x47 } /* k */,
389 { 0x82,0xfe,0x80,0x0,0x0,0x0,0x0,0x0,0x37 } /* l */,
390 { 0xf8,0x8,0x70,0x8,0xf8,0x0,0x0,0x0,0x55 } /* m */,
391 { 0xf8,0x8,0x8,0xf0,0x0,0x0,0x0,0x0,0x45 } /* n */,
392 { 0x70,0x88,0x88,0x70,0x0,0x0,0x0,0x0,0x45 } /* o */,
393 { 0xf8,0x28,0x28,0x10,0x0,0x0,0x0,0x0,0x45 } /* p */,
394 { 0x10,0x28,0x28,0xf8,0x0,0x0,0x0,0x0,0x45 } /* q */,
395 { 0xf8,0x10,0x8,0x8,0x0,0x0,0x0,0x0,0x45 } /* r */,
396 { 0x90,0xa8,0xa8,0x48,0x0,0x0,0x0,0x0,0x45 } /* s */,
397 { 0x8,0xfe,0x8,0x0,0x0,0x0,0x0,0x0,0x37 } /* t */,
398 { 0x78,0x80,0x80,0x78,0x0,0x0,0x0,0x0,0x45 } /* u */,
399 { 0x38,0x40,0x80,0x40,0x38,0x0,0x0,0x0,0x55 } /* v */,
400 { 0xf8,0x80,0x60,0x80,0xf8,0x0,0x0,0x0,0x55 } /* w */,
401 { 0xd8,0x20,0xd8,0x0,0x0,0x0,0x0,0x0,0x35 } /* x */,
402 { 0x18,0xa0,0xa0,0x78,0x0,0x0,0x0,0x0,0x45 } /* y */,
403 { 0xc8,0xa8,0x98,0x0,0x0,0x0,0x0,0x0,0x35 } /* z 0x7a */,
404 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7b */,
405 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7c */,
406 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7d */,
407 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7e */,
408 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x7f */,
409
410 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x80 */,
411 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x81 */,
412 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x82 */,
413 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x83 */,
414 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x85 */,
415 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x86 */,
416 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x87 */,
417 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x88 */,
418 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x89 */,
419 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8a */,
420 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8b */,
421 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8c */,
422 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8d */,
423 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8e */,
424 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x8f */,
425
426 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x90 */,
427 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x91 */,
428 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x92 */,
429 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x93 */,
430 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x95 */,
431 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x96 */,
432 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x97 */,
433 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x98 */,
434 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x99 */,
435 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9a */,
436 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9b */,
437 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9c */,
438 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9d */,
439 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9e */,
440 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0x9f */,
441
442 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37 } /* */,
443 { 0xfa,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ¡ */,
444 { 0x38,0x44,0xfe,0x44,0x28,0x0,0x0,0x0,0x57 } /* ¢ */,
445 { 0x90,0x7c,0x92,0x82,0x82,0x44,0x0,0x0,0x67 } /* £ */,
446 { 0x44,0x38,0x28,0x38,0x44,0x0,0x0,0x0,0x55 } /* ¤ */,
447 { 0x2a,0x2c,0xf8,0x2c,0x2a,0x0,0x0,0x0,0x57 } /* ¥ */,
448 { 0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x17 } /* ¦ */,
449 { 0x94,0xaa,0xaa,0x52,0x0,0x0,0x0,0x0,0x47 } /* § */,
450 { 0x2,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x47 } /* ¨ */,
451 { 0x7c,0x82,0xba,0xaa,0xaa,0x82,0x7c,0x0,0x77 } /* © */,
452 { 0x0,0x32,0x2a,0x2a,0x3e,0x20,0x0,0x0,0x57 } /* ª */,
453 { 0x10,0x28,0x54,0x28,0x44,0x0,0x0,0x0,0x56 } /* « */,
454 { 0x2,0x2,0x2,0x2,0x6,0x0,0x0,0x0,0x57 } /* ¬ */,
455 { 0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x55 } /* ­ */,
456 { 0x7c,0x82,0xfa,0xaa,0xda,0x82,0x7c,0x0,0x77 } /* ® */,
457 { 0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x65 } /* ­ */,
458 { 0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x77 } /* ¯ */,
459 { 0x4,0xa,0xa,0x4,0x0,0x0,0x0,0x0,0x47 } /* ° */,
460 { 0x24,0x24,0x2e,0x24,0x24,0x0,0x0,0x0,0x57 } /* ± */,
461 { 0x1a,0x1a,0x16,0x10,0x0,0x0,0x0,0x0,0x47 } /* ² */,
462 { 0x12,0x16,0x1e,0x0,0x0,0x0,0x0,0x0,0x37 } /* ³ */,
463 { 0x4,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x27 } /* ´ */,
464 { 0x1e,0x8,0x8,0x6,0x0,0x0,0x0,0x0,0x47 } /* µ */,
465 { 0xc,0xe,0x1e,0xfe,0x2,0xfe,0x0,0x0,0x67 } /* ¶ */,
466 { 0x10,0x38,0x38,0x10,0x0,0x0,0x0,0x0,0x45 } /* · */,
467 { 0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x42 } /* ¸ */,
468 { 0xa,0xe,0x8,0x0,0x0,0x0,0x0,0x0,0x17 } /* ¹ */,
469 { 0x4,0xa,0xa,0x4,0x0,0x0,0x0,0x0,0x47 } /* º */,
470 { 0x44,0x28,0x54,0x28,0x10,0x0,0x0,0x0,0x56 } /* » */,
471 { 0x2e,0x10,0x8,0x34,0x22,0x70,0x0,0x0,0x67 } /* ¼ */,
472 { 0x2e,0x10,0x8,0xd4,0xd2,0xb0,0x80,0x0,0x77 } /* ½ */,
473 { 0x52,0x36,0x1e,0x68,0x44,0xe2,0x0,0x0,0x67 } /*
474 { 0xb2,0x12,0x12,0xc,0x0,0x0,0x0,0x0,0x47 } /* ? */,
475 { 0x60,0x90,0x90,0x9a,0x0,0x0,0x0,0x0,0x47 } /* ¿ */,
476 { 0xf9,0x26,0x24,0xf8,0x0,0x0,0x0,0x0,0x48 } /* À */,
477 { 0xf8,0x24,0x26,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Á */,
478 { 0xfa,0x25,0x25,0xfa,0x0,0x0,0x0,0x0,0x48 } /* Â */,
479 { 0xfa,0x25,0x26,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Ã */,
480 { 0xf9,0x24,0x24,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Ä */,
481 { 0xfa,0x25,0x25,0xfa,0x0,0x0,0x0,0x0,0x48 } /* Å */,
482 { 0xfc,0x12,0x12,0xfe,0x92,0x92,0x82,0x0,0x77 } /* Æ */,
483 { 0x3c,0x42,0xc2,0x42,0x42,0x24,0x0,0x0,0x67 } /* Ç */,
484 { 0xfc,0x95,0x96,0x84,0x0,0x0,0x0,0x0,0x48 } /* È */,
485 { 0xfc,0x96,0x95,0x84,0x0,0x0,0x0,0x0,0x48 } /* É */,
486 { 0xfe,0x95,0x95,0x86,0x0,0x0,0x0,0x0,0x48 } /* Ê */,
487 { 0xfd,0x94,0x94,0x85,0x0,0x0,0x0,0x0,0x48 } /* Ë */,
488 { 0x85,0xfe,0x84,0x0,0x0,0x0,0x0,0x0,0x38 } /* Ì */,
489 { 0x84,0xfe,0x85,0x0,0x0,0x0,0x0,0x0,0x38 } /* Í */,
490 { 0x86,0xfd,0x86,0x0,0x0,0x0,0x0,0x0,0x38 } /* Î */,
491
492 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0xcf */,
493
494 { 0x10,0xfe,0x92,0x82,0x7c,0x0,0x0,0x0,0x57 } /* Ð */,
495 { 0xfe,0x5,0x6,0xf9,0x0,0x0,0x0,0x0,0x48 } /* Ñ */,
496 { 0x79,0x86,0x84,0x78,0x0,0x0,0x0,0x0,0x48 } /* Ò */,
497 { 0x78,0x84,0x86,0x79,0x0,0x0,0x0,0x0,0x48 } /* Ó */,
498 { 0x7a,0x85,0x85,0x7a,0x0,0x0,0x0,0x0,0x48 } /* Ô */,
499 { 0x7a,0x85,0x86,0x79,0x0,0x0,0x0,0x0,0x48 } /* Õ */,
500 { 0x79,0x84,0x84,0x79,0x0,0x0,0x0,0x0,0x48 } /* Ö */,
501 { 0x44,0x28,0x10,0x28,0x44,0x0,0x0,0x0,0x56 } /* × */,
502 { 0x80,0x78,0x64,0x54,0x4c,0x3c,0x2,0x0,0x77 } /* Ø */,
503 { 0x7c,0x81,0x82,0x7c,0x0,0x0,0x0,0x0,0x48 } /* Ù */,
504 { 0x7c,0x82,0x81,0x7c,0x0,0x0,0x0,0x0,0x48 } /* Ú */,
505 { 0x7a,0x81,0x81,0x7a,0x0,0x0,0x0,0x0,0x48 } /* Û */,
506
507 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0xdc */,
508
509 { 0x4,0x8,0xf2,0x9,0x4,0x0,0x0,0x0,0x58 } /* Ý */,
510 { 0xfe,0x14,0x14,0x8,0x0,0x0,0x0,0x0,0x47 } /* Þ */,
511 { 0xfc,0x2,0x92,0x92,0x6c,0x0,0x0,0x0,0x57 } /* ß */,
512 { 0x40,0xa8,0xa9,0xaa,0xf0,0x0,0x0,0x0,0x58 } /* à */,
513
514 { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x00 } /* 0xe1 */,
515
516 { 0x40,0xaa,0xa9,0xa9,0xf2,0x0,0x0,0x0,0x58 } /* â */,
517 { 0x40,0xaa,0xa9,0xaa,0xf1,0x0,0x0,0x0,0x58 } /* ã */,
518 { 0x40,0xaa,0xa8,0xa8,0xf2,0x0,0x0,0x0,0x57 } /* ä */,
519 { 0x40,0xac,0xaa,0xaa,0xf4,0x0,0x0,0x0,0x57 } /* å */,
520 { 0x40,0xa8,0xa8,0xf0,0xa8,0xa8,0xb0,0x0,0x75 } /* æ */,
521 { 0x30,0x48,0xc8,0x48,0x48,0x0,0x0,0x0,0x55 } /* ç */,
522 { 0x70,0xa9,0xaa,0xa8,0x10,0x0,0x0,0x0,0x58 } /* è */,
523 { 0x70,0xa8,0xaa,0xa9,0x10,0x0,0x0,0x0,0x58 } /* é */,
524 { 0x72,0xa9,0xa9,0xaa,0x10,0x0,0x0,0x0,0x58 } /* ê */,
525 { 0x70,0xaa,0xa8,0xa8,0x12,0x0,0x0,0x0,0x57 } /* ë */,
526 { 0x89,0xfa,0x80,0x0,0x0,0x0,0x0,0x0,0x38 } /* ì */,
527 { 0x88,0xfa,0x81,0x0,0x0,0x0,0x0,0x0,0x38 } /* í */,
528 { 0x8a,0xf9,0x82,0x0,0x0,0x0,0x0,0x0,0x38 } /* î */,
529 { 0x8a,0xf8,0x82,0x0,0x0,0x0,0x0,0x0,0x37 } /* ï */,
530 { 0x72,0x8b,0x8c,0x70,0x0,0x0,0x0,0x0,0x38 } /* ð */,
531 { 0xfa,0x9,0xa,0xf1,0x0,0x0,0x0,0x0,0x48 } /* ñ */,
532 { 0x71,0x8a,0x88,0x70,0x0,0x0,0x0,0x0,0x48 } /* ò */,
533 { 0x70,0x88,0x8a,0x71,0x0,0x0,0x0,0x0,0x48 } /* ó */,
534 { 0x72,0x89,0x89,0x72,0x0,0x0,0x0,0x0,0x48 } /* ô */,
535 { 0x72,0x89,0x8a,0x71,0x0,0x0,0x0,0x0,0x48 } /* õ */,
536 { 0x72,0x88,0x88,0x72,0x0,0x0,0x0,0x0,0x47 } /* ö */,
537 { 0x10,0x10,0x54,0x10,0x10,0x0,0x0,0x0,0x56 } /* ÷ */,
538 { 0xb8,0x44,0xa4,0x94,0x88,0x74,0x0,0x0,0x66 } /* ø */,
539 { 0x78,0x81,0x82,0x78,0x0,0x0,0x0,0x0,0x48 } /* ù */,
540 { 0x78,0x82,0x81,0x78,0x0,0x0,0x0,0x0,0x48 } /* ú */,
541 { 0x7a,0x81,0x81,0x7a,0x0,0x0,0x0,0x0,0x48 } /* û */,
542 { 0x7a,0x80,0x80,0x7a,0x0,0x0,0x0,0x0,0x47 } /* ü */,
543 { 0x18,0xa1,0xa2,0x78,0x0,0x0,0x0,0x0,0x48 } /* ý */,
544 { 0xfe,0x28,0x44,0x44,0x44,0x38,0x0,0x0,0x67 } /* þ */,
545 { 0x1a,0xa0,0xa0,0x7a,0x0,0x0,0x0,0x0,0x47 } /* ÿ */
546};
547
548#endif
549
550#endif /* HAVE_LCD_BITMAP || SIMULATOR */ 309#endif /* HAVE_LCD_BITMAP || SIMULATOR */
310
diff --git a/firmware/debug.h b/firmware/debug.h
index 876b8511a6..e9eec27e86 100644
--- a/firmware/debug.h
+++ b/firmware/debug.h
@@ -26,7 +26,8 @@ extern void debugf(char* fmt,...);
26 26
27/* */ 27/* */
28#if defined(DEBUG) || defined(SIMULATOR) 28#if defined(DEBUG) || defined(SIMULATOR)
29#define DEBUGF(...) debugf(__VA_ARGS__) 29//#define DEBUGF(...) debugf(__VA_ARGS__)
30#define DEBUGF debugf
30#else 31#else
31#define DEBUGF(...) 32#define DEBUGF(...)
32#endif 33#endif
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c
index c43807b25f..f0a2089367 100644
--- a/firmware/drivers/fat.c
+++ b/firmware/drivers/fat.c
@@ -1049,10 +1049,6 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry)
1049 for (j=longs-1; j>=0; j--) { 1049 for (j=longs-1; j>=0; j--) {
1050 unsigned char* ptr = dir->cached_buf; 1050 unsigned char* ptr = dir->cached_buf;
1051 int index = longarray[j]; 1051 int index = longarray[j];
1052#ifdef LOADABLE_FONTS
1053 int offset_idx = 0;
1054 unsigned char uni_char[2];
1055#endif
1056 /* current or cached sector? */ 1052 /* current or cached sector? */
1057 if ( sectoridx >= SECTOR_SIZE ) { 1053 if ( sectoridx >= SECTOR_SIZE ) {
1058 if ( sectoridx >= SECTOR_SIZE*2 ) { 1054 if ( sectoridx >= SECTOR_SIZE*2 ) {
@@ -1070,30 +1066,6 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry)
1070 index &= SECTOR_SIZE-1; 1066 index &= SECTOR_SIZE-1;
1071 } 1067 }
1072 1068
1073 /* piece together the name subcomponents. */
1074#ifdef LOADABLE_FONTS
1075 for (k=0; k<5; k++)
1076 {
1077 offset_idx = index + k*2 + 1;
1078 uni_char[0] = ptr[offset_idx+1];
1079 uni_char[1] = ptr[offset_idx];
1080 entry->name[l++] = from_unicode(uni_char);
1081 }
1082 for (k=0; k<6; k++)
1083 {
1084 offset_idx = index + k*2 + 14;
1085 uni_char[0] = ptr[offset_idx+1];
1086 uni_char[1] = ptr[offset_idx];
1087 entry->name[l++] = from_unicode(uni_char);
1088 }
1089 for (k=0; k<2; k++)
1090 {
1091 offset_idx = index + k*2 + 28;
1092 uni_char[0] = ptr[offset_idx+1];
1093 uni_char[1] = ptr[offset_idx];
1094 entry->name[l++] = from_unicode(uni_char);
1095 }
1096#else
1097 /* names are stored in unicode, but we 1069 /* names are stored in unicode, but we
1098 only grab the low byte (iso8859-1). */ 1070 only grab the low byte (iso8859-1). */
1099 for (k=0; k<5; k++) 1071 for (k=0; k<5; k++)
@@ -1102,7 +1074,6 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry)
1102 entry->name[l++] = ptr[index + k*2 + 14]; 1074 entry->name[l++] = ptr[index + k*2 + 14];
1103 for (k=0; k<2; k++) 1075 for (k=0; k<2; k++)
1104 entry->name[l++] = ptr[index + k*2 + 28]; 1076 entry->name[l++] = ptr[index + k*2 + 28];
1105#endif
1106 } 1077 }
1107 entry->name[l]=0; 1078 entry->name[l]=0;
1108 } 1079 }
diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c
index e3248878da..5240dfda42 100644
--- a/firmware/drivers/lcd.c
+++ b/firmware/drivers/lcd.c
@@ -26,17 +26,12 @@
26#include "file.h" 26#include "file.h"
27#include "debug.h" 27#include "debug.h"
28#include "system.h" 28#include "system.h"
29 29#include "font.h"
30#ifdef LOADABLE_FONTS
31#include "ajf.h"
32#include "panic.h"
33#endif
34 30
35#if defined(SIMULATOR) 31#if defined(SIMULATOR)
36#include "sim_icons.h" 32#include "sim_icons.h"
37#endif 33#endif
38 34
39
40/*** definitions ***/ 35/*** definitions ***/
41 36
42#define LCDR (PBDR_ADDR+1) 37#define LCDR (PBDR_ADDR+1)
@@ -513,9 +508,6 @@ void lcd_init (void)
513{ 508{
514 create_thread(scroll_thread, scroll_stack, 509 create_thread(scroll_thread, scroll_stack,
515 sizeof(scroll_stack), scroll_name); 510 sizeof(scroll_stack), scroll_name);
516#if defined(LOADABLE_FONTS) && defined(SIMULATOR)
517 lcd_init_fonts();
518#endif
519} 511}
520#endif 512#endif
521 513
@@ -568,17 +560,11 @@ static int ymargin=0;
568#define ASCII_MIN 0x20 /* First char in table */ 560#define ASCII_MIN 0x20 /* First char in table */
569#define ASCII_MAX 0x7f /* Last char in table */ 561#define ASCII_MAX 0x7f /* Last char in table */
570 562
571extern unsigned char char_gen_6x8[][5];
572extern unsigned char char_gen_8x12[][14];
573extern unsigned char char_gen_12x16[][22];
574
575/* All zeros and ones bitmaps for area filling */ 563/* All zeros and ones bitmaps for area filling */
576static unsigned char zeros[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 564static unsigned char zeros[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
577 0x00, 0x00 }; 565 0x00, 0x00 };
578static unsigned char ones[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 566static unsigned char ones[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
579 0xff, 0xff }; 567 0xff, 0xff };
580static char fonts[] = { 6,8,12 };
581static char fontheight[] = { 8,12,16 };
582 568
583#ifndef SIMULATOR 569#ifndef SIMULATOR
584 570
@@ -696,175 +682,14 @@ int lcd_getymargin(void)
696 return ymargin; 682 return ymargin;
697} 683}
698 684
699
700
701#ifdef LOADABLE_FONTS
702
703static unsigned char* _font = NULL;
704
705int lcd_init_fonts(void)
706{
707 if (!_font)
708 _font = ajf_read_font("/system.ajf");
709
710 if (!_font)
711 {
712 lcd_putsxy(0,0,"No font", 0);
713 return -1;
714 }
715
716 return 0;
717}
718
719void lcd_setldfont(unsigned char* f)
720{
721 _font = f;
722}
723
724unsigned char* lcd_getcurrentldfont()
725{
726 if (!_font)
727 panicf("No font loaded!");
728 return _font;
729}
730
731/*
732 * Return width and height of a string with a given font.
733 */
734int lcd_getstringsize(unsigned char *str, unsigned char* font, int *w, int *h)
735{
736 int width=0;
737 int height=0;
738 unsigned char ch;
739
740 if (!font)
741 panicf("No font specified");
742
743 while((ch = *str++))
744 {
745 int dw,dh;
746 ajf_get_charsize(ch, font, &dw, &dh);
747 if (dh>height)
748 height = dh;
749 width+=dw;
750 }
751 *w = width;
752 *h = height;
753
754 return width;
755}
756
757/*
758 * Put a string at specified bit position
759 */
760
761void lcd_putsldfxy(int x, int y, unsigned char *str)
762{
763 unsigned char ch;
764 int nx;
765 int ny=8;
766 int lcd_x = x;
767 int lcd_y = y;
768 if (!_font)
769 {
770 lcd_putsxy(0,0,"No font", 0);
771 return;
772 }
773 ny = (int)_font[2];
774 while (((ch = *str++) != '\0'))
775 {
776 unsigned char *char_buf = ajf_get_charbuf(ch, _font, &nx, &ny);
777 if (!char_buf)
778 {
779 char_buf = ajf_get_charbuf('?', _font, &nx, &ny);
780 if (!char_buf)
781 panicf("Bad font");
782 }
783 if(lcd_x + nx > LCD_WIDTH)
784 break;
785
786 lcd_bitmap (&char_buf[0], lcd_x, lcd_y, nx, ny, true);
787 lcd_x += nx;
788 }
789}
790#endif
791
792
793#ifdef LCD_PROPFONTS
794
795extern unsigned char char_dw_8x8_prop[][9];
796
797/*
798 * Return width and height of a given font.
799 */
800int lcd_getstringsize(unsigned char *str, unsigned int font, int *w, int *h)
801{
802 int width=0;
803 unsigned char ch, byte;
804 (void)font;
805
806 while((ch = *str++)) {
807 /* Limit to char generation table */
808 if (ch < ASCII_MIN)
809 /* replace unsupported letters with question marks */
810 ch = ' '-ASCII_MIN;
811 else
812 ch -= ASCII_MIN;
813
814 byte = char_dw_8x8_prop[ch][8];
815 width += (byte>>4) + 1;
816 }
817 *w = width;
818 *h = 8;
819
820 return width;
821}
822
823/*
824 * Put a string at specified bit position
825 */
826
827void lcd_putspropxy(int x, int y, unsigned char *str, int thisfont)
828{
829 unsigned int ch;
830 int nx;
831 int ny=8;
832 unsigned char *src;
833 int lcd_x = x;
834 int lcd_y = y;
835
836 (void)thisfont;
837
838 while (((ch = *str++) != '\0'))
839 {
840 /* Limit to char generation table */
841 if (ch < ASCII_MIN)
842 /* replace unsupported letters with question marks */
843 ch = ' '-ASCII_MIN;
844 else
845 ch -= ASCII_MIN;
846
847 nx = char_dw_8x8_prop[ch][8] >> 4;
848
849 if(lcd_x + nx > LCD_WIDTH)
850 break;
851
852 src = char_dw_8x8_prop[ch];
853 lcd_clearrect (lcd_x+nx, lcd_y, 1, ny );
854 lcd_bitmap (src, lcd_x, lcd_y, nx, ny, true);
855
856 lcd_x += nx+1;
857 }
858}
859
860#endif
861
862/* 685/*
863 * Put a string at specified character position 686 * Put a string at specified character position
864 */ 687 */
688//FIXME require font parameter
865void lcd_puts(int x, int y, unsigned char *str) 689void lcd_puts(int x, int y, unsigned char *str)
866{ 690{
867 int xpos,ypos,w,h; 691 int xpos,ypos,w,h;
692
868#if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS) 693#if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS)
869 /* We make the simulator truncate the string if it reaches the right edge, 694 /* We make the simulator truncate the string if it reaches the right edge,
870 as otherwise it'll wrap. The real target doesn't wrap. */ 695 as otherwise it'll wrap. The real target doesn't wrap. */
@@ -882,23 +707,10 @@ void lcd_puts(int x, int y, unsigned char *str)
882 if(!str || !str[0]) 707 if(!str || !str[0])
883 return; 708 return;
884 709
885#ifdef LCD_PROPFONTS
886 lcd_getstringsize(str, font, &w, &h); 710 lcd_getstringsize(str, font, &w, &h);
887 xpos = xmargin + x * fonts[font]; 711 xpos = xmargin + x*w / strlen(str); //FIXME why strlen?
888 ypos = ymargin + y * fontheight[font]; 712 ypos = ymargin + y*h;
889 lcd_putspropxy(xpos, ypos, str, font); 713 lcd_putsxy( xpos, ypos, str, font);
890#elif LOADABLE_FONTS
891 lcd_getstringsize(str,_font,&w,&h);
892 xpos = xmargin + x * w / strlen(str);
893 ypos = ymargin + y * h;
894 lcd_putsldfxy(xpos, ypos, str);
895#else
896 xpos = xmargin + x * fonts[font];
897 ypos = ymargin + y * fontheight[font];
898 lcd_putsxy(xpos, ypos, str, font);
899 w = strlen(str) * fonts[font];
900 h = fontheight[font];
901#endif
902 lcd_clearrect(xpos + w, ypos, LCD_WIDTH - (xpos + w), h); 714 lcd_clearrect(xpos + w, ypos, LCD_WIDTH - (xpos + w), h);
903#if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS) 715#if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS)
904 /* this function is being used when simulating a charcell LCD and 716 /* this function is being used when simulating a charcell LCD and
@@ -907,58 +719,6 @@ void lcd_puts(int x, int y, unsigned char *str)
907#endif 719#endif
908} 720}
909 721
910
911/*
912 * Put a string at specified bit position
913 */
914void lcd_putsxy(int x, int y, unsigned char *str, int thisfont)
915{
916#ifdef LCD_PROPFONTS
917 lcd_putspropxy(x,y,str,thisfont);
918#else
919
920 int nx = fonts[thisfont];
921 int ny = fontheight[thisfont];
922 int ch;
923 unsigned char *src;
924 int lcd_x = x;
925 int lcd_y = y;
926
927#ifdef LOADABLE_FONTS
928 if ( _font ) {
929 lcd_putsldfxy(x,y,str);
930 return;
931 }
932#endif
933
934 while (((ch = *str++) != '\0') && (lcd_x + nx <= LCD_WIDTH))
935 {
936 if (lcd_y + ny > LCD_HEIGHT)
937 return;
938
939 /* Limit to char generation table */
940 if ((ch < ASCII_MIN) || (ch > ASCII_MAX))
941 /* replace unsupported letters with question marks */
942 ch = '?' - ASCII_MIN;
943 else
944 ch -= ASCII_MIN;
945
946 if (thisfont == 2)
947 src = char_gen_12x16[ch];
948 else if (thisfont == 1)
949 src = char_gen_8x12[ch];
950 else
951 src = char_gen_6x8[ch];
952
953 lcd_bitmap (src, lcd_x, lcd_y, nx-1, ny, true);
954 lcd_bitmap (zeros, lcd_x+nx-1, lcd_y, 1, ny, true);
955
956 lcd_x += nx;
957
958 }
959#endif
960}
961
962/* 722/*
963 * Display a bitmap at (x, y), size (nx, ny) 723 * Display a bitmap at (x, y), size (nx, ny)
964 * clear is true to clear destination area first 724 * clear is true to clear destination area first
@@ -1265,17 +1025,6 @@ void lcd_invertpixel(int x, int y)
1265 INVERT_PIXEL(x,y); 1025 INVERT_PIXEL(x,y);
1266} 1026}
1267 1027
1268/*
1269 * Return width and height of a given font.
1270 */
1271void lcd_getfontsize(unsigned int font, int *width, int *height)
1272{
1273 if(font < sizeof(fonts)) {
1274 *width = fonts[font];
1275 *height = fontheight[font];
1276 }
1277}
1278
1279#else 1028#else
1280/* no LCD defined, no code to use */ 1029/* no LCD defined, no code to use */
1281#endif 1030#endif
@@ -1286,47 +1035,31 @@ void lcd_puts_scroll(int x, int y, unsigned char* string )
1286#ifdef HAVE_LCD_CHARCELLS 1035#ifdef HAVE_LCD_CHARCELLS
1287 s->space = 11 - x; 1036 s->space = 11 - x;
1288#else 1037#else
1289
1290#if defined(LCD_PROPFONTS) || defined(LOADABLE_FONTS)
1291 unsigned char ch[2]; 1038 unsigned char ch[2];
1292 int w, h; 1039 int w, h;
1293#endif
1294 int width, height; 1040 int width, height;
1295 lcd_getfontsize(font, &width, &height); 1041 lcd_getfontsize(font, &width, &height);
1296#if defined(LCD_PROPFONTS) || defined(LOADABLE_FONTS) 1042
1297 ch[1] = 0; /* zero terminate */ 1043 ch[1] = 0; /* zero terminate */
1298 ch[0] = string[0]; 1044 ch[0] = string[0];
1299 width = 0; 1045 width = 0;
1300 s->space = 0; 1046 s->space = 0;
1301 while ( ch[0] && 1047 while ( ch[0] &&
1302#ifdef LCD_PROPFONTS
1303 (width + lcd_getstringsize(ch, 0, &w, &h) < 1048 (width + lcd_getstringsize(ch, 0, &w, &h) <
1304 (LCD_WIDTH - x*8))) { 1049 (LCD_WIDTH - x*8))) {
1305#else
1306 (width + lcd_getstringsize(ch, _font, &w, &h) <
1307 (LCD_WIDTH - x*8))) {
1308#endif
1309 width += w; 1050 width += w;
1310 s->space++; 1051 s->space++;
1311 ch[0]=string[s->space]; 1052 ch[0]=string[s->space];
1312 } 1053 }
1313#else
1314 s->space = (LCD_WIDTH - xmargin - x*width) / width;
1315#endif
1316#endif 1054#endif
1317 1055
1318 lcd_puts(x,y,string); 1056 lcd_puts(x,y,string);
1319 s->textlen = strlen(string); 1057 s->textlen = strlen(string);
1320 1058
1321 1059#ifdef HAVE_LCD_BITMAP
1322#if defined(LCD_PROPFONTS)
1323 s->space += 2; 1060 s->space += 2;
1324 lcd_getstringsize(string,0,&w,&h); 1061 lcd_getstringsize(string,0,&w,&h);
1325 if ( w > LCD_WIDTH - xmargin ) { 1062 if ( w > LCD_WIDTH - xmargin ) {
1326#elif defined(LOADABLE_FONTS)
1327 s->space += 2;
1328 lcd_getstringsize(string,_font,&w,&h);
1329 if ( w > LCD_WIDTH - xmargin ) {
1330#else 1063#else
1331 if ( s->textlen > s->space ) { 1064 if ( s->textlen > s->space ) {
1332#endif 1065#endif
@@ -1344,32 +1077,24 @@ void lcd_puts_scroll(int x, int y, unsigned char* string )
1344 } 1077 }
1345} 1078}
1346 1079
1080
1347void lcd_stop_scroll(void) 1081void lcd_stop_scroll(void)
1348{ 1082{
1349 if ( scroll_count ) { 1083 if ( scroll_count ) {
1350 struct scrollinfo* s = &scroll; 1084 struct scrollinfo* s = &scroll;
1351 scroll_count = 0; 1085 scroll_count = 0;
1352
1353#ifdef LCD_PROPFONTS
1354 1086
1355 lcd_clearrect(xmargin + s->startx*fonts[font], 1087#ifdef HAVE_LCD_BITMAP
1356 ymargin + s->starty*fontheight[font],
1357 LCD_WIDTH - xmargin,
1358 fontheight[font]);
1359
1360#elif defined(LOADABLE_FONTS)
1361 { 1088 {
1362 int w,h; 1089 int w,h;
1363 lcd_getstringsize( s->text, _font, &w, &h); 1090 /* FIXME no font index */
1091 lcd_getstringsize( s->text, FONT_UI, &w, &h);
1364 lcd_clearrect(xmargin + s->startx*w/s->textlen, 1092 lcd_clearrect(xmargin + s->startx*w/s->textlen,
1365 ymargin + s->starty*h, 1093 ymargin + s->starty*h,
1366 LCD_WIDTH - xmargin, 1094 LCD_WIDTH - xmargin,
1367 h); 1095 h);
1368
1369 } 1096 }
1370#endif 1097#endif
1371
1372
1373 /* restore scrolled row */ 1098 /* restore scrolled row */
1374 lcd_puts(s->startx,s->starty,s->text); 1099 lcd_puts(s->startx,s->starty,s->text);
1375 lcd_update(); 1100 lcd_update();
@@ -1420,20 +1145,16 @@ static void scroll_thread(void)
1420 s->offset = 0; 1145 s->offset = 0;
1421 } 1146 }
1422 1147
1423#ifdef LCD_PROPFONTS 1148#ifdef HAVE_LCD_BITMAP
1424 lcd_clearrect(xmargin + s->startx*fonts[font], 1149 {
1425 ymargin + s->starty*fontheight[font], 1150 /* FIXME no font index */
1426 LCD_WIDTH - xmargin, 1151 int w, h;
1427 fontheight[font]); 1152 lcd_getstringsize( s->text, FONT_UI, &w, &h);
1428#elif defined(LOADABLE_FONTS)
1429 {
1430 int w,h;
1431 lcd_getstringsize( s->text, _font, &w, &h);
1432 lcd_clearrect(xmargin + s->startx*w/s->textlen, 1153 lcd_clearrect(xmargin + s->startx*w/s->textlen,
1433 ymargin + s->starty*h, 1154 ymargin + s->starty*h,
1434 LCD_WIDTH - xmargin, 1155 LCD_WIDTH - xmargin,
1435 h); 1156 h);
1436 } 1157 }
1437#endif 1158#endif
1438 lcd_puts(s->startx,s->starty,s->line); 1159 lcd_puts(s->startx,s->starty,s->line);
1439 lcd_update(); 1160 lcd_update();
diff --git a/firmware/drivers/lcd.h b/firmware/drivers/lcd.h
index 552de9a74f..23b3d75e76 100644
--- a/firmware/drivers/lcd.h
+++ b/firmware/drivers/lcd.h
@@ -101,7 +101,7 @@ extern unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8];
101 101
102extern void lcd_putsxy(int x, int y, unsigned char *string, int font); 102extern void lcd_putsxy(int x, int y, unsigned char *string, int font);
103extern void lcd_setfont(int font); 103extern void lcd_setfont(int font);
104extern void lcd_getfontsize(unsigned int font, int *width, int *height); 104extern void lcd_getfontsize(int font, int *width, int *height);
105extern void lcd_setmargins(int xmargin, int ymargin); 105extern void lcd_setmargins(int xmargin, int ymargin);
106extern int lcd_getxmargin(void); 106extern int lcd_getxmargin(void);
107extern int lcd_getymargin(void); 107extern int lcd_getymargin(void);
@@ -119,19 +119,6 @@ extern void lcd_invertpixel(int x, int y);
119 119
120#endif /* CHARCELLS / BITMAP */ 120#endif /* CHARCELLS / BITMAP */
121 121
122#ifdef LOADABLE_FONTS 122extern int lcd_getstringsize(unsigned char *str, int font, int *w, int *h);
123extern int lcd_init_fonts(void);
124extern void lcd_putsldfxy(int x, int y, unsigned char *str);
125extern int lcd_getstringsize(unsigned char *str,
126 unsigned char* font,
127 int *w, int *h);
128extern void lcd_setldfont(unsigned char* f);
129
130extern unsigned char* lcd_getcurrentldfont(void);
131#endif
132
133#ifdef LCD_PROPFONTS
134extern int lcd_getstringsize(unsigned char *str, unsigned int font, int *w, int *h);
135#endif
136 123
137#endif /* __LCD_H__ */ 124#endif /* __LCD_H__ */
diff --git a/firmware/font.c b/firmware/font.c
new file mode 100644
index 0000000000..5bde2ff1bc
--- /dev/null
+++ b/firmware/font.c
@@ -0,0 +1,228 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (c) 2002 by Greg Haerr <greg@censoft.com>
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19/*
20 * Rockbox startup font initialization
21 * This file specifies which fonts get compiled-in and
22 * loaded at startup, as well as their mapping into
23 * the FONT_SYSFIXED, FONT_UI and FONT_MP3 ids.
24 */
25#include "config.h"
26
27#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR)
28
29#include <stdio.h>
30#include <string.h>
31#include "lcd.h"
32#include "font.h"
33#include "debug.h"
34#include "panic.h"
35
36/* available compiled-in fonts*/
37extern MWCFONT font_X5x8;
38/*extern MWCFONT font_X6x9; */
39/*extern MWCFONT font_courB08; */
40/*extern MWCFONT font_timR08; */
41
42/* structure filled in by rbf_load_font*/
43static MWCFONT font_UI;
44
45/* system font table, in order of FONT_xxx definition*/
46struct corefont sysfonts[MAXFONTS] = {
47 { &font_X5x8, NULL }, /* compiled-in FONT_SYSFIXED*/
48 { &font_UI, "/system.fnt" }, /* loaded FONT_UI*/
49 { NULL, NULL }, /* no FONT_MP3*/
50};
51
52void
53font_init(void)
54{
55 struct corefont *cfp;
56
57 for (cfp=sysfonts; cfp < &sysfonts[MAXFONTS]; ++cfp) {
58 if (cfp->pf && cfp->diskname) {
59 cfp->pf = rbf_load_font(cfp->diskname, cfp->pf);
60#if defined(DEBUG) || defined(SIMULATOR)
61 if (!cfp->pf)
62 DEBUGF("Font load failed: %s\n", cfp->diskname);
63#endif
64 }
65 }
66}
67
68/*
69 * Return a pointer to an incore font structure.
70 * If the requested font isn't loaded/compiled-in,
71 * decrement the font number and try again.
72 */
73PMWCFONT
74getfont(int font)
75{
76 PMWCFONT pf;
77
78 while (1) {
79 pf = sysfonts[font].pf;
80 if (pf && pf->height)
81 return pf;
82 if (--font < 0)
83 panicf("No font!");
84 }
85}
86
87/*
88 * Return width and height of a given font.
89 */
90void lcd_getfontsize(int font, int *width, int *height)
91{
92 PMWCFONT pf = getfont(font);
93
94 *width = pf->maxwidth;
95 *height = pf->height;
96}
97
98/*
99 * Return width and height of a given font.
100 */
101//FIXME rename to font_gettextsize, add baseline
102int
103lcd_getstringsize(unsigned char *str, int font, int *w, int *h)
104{
105 PMWCFONT pf = getfont(font);
106 int ch;
107 int width = 0;
108
109 while((ch = *str++)) {
110
111 /* check input range*/
112 if (ch < pf->firstchar || ch >= pf->firstchar+pf->size)
113 ch = pf->defaultchar;
114 ch -= pf->firstchar;
115
116 /* get proportional width and glyph bits*/
117 width += pf->width? pf->width[ch]: pf->maxwidth;
118 }
119 *w = width;
120 *h = pf->height;
121
122 return width;
123}
124
125/*
126 * Take an MWIMAGEBITS bitmap and convert to Rockbox format.
127 * Used for converting font glyphs for the time being.
128 * Can use for standard X11 and Win32 images as well.
129 *
130 * Doing it this way keeps fonts in standard formats,
131 * as well as keeping Rockbox hw bitmap format.
132 */
133static void
134rotleft(unsigned char *dst, MWIMAGEBITS *src, unsigned int width,
135 unsigned int height)
136{
137 unsigned int i,j;
138 unsigned int dst_col = 0; /* destination column*/
139 unsigned int dst_shift = 0; /* destination shift amount*/
140 unsigned int dst_linelen; /* # bytes per output row*/
141 unsigned int src_words; /* # words of input image*/
142
143 /* calc bytes per output row*/
144 dst_linelen = (height-1)/8+1;
145
146 /* calc words of input image*/
147 src_words = MWIMAGE_WORDS(width) * height;
148
149 /* clear background*/
150 memset(dst, 0, dst_linelen*height);
151
152 for (i=0; i < src_words; i++) {
153 MWIMAGEBITS srcmap; /* current src input bit*/
154 MWIMAGEBITS dstmap; /* current dst output bit*/
155
156 /* calc src input bit*/
157 srcmap = 1 << (sizeof(MWIMAGEBITS)*8-1);
158
159 /* calc dst output bit*/
160 if (i>0 && (i%8==0)) {
161 ++dst_col;
162 dst_shift = 0;
163 }
164 dstmap = 1 << dst_shift++;
165
166 /* for each input column...*/
167 for(j=0; j < width; j++) {
168
169 /* calc input bitmask*/
170 MWIMAGEBITS bit = srcmap >> j;
171 if (bit==0) {
172 srcmap = 1 << (sizeof(MWIMAGEBITS)*8-1);
173 bit = srcmap >> (j % 16);
174 }
175
176 /* if set in input, set in rotated output*/
177 if (bit & src[i]) {
178 /* input column j becomes output row*/
179 dst[j*dst_linelen + dst_col] |= dstmap;
180 }
181 //printf((bit & src[i])? "*": ".");
182 }
183 //printf("\n");
184 }
185}
186
187/*
188 * Put a string at specified bit position
189 */
190//FIXME rename font_putsxy?
191void
192lcd_putsxy(int x, int y, unsigned char *str, int font)
193{
194 int ch;
195 unsigned char *src;
196 PMWCFONT pf = getfont(font);
197
198 while (((ch = *str++) != '\0')) {
199 MWIMAGEBITS *bits;
200 int width;
201 unsigned char outbuf[256];
202
203 /* check input range*/
204 if (ch < pf->firstchar || ch >= pf->firstchar+pf->size)
205 ch = pf->defaultchar;
206 ch -= pf->firstchar;
207
208 /* get proportional width and glyph bits*/
209 width = pf->width? pf->width[ch]: pf->maxwidth;
210 if(x + width > LCD_WIDTH)
211 break;
212 bits = pf->bits + (pf->offset? pf->offset[ch]: (pf->height * ch));
213
214 /* rotate left for lcd_bitmap function input*/
215 rotleft(outbuf, bits, width, pf->height);
216 src = outbuf;
217
218 lcd_bitmap (src, x, y, width, pf->height, true);
219 x += width;
220 }
221}
222#endif /* HAVE_LCD_BITMAP */
223
224/* -----------------------------------------------------------------
225 * local variables:
226 * eval: (load-file "rockbox-mode.el")
227 * end:
228 */
diff --git a/firmware/font.h b/firmware/font.h
new file mode 100644
index 0000000000..13d60e560b
--- /dev/null
+++ b/firmware/font.h
@@ -0,0 +1,126 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (c) 2002 by Greg Haerr <greg@censoft.com>
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19/*
20 * Incore font and image definitions
21 */
22#include "config.h"
23
24#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR)
25
26/* max static loadable fonts buffer*/
27#ifndef MAX_FONT_SIZE
28#define MAX_FONT_SIZE 9000 /* max total fontsize allocation*/
29#endif
30
31/*
32 * Fonts are specified by number, and used for display
33 * of menu information as well as mp3 filename data.
34 * At system startup, up to MAXFONTS fonts are initialized,
35 * either by being compiled-in, or loaded from disk.
36 * If the font asked for does not exist, then the
37 * system uses the next lower font number. Font 0
38 * must be available at system startup.
39 * Fonts are specified in firmware/font.c.
40 */
41#define FONT_SYSFIXED 0 /* system fixed pitch font*/
42#define FONT_UI 1 /* system porportional font*/
43#define FONT_MP3 2 /* font used for mp3 info*/
44#define MAXFONTS 3 /* max # fonts*/
45
46/*
47 * .fnt (.rbf) loadable font file format definition
48 *
49 * format len description
50 * ------------------------- ---- ------------------------------
51 * UCHAR version[4] 4 magic number and version bytes
52 * UCHAR name[64] 64 font name, space padded
53 * UCHAR copyright[256] 256 copyright info, space padded
54 * USHORT maxwidth 2 font max width in pixels
55 * USHORT height 2 font height in pixels
56 * USHORT ascent 2 font ascent (baseline) in pixels
57 * ULONG firstchar 4 first character code in font
58 * ULONG defaultchar 4 default character code in font
59 * ULONG size 4 # characters in font
60 * ULONG nbits 4 # words imagebits data in file
61 * ULONG noffset 4 # longs offset data in file
62 * ULONG nwidth 4 # bytes width data in file
63 * MWIMAGEBITS bits nbits*2 image bits variable data
64 * ULONG offset noffset*4 offset variable data
65 * UCHAR width nwidth*1 width variable data
66 */
67
68/* loadable font magic and version #*/
69#define VERSION "RB10"
70
71/* MWIMAGEBITS helper macros*/
72#define MWIMAGE_WORDS(x) (((x)+15)/16) /* image size in words*/
73#define MWIMAGE_BYTES(x) (((x)+7)/8) /* image size in bytes*/
74#define MWIMAGE_BITSPERIMAGE (sizeof(MWIMAGEBITS) * 8)
75#define MWIMAGE_BITVALUE(n) ((MWIMAGEBITS) (((MWIMAGEBITS) 1) << (n)))
76#define MWIMAGE_FIRSTBIT (MWIMAGE_BITVALUE(MWIMAGE_BITSPERIMAGE - 1))
77#define MWIMAGE_TESTBIT(m) ((m) & MWIMAGE_FIRSTBIT)
78#define MWIMAGE_SHIFTBIT(m) ((MWIMAGEBITS) ((m) << 1))
79
80typedef unsigned short MWIMAGEBITS; /* bitmap image unit size*/
81
82/* builtin C-based proportional/fixed font structure */
83/* based on The Microwindows Project http://microwindows.org */
84typedef struct {
85 char * name; /* font name*/
86 int maxwidth; /* max width in pixels*/
87 unsigned int height; /* height in pixels*/
88 int ascent; /* ascent (baseline) height*/
89 int firstchar; /* first character in bitmap*/
90 int size; /* font size in glyphs*/
91 MWIMAGEBITS *bits; /* 16-bit right-padded bitmap data*/
92 unsigned long *offset; /* offsets into bitmap data*/
93 unsigned char *width; /* character widths or NULL if fixed*/
94 int defaultchar; /* default char (not glyph index)*/
95 long bits_size; /* # words of MWIMAGEBITS bits*/
96#if 0
97 char * facename; /* facename of font*/
98 char * copyright; /* copyright info for loadable fonts*/
99#endif
100} MWCFONT, *PMWCFONT;
101
102/* structure for rockbox startup font selection*/
103struct corefont {
104 PMWCFONT pf; /* compiled-in or loaded font*/
105 char *diskname; /* diskname if not compiled-in*/
106};
107
108extern struct corefont sysfonts[MAXFONTS];
109
110/* font routines*/
111PMWCFONT getfont(int font);
112PMWCFONT rbf_load_font(char *path, PMWCFONT pf);
113
114void font_init(void);
115
116#else /* HAVE_LCD_BITMAP */
117
118#define font_init()
119
120#endif
121
122/* -----------------------------------------------------------------
123 * local variables:
124 * eval: (load-file "rockbox-mode.el")
125 * end:
126 */
diff --git a/firmware/loadfont.c b/firmware/loadfont.c
new file mode 100644
index 0000000000..7f572a4841
--- /dev/null
+++ b/firmware/loadfont.c
@@ -0,0 +1,202 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (c) 2002 by Greg Haerr <greg@censoft.com>
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19/*
20 * Load an rbf font, store in incore format.
21 */
22#include "config.h"
23
24#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR)
25
26#include <stdio.h>
27#include <string.h>
28#include "font.h"
29#include "file.h"
30
31#ifndef DEBUGF
32#include "debug.h"
33#endif
34
35#ifndef O_BINARY
36#define O_BINARY 0
37#endif
38
39/* static buffer allocation structures*/
40static unsigned char mbuf[MAX_FONT_SIZE];
41static unsigned char *freeptr = mbuf;
42typedef unsigned char CFILE;
43static CFILE *fileptr;
44static CFILE *eofptr;
45
46static int
47READSHORT(unsigned short *sp)
48{
49 unsigned short s;
50
51 s = *fileptr++ & 0xff;
52 *sp = (*fileptr++ << 8) | s;
53 return (fileptr <= eofptr);
54}
55
56static int
57READLONG(unsigned long *lp)
58{
59 unsigned long l;
60
61 l = *fileptr++ & 0xff;
62 l |= *fileptr++ << 8;
63 l |= *fileptr++ << 16;
64 *lp = (*fileptr++ << 24) | l;
65 return (fileptr <= eofptr);
66}
67
68/* read count bytes*/
69static int
70READSTR(char *buf, int count)
71{
72 int n = count;
73
74 while (--n >= 0)
75 *buf++ = *fileptr++;
76 return (fileptr <= eofptr)? count: 0;
77}
78
79/* read totlen bytes, return NUL terminated string*/
80/* may write 1 past buf[totlen]; removes blank pad*/
81static int
82READSTRPAD(char *buf, int totlen)
83{
84 char *p = buf;
85 int n = totlen;
86
87 while (--n >= 0)
88 *p++ = *fileptr++;
89 if (fileptr > eofptr)
90 return 0;
91
92 p = &buf[totlen];
93 *p-- = 0;
94 while (*p == ' ' && p >= buf)
95 *p-- = '\0';
96 return totlen;
97}
98
99/* read and load font into incore font structure*/
100PMWCFONT
101rbf_load_font(char *path, PMWCFONT pf)
102{
103 int fd, filesize;
104 unsigned short maxwidth, height, ascent;
105 unsigned long firstchar, defaultchar, size;
106 unsigned long nbits, noffset, nwidth;
107 char version[4+1];
108 char copyright[256+1];
109
110 memset(pf, 0, sizeof(MWCFONT));
111
112 /* open and read entire font file*/
113 fd = open(path, O_RDONLY|O_BINARY);
114 if (fd < 0) {
115 DEBUGF("Can't open font: %s\n", path);
116 return NULL;
117 }
118 fileptr = freeptr;
119 filesize = read(fd, fileptr, MAX_FONT_SIZE);
120 freeptr += filesize;
121 eofptr = fileptr + filesize;
122 close(fd);
123 if (filesize == MAX_FONT_SIZE) {
124 DEBUGF("Font %s too large: %d\n", path, filesize);
125 return NULL;
126 }
127
128 /* read magic and version #*/
129 memset(version, 0, sizeof(version));
130 if (READSTR(version, 4) != 4)
131 return NULL;
132 if (strcmp(version, VERSION) != 0)
133 return NULL;
134
135 /* internal font name*/
136 pf->name = fileptr;
137 if (READSTRPAD(pf->name, 64) != 64)
138 return NULL;
139
140 /* copyright, not currently stored*/
141 if (READSTRPAD(copyright, 256) != 256)
142 return NULL;
143
144 /* font info*/
145 if (!READSHORT(&maxwidth))
146 return NULL;
147 pf->maxwidth = maxwidth;
148 if (!READSHORT(&height))
149 return NULL;
150 pf->height = height;
151 if (!READSHORT(&ascent))
152 return NULL;
153 pf->ascent = ascent;
154 if (!READLONG(&firstchar))
155 return NULL;
156 pf->firstchar = firstchar;
157 if (!READLONG(&defaultchar))
158 return NULL;
159 pf->defaultchar = defaultchar;
160 if (!READLONG(&size))
161 return NULL;
162 pf->size = size;
163
164 /* get variable font data sizes*/
165 /* # words of MWIMAGEBITS*/
166 if (!READLONG(&nbits))
167 return NULL;
168 pf->bits_size = nbits;
169
170 /* # longs of offset*/
171 if (!READLONG(&noffset))
172 return NULL;
173
174 /* # bytes of width*/
175 if (!READLONG(&nwidth))
176 return NULL;
177
178 /* variable font data*/
179 pf->bits = (MWIMAGEBITS *)fileptr;
180 fileptr += nbits*sizeof(MWIMAGEBITS);
181
182 if (noffset) {
183 pf->offset = (unsigned long *)fileptr;
184 fileptr += noffset*sizeof(unsigned long);
185 } else pf->offset = NULL;
186
187 if (nwidth) {
188 pf->width = (unsigned char *)fileptr;
189 fileptr += noffset*sizeof(unsigned char);
190 } else pf->width = NULL;
191
192 if (fileptr > eofptr)
193 return NULL;
194 return pf; /* success!*/
195}
196#endif /* HAVE_LCD_BITMAP */
197
198/* -----------------------------------------------------------------
199 * local variables:
200 * eval: (load-file "rockbox-mode.el")
201 * end:
202 */
diff --git a/firmware/panic.c b/firmware/panic.c
index b130482495..10ff454c40 100644
--- a/firmware/panic.c
+++ b/firmware/panic.c
@@ -21,6 +21,7 @@
21#include <stdarg.h> 21#include <stdarg.h>
22#include "panic.h" 22#include "panic.h"
23#include "lcd.h" 23#include "lcd.h"
24#include "font.h"
24#include "debug.h" 25#include "debug.h"
25 26
26static char panic_buf[128]; 27static char panic_buf[128];
@@ -48,7 +49,9 @@ void panicf( char *fmt, ...)
48 lcd_puts(0,0,panic_buf); 49 lcd_puts(0,0,panic_buf);
49#elif defined(HAVE_LCD_BITMAP) 50#elif defined(HAVE_LCD_BITMAP)
50 lcd_clear_display(); 51 lcd_clear_display();
51 lcd_putsxy(0,0,panic_buf,0); 52
53 //FIXME putsxy may call panic...
54 lcd_putsxy(0,0,panic_buf,FONT_SYSFIXED);
52 lcd_update(); 55 lcd_update();
53 56
54#else 57#else
diff --git a/firmware/unicode.c b/firmware/unicode.c
deleted file mode 100644
index 150dd5171e..0000000000
--- a/firmware/unicode.c
+++ /dev/null
@@ -1,101 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alex Gitelman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#include "unicode.h"
20#include "string.h"
21
22#define MAX_TYPE 3
23
24unsigned char *conversion_table[255];
25unsigned char *reverse_conversion_table[255];
26
27static unsigned char page_04[] = {
28 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
29 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
30 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
31 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
32 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
33 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
34 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
35 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
36 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
37 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
38 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
39 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
40 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
41 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
42 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
43 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
44};
45
46void install_unicode_tables(void)
47{
48 install_conversion_table(0x04, page_04);
49}
50
51void unicode_init(void)
52{
53 memset(conversion_table, 0, sizeof(conversion_table));
54 memset(reverse_conversion_table, 0, sizeof(reverse_conversion_table));
55 install_unicode_tables();
56}
57
58/**
59Convertion table defines how chars in ing given page map to ascii
60*/
61void install_conversion_table(unsigned char page, unsigned char* conv_table)
62{
63 if (conv_table!=0)
64 conversion_table[page] = conv_table;
65 else
66 conversion_table[page] = 0;
67}
68
69void install_reverse_conversion_table(unsigned char page,
70 unsigned char* rev_conv_table)
71{
72 if (rev_conv_table!=0)
73 reverse_conversion_table[page] = rev_conv_table;
74 else
75 reverse_conversion_table[page] = 0;
76}
77
78
79unsigned char from_unicode(const unsigned char *uni_char)
80{
81 /*
82 Here we should get proper code page conversions.
83 For now hack for Cyrrilic->Unicode
84 */
85 unsigned char *table = conversion_table[uni_char[0]];
86 if (table!=0)
87 return table[uni_char[1]];
88 /* If page is not present -> no conversion */
89 return uni_char[1];
90
91}
92
93void to_unicode(unsigned char c, unsigned char page, unsigned char *uni_char)
94{
95 unsigned char *table = reverse_conversion_table[page];
96 if (table!=0)
97 uni_char[1] = table[c];
98 else
99 uni_char[1] = c;
100 uni_char[0] = page;
101}
diff --git a/firmware/unicode.h b/firmware/unicode.h
deleted file mode 100644
index dfb4daa2c5..0000000000
--- a/firmware/unicode.h
+++ /dev/null
@@ -1,36 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alex Gitelman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#ifndef __UNICODE__
20#define __UNICODE__
21
22unsigned char from_unicode(const unsigned char *uni_char);
23void to_unicode(unsigned char c, unsigned char page, unsigned char *uni_char);
24/* Unicode -> ASCII */
25void install_conversion_table(unsigned char page, unsigned char* conv_table);
26/* ASCII -> Unicode */
27void install_reverse_conversion_table(unsigned char page,
28 unsigned char* rev_conv_table);
29void unicode_init(void);
30
31/* Unicode main init point. Here we must read conversion
32 tables and install them */
33void install_unicode_tables(void);
34
35
36#endif
diff --git a/uisimulator/x11/Makefile b/uisimulator/x11/Makefile
index d2b109e443..c6f86d40ad 100644
--- a/uisimulator/x11/Makefile
+++ b/uisimulator/x11/Makefile
@@ -76,13 +76,8 @@ CFLAGS = $(DEBUG) $(DEFINES) $(INCLUDES) -W -Wall
76 76
77APPCFLAGS = $(DEBUG) $(DEFINES) -DAPPSVERSION=\"$(VERSION)\" $(APPINCLUDES) -W -Wall 77APPCFLAGS = $(DEBUG) $(DEFINES) -DAPPSVERSION=\"$(VERSION)\" $(APPINCLUDES) -W -Wall
78 78
79FIRMSRCS = chartables.c lcd.c sprintf.c id3.c debug.c usb.c mpeg.c power.c powermgmt.c 79FIRMSRCS = chartables.c lcd.c sprintf.c id3.c debug.c usb.c mpeg.c power.c\
80 80 powermgmt.c font.c X5x8.c loadfont.c panic.c
81ifeq (LOADABLE_FONTS,$(findstring LOADABLE_FONTS, $(DEFINES)))
82 FIRMSRCS += unicode.c ajf.c panic.c
83 EXTRA_TARGETS = $(OBJDIR)/archos/system.ajf
84 SYSTEM_FONT = $(FIRMWAREDIR)/fonts/alt6x10.bdf
85endif
86 81
87APPS = main.c tree.c menu.c credits.c main_menu.c\ 82APPS = main.c tree.c menu.c credits.c main_menu.c\
88 playlist.c showtext.c wps.c wps-display.c settings.c status.c icons.c 83 playlist.c showtext.c wps.c wps-display.c settings.c status.c icons.c
@@ -110,9 +105,6 @@ clean:
110 $(RM) $(OBJS) *~ core $(TARGET) $(CLIENTS) 105 $(RM) $(OBJS) *~ core $(TARGET) $(CLIENTS)
111 $(RM) -r $(DEPS) 106 $(RM) -r $(DEPS)
112 107
113$(OBJDIR)/archos/system.ajf: $(TOOLSDIR)/bdf2ajf $(SYSTEM_FONT)
114 $(TOOLSDIR)/bdf2ajf -f $(SYSTEM_FONT) -o $(OBJDIR)/archos/system.ajf
115
116distclean: clean 108distclean: clean
117 $(RM) config.cache 109 $(RM) config.cache
118 110
@@ -227,6 +219,24 @@ $(OBJDIR)/lcd.o: $(DRIVERS)/lcd.c
227$(OBJDIR)/chartables.o: $(FIRMWAREDIR)/chartables.c 219$(OBJDIR)/chartables.o: $(FIRMWAREDIR)/chartables.c
228 $(CC) $(APPCFLAGS) -c $< -o $@ 220 $(CC) $(APPCFLAGS) -c $< -o $@
229 221
222$(OBJDIR)/X5x8.o: $(FIRMWAREDIR)/X5x8.c
223 $(CC) $(APPCFLAGS) -c $< -o $@
224
225$(OBJDIR)/X6x9.o: $(FIRMWAREDIR)/X6x9.c
226 $(CC) $(APPCFLAGS) -c $< -o $@
227
228$(OBJDIR)/timR08.o: $(FIRMWAREDIR)/timR08.c
229 $(CC) $(APPCFLAGS) -c $< -o $@
230
231$(OBJDIR)/courB08.o: $(FIRMWAREDIR)/courB08.c
232 $(CC) $(APPCFLAGS) -c $< -o $@
233
234$(OBJDIR)/font.o: $(FIRMWAREDIR)/font.c
235 $(CC) $(APPCFLAGS) -c $< -o $@
236
237$(OBJDIR)/loadfont.o: $(FIRMWAREDIR)/loadfont.c
238 $(CC) $(APPCFLAGS) -c $< -o $@
239
230$(OBJDIR)/settings.o: $(APPDIR)/settings.c 240$(OBJDIR)/settings.o: $(APPDIR)/settings.c
231 $(CC) $(APPCFLAGS) -c $< -o $@ 241 $(CC) $(APPCFLAGS) -c $< -o $@
232 242
diff --git a/uisimulator/x11/uibasic.c b/uisimulator/x11/uibasic.c
index 165b1cebe9..2eac2f8e06 100644
--- a/uisimulator/x11/uibasic.c
+++ b/uisimulator/x11/uibasic.c
@@ -198,6 +198,7 @@ screenhack (Display *the_dpy, Window the_window)
198 screen_redraw(); 198 screen_redraw();
199 199
200#ifdef HAVE_LCD_CHARCELLS 200#ifdef HAVE_LCD_CHARCELLS
201 // FIXME??
201 lcd_setfont(2); 202 lcd_setfont(2);
202#endif 203#endif
203 204