]> git.karo-electronics.de Git - oswald.git/blob - ui/Fonts.c
54929ce5776b9ca991afdaf2c4d559106764b6da
[oswald.git] / ui / Fonts.c
1 //==============================================================================
2 //  Copyright 2011 Meta Watch Ltd. - http://www.MetaWatch.org/
3 // 
4 //  Licensed under the Meta Watch License, Version 1.0 (the "License");
5 //  you may not use this file except in compliance with the License.
6 //  You may obtain a copy of the License at
7 //  
8 //      http://www.MetaWatch.org/licenses/license-1.0.html
9 //
10 //  Unless required by applicable law or agreed to in writing, software
11 //  distributed under the License is distributed on an "AS IS" BASIS,
12 //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 //  See the License for the specific language governing permissions and
14 //  limitations under the License.
15 //==============================================================================
16
17 #include <stdio.h>
18 #include "Fonts.h"
19
20 /*! The number of printable characters in the font tables */
21 #define PRINTABLE_CHARACTERS ( 94 )
22
23 const unsigned char MetaWatch5table[PRINTABLE_CHARACTERS][5];
24 const unsigned char MetaWatch7table[PRINTABLE_CHARACTERS][7];
25 const u16t MetaWatch16table[PRINTABLE_CHARACTERS][16];
26 const u16t MetaWatchTimeTable[TOTAL_TIME_CHARACTERS][19];
27 const unsigned char MetaWatchMonospaced10Table[PRINTABLE_CHARACTERS][10];
28
29 const unsigned char MetaWatch5width[PRINTABLE_CHARACTERS];
30 const unsigned char MetaWatch7width[PRINTABLE_CHARACTERS];
31 const unsigned char MetaWatch16width[PRINTABLE_CHARACTERS];
32 const unsigned char MetaWatchTimeWidth[TOTAL_TIME_CHARACTERS];
33
34 /*! Font Structure
35  *
36  * \param Type is the enumerated type of font
37  * \param Height
38  * \param Spacing is the horizontal spacing that should be inserted when
39  * drawing characters
40  */
41 typedef struct
42 {
43   etFontType Type;
44   unsigned char Height;
45   unsigned char Spacing;
46 } tFont;
47
48 static tFont CurrentFont;
49
50 void SetFont(etFontType Type)
51 {
52   switch (Type)
53   {
54   case MetaWatch5:
55     CurrentFont.Type = Type;
56     CurrentFont.Height = 5;
57     CurrentFont.Spacing = 1;
58     break;
59   
60   case MetaWatch7:
61     CurrentFont.Type = Type;
62     CurrentFont.Height = 7;
63     CurrentFont.Spacing = 1;
64     break;
65   
66   case MetaWatch16:
67     CurrentFont.Type = Type;
68     CurrentFont.Height = 16;
69     CurrentFont.Spacing = 1;
70     break;
71     
72   case MetaWatchTime:
73     CurrentFont.Type = Type;
74     CurrentFont.Height = 19;
75     CurrentFont.Spacing = 1;
76     break;
77
78   case MetaWatchMonospaced10:
79     CurrentFont.Type = Type;
80     CurrentFont.Height = 10;
81     CurrentFont.Spacing = 0;
82     break;    
83
84   default:
85     //printf("Undefined Font Selected\r\n");
86     break;
87   }  
88 }
89
90 unsigned char MapDigitToIndex(unsigned char Digit)
91 {
92   /* default is a space (the first printable character) */
93   return (Digit < 10 ? Digit + 0x10 : 0);
94 }
95
96
97 unsigned char GetCharacterWidth(unsigned char Character)
98
99   unsigned char index = MapCharacterToIndex(Character);
100   unsigned char Width = 0;
101   
102   switch (CurrentFont.Type)
103   {
104   case MetaWatch5:    Width = MetaWatch5width[index];    break;
105   case MetaWatch7:    Width = MetaWatch7width[index];    break;
106   case MetaWatch16:   Width = MetaWatch16width[index];   break;
107   case MetaWatchTime: Width = MetaWatchTimeWidth[index]; break;
108   case MetaWatchMonospaced10: Width = 7; break;
109   default : 
110     break;
111   }
112   
113   return Width;
114   
115 }
116
117 unsigned char GetCharacterHeight(void)
118 {
119   return CurrentFont.Height;  
120 }
121
122 void SetFontSpacing(unsigned char Spacing)
123 {
124   CurrentFont.Spacing = Spacing;  
125 }
126
127 unsigned char GetFontSpacing(void)
128 {
129   return CurrentFont.Spacing;  
130 }
131
132 unsigned char MapCharacterToIndex(unsigned char CharIn)
133 {
134   unsigned char Result = 0;
135
136   switch (CurrentFont.Type)
137   {
138   case MetaWatchTime: 
139     Result = CharIn;  
140     break;
141     
142   default : 
143     // space = 0x20 and 0x7f = delete character
144     if ( (CharIn >= 0x20) && (CharIn < 0x7f) )
145     {
146       Result = CharIn - 0x20;
147     }
148     break;
149   }
150   
151   return Result;
152   
153 }
154
155
156 void GetCharacterBitmap(unsigned char Character, u16t *pBitmap)
157 {
158   unsigned char index = MapCharacterToIndex(Character);
159
160   unsigned char row;
161   for (row = 0; row < CurrentFont.Height; row++ )
162   {
163     switch (CurrentFont.Type)
164     {
165     case MetaWatch5:
166       pBitmap[row] = (u16t)MetaWatch5table[index][row];  
167       break;
168   
169     case MetaWatch7:
170       pBitmap[row] = (u16t)MetaWatch7table[index][row];  
171       break;
172   
173     case MetaWatch16:
174       pBitmap[row] = MetaWatch16table[index][row];  
175       break;
176   
177     case MetaWatchTime:
178       pBitmap[row] = MetaWatchTimeTable[index][row];
179       break;
180       
181     case MetaWatchMonospaced10:
182       pBitmap[row] = MetaWatchMonospaced10Table[index][row];
183       break;
184     default:
185       break;
186     }
187   
188   }
189
190 }
191
192 const unsigned char MetaWatch5table[PRINTABLE_CHARACTERS][5] = 
193 {
194   /* character 0x20 (' '): (width = 2) */
195   {0x00, 0x00, 0x00, 0x00, 0x00,},
196   
197   /* character 0x21 ('!'): (width=1) */
198   {0x01, 0x01, 0x01, 0x00, 0x01,},
199   
200   /* character 0x22 ('"'): (width=3) */
201   {0x05, 0x05, 0x00, 0x00, 0x00,},
202   
203   /* character 0x23 ('#'): (width=5) */
204   { 0x0A, 0x1F, 0x0A, 0x1F, 0x0A,},
205   {
206   /* character 0x24 ('$'): (width=3) */
207   0x00, 0x00, 0x00, 0x00, 0x00,},
208   {
209   /* character 0x25 ('%'): (width=3) */
210   0x00, 0x00, 0x00, 0x00, 0x00,},
211   {
212   /* character 0x26 ('&'): (width=5) */
213   0x02, 0x05, 0x16, 0x09, 0x1E,},
214   {
215   /* character 0x27 ('''): (width=1) */
216   0x01, 0x01, 0x00, 0x00, 0x00,},
217   {
218   /* character 0x28 ('('): (width=2) */
219   0x02, 0x01, 0x01, 0x01, 0x02,},
220   {
221   /* character 0x29 (')'): (width=2) */
222   0x01, 0x02, 0x02, 0x02, 0x01,},
223   {
224   /* character 0x2A ('*'): (width=5) */
225   0x0A, 0x04, 0x1F, 0x04, 0x0A,},
226   {
227   /* character 0x2B ('+'): (width=5) */
228   0x04, 0x04, 0x1F, 0x04, 0x04,},
229   {
230   /* character 0x2C (','): (width=1) */
231   0x00, 0x00, 0x00, 0x01, 0x01,},
232   {
233   /* character 0x2D ('-'): (width=3) */
234   0x00, 0x00, 0x07, 0x00, 0x00,},
235   {
236   /* character 0x2E ('.'): (width=1) */
237   0x00, 0x00, 0x00, 0x00, 0x01,},
238   {
239   /* character 0x2F ('/'): (width=5) */
240   0x10, 0x08, 0x04, 0x02, 0x01,},
241   {
242   /* character 0x30 ('0'): (width=4) */
243   0x06, 0x09, 0x09, 0x09, 0x06,},
244   {
245   /* character 0x31 ('1'): (width=3) */
246   0x03, 0x02, 0x02, 0x02, 0x07,},
247   {
248   /* character 0x32 ('2'): (width=4) */
249   0x06, 0x09, 0x04, 0x02, 0x0F,},
250   {
251   /* character 0x33 ('3'): (width=4) */
252   0x0F, 0x08, 0x06, 0x08, 0x07,},
253   {
254   /* character 0x34 ('4'): (width=4) */
255   0x04, 0x06, 0x05, 0x0F, 0x04,},
256   {
257   /* character 0x35 ('5'): (width=4) */
258   0x0F, 0x01, 0x0F, 0x08, 0x07,},
259   {
260   /* character 0x36 ('6'): (width=4) */
261   0x06, 0x01, 0x07, 0x09, 0x06,},
262   {
263   /* character 0x37 ('7'): (width=4) */
264   0x0F, 0x08, 0x04, 0x02, 0x02,},
265   {
266   /* character 0x38 ('8'): (width=4) */
267   0x06, 0x09, 0x06, 0x09, 0x06,},
268   {
269   /* character 0x39 ('9'): (width=4) */
270   0x06, 0x09, 0x0E, 0x08, 0x06,},
271   {
272   /* character 0x3A (':'): (width=1) */
273   0x00, 0x01, 0x00, 0x01, 0x00,},
274   {
275   /* character 0x3B (';'): (width=2) */
276   0x00, 0x02, 0x00, 0x02, 0x01,},
277   {
278   /* character 0x3C ('<'): (width=3) */
279   0x04, 0x02, 0x01, 0x02, 0x04,},
280   {
281   /* character 0x3D ('='): (width=4) */
282   0x00, 0x0F, 0x00, 0x0F, 0x00,},
283   {
284   /* character 0x3E ('>'): (width=3) */
285   0x01, 0x02, 0x04, 0x02, 0x01,},
286   {
287   /* character 0x3F ('?'): (width=3) */
288   0x03, 0x04, 0x02, 0x00, 0x02,},
289   {
290   /* character 0x40 ('@'): (width=3) */
291   0x00, 0x00, 0x00, 0x00, 0x00,},
292   {
293   /* character 0x41 ('A'): (width=5) */
294   0x04, 0x04, 0x0A, 0x0E, 0x11,},
295   {
296   /* character 0x42 ('B'): (width=4) */
297   0x07, 0x09, 0x07, 0x09, 0x07,},
298   {
299   /* character 0x43 ('C'): (width=4) */
300   0x06, 0x09, 0x01, 0x09, 0x06,},
301   {
302   /* character 0x44 ('D'): (width=4) */
303   0x07, 0x09, 0x09, 0x09, 0x07,},
304   {
305   /* character 0x45 ('E'): (width=4) */
306   0x0F, 0x01, 0x07, 0x01, 0x0F,},
307   {
308   /* character 0x46 ('F'): (width=4) */
309   0x0F, 0x01, 0x07, 0x01, 0x01,},
310   {
311   /* character 0x47 ('G'): (width=4) */
312   0x06, 0x01, 0x0D, 0x09, 0x06,},
313   {
314   /* character 0x48 ('H'): (width=4) */
315   0x09, 0x09, 0x0F, 0x09, 0x09,},
316   {
317   /* character 0x49 ('I'): (width=3) */
318   0x07, 0x02, 0x02, 0x02, 0x07,},
319   {
320   /* character 0x4A ('J'): (width=4) */
321   0x08, 0x08, 0x08, 0x09, 0x06,},
322   {
323   /* character 0x4B ('K'): (width=4) */
324   0x09, 0x05, 0x03, 0x05, 0x09,},
325   {
326   /* character 0x4C ('L'): (width=4) */
327   0x01, 0x01, 0x01, 0x01, 0x0F,},
328   {
329   /* character 0x4D ('M'): (width=5) */
330   0x11, 0x1B, 0x15, 0x11, 0x11,},
331   {
332   /* character 0x4E ('N'): (width=5) */
333   0x11, 0x13, 0x15, 0x19, 0x11,},
334   {
335   /* character 0x4F ('O'): (width=4) */
336   0x06, 0x09, 0x09, 0x09, 0x06,},
337   {
338   /* character 0x50 ('P'): (width=4) */
339   0x07, 0x09, 0x07, 0x01, 0x01,},
340   {
341   /* character 0x51 ('Q'): (width=5) */
342   0x06, 0x09, 0x09, 0x09, 0x1E,},
343   {
344   /* character 0x52 ('R'): (width=4) */
345   0x07, 0x09, 0x07, 0x09, 0x09,},
346   {
347   /* character 0x53 ('S'): (width=4) */
348   0x0E, 0x01, 0x06, 0x08, 0x07,},
349   {
350   /* character 0x54 ('T'): (width=3) */
351   0x07, 0x02, 0x02, 0x02, 0x02,},
352   {
353   /* character 0x55 ('U'): (width=4) */
354   0x09, 0x09, 0x09, 0x09, 0x06,},
355   {
356   /* character 0x56 ('V'): (width=5) */
357   0x11, 0x0A, 0x0A, 0x04, 0x04,},
358   {
359   /* character 0x57 ('W'): (width=5) */
360   0x15, 0x15, 0x0A, 0x0A, 0x0A,},
361   {
362   /* character 0x58 ('X'): (width=4) */
363   0x09, 0x09, 0x06, 0x09, 0x09,},
364   {
365   /* character 0x59 ('Y'): (width=5) */
366   0x11, 0x0A, 0x04, 0x04, 0x04,},
367   {
368   /* character 0x5A ('Z'): (width=4) */
369   0x0F, 0x04, 0x02, 0x01, 0x0F,},
370   {
371   /* character 0x5B ('['): (width=2) */
372   0x03, 0x01, 0x01, 0x01, 0x03,},
373   {
374   /* character 0x5C ('\'): (width=5) */
375   0x01, 0x02, 0x04, 0x08, 0x10,},
376   {
377   /* character 0x5D (']'): (width=2) */
378   0x03, 0x02, 0x02, 0x02, 0x03,},
379   {
380   /* character 0x5E ('^'): (width=5) */
381   0x04, 0x0A, 0x11, 0x00, 0x00,},
382   {
383   /* character 0x5F ('_'): (width=4) */
384   0x00, 0x00, 0x00, 0x00, 0x0F,},
385   {
386   /* character 0x60 ('`'): (width=1) */
387   0x01, 0x01, 0x00, 0x00, 0x00,},
388   {
389   /* character 0x61 ('a'): (width=5) */
390   0x04, 0x04, 0x0A, 0x0E, 0x11,},
391   {
392   /* character 0x62 ('b'): (width=4) */
393   0x07, 0x09, 0x07, 0x09, 0x07,},
394   {
395   /* character 0x63 ('c'): (width=4) */
396   0x06, 0x09, 0x01, 0x09, 0x06,},
397   {
398   /* character 0x64 ('d'): (width=4) */
399   0x07, 0x09, 0x09, 0x09, 0x07,},
400   {
401   /* character 0x65 ('e'): (width=4) */
402   0x0F, 0x01, 0x07, 0x01, 0x0F,},
403   {
404   /* character 0x66 ('f'): (width=4) */
405   0x0F, 0x01, 0x07, 0x01, 0x01,},
406   {
407   /* character 0x67 ('g'): (width=4) */
408   0x06, 0x01, 0x0D, 0x09, 0x06,},
409   {
410   /* character 0x68 ('h'): (width=4) */
411   0x09, 0x09, 0x0F, 0x09, 0x09,},
412   {
413   /* character 0x69 ('i'): (width=3) */
414   0x07, 0x02, 0x02, 0x02, 0x07,},
415   {
416   /* character 0x6A ('j'): (width=4) */
417   0x08, 0x08, 0x08, 0x09, 0x06,},
418   {
419   /* character 0x6B ('k'): (width=4) */
420   0x09, 0x05, 0x03, 0x05, 0x09,},
421   {
422   /* character 0x6C ('l'): (width=4) */
423   0x01, 0x01, 0x01, 0x01, 0x0F,},
424   {
425   /* character 0x6D ('m'): (width=5) */
426   0x11, 0x1B, 0x15, 0x11, 0x11,},
427   {
428   /* character 0x6E ('n'): (width=5) */
429   0x11, 0x13, 0x15, 0x19, 0x11,},
430   {
431   /* character 0x6F ('o'): (width=4) */
432   0x06, 0x09, 0x09, 0x09, 0x06,},
433   {
434   /* character 0x70 ('p'): (width=4) */
435   0x07, 0x09, 0x07, 0x01, 0x01,},
436   {
437   /* character 0x71 ('q'): (width=5) */
438   0x06, 0x09, 0x09, 0x09, 0x1E,},
439   {
440   /* character 0x72 ('r'): (width=4) */
441   0x07, 0x09, 0x07, 0x09, 0x09,},
442   {
443   /* character 0x73 ('s'): (width=4) */
444   0x0E, 0x01, 0x06, 0x08, 0x07,},
445   {
446   /* character 0x74 ('t'): (width=3) */
447   0x07, 0x02, 0x02, 0x02, 0x02,},
448   {
449   /* character 0x75 ('u'): (width=4) */
450   0x09, 0x09, 0x09, 0x09, 0x06,},
451   {
452   /* character 0x76 ('v'): (width=5) */
453   0x11, 0x0A, 0x0A, 0x04, 0x04,},
454   {
455   /* character 0x77 ('w'): (width=5) */
456   0x15, 0x15, 0x0A, 0x0A, 0x0A,},
457   {
458   /* character 0x78 ('x'): (width=4) */
459   0x09, 0x09, 0x06, 0x09, 0x09,},
460   {
461   /* character 0x79 ('y'): (width=5) */
462   0x11, 0x0A, 0x04, 0x04, 0x04,},
463   {
464   /* character 0x7A ('z'): (width=4) */
465   0x0F, 0x04, 0x02, 0x01, 0x0F,},
466   {
467   /* character 0x7B ('{'): (width=3) */
468   0x00, 0x00, 0x00, 0x00, 0x00,},
469   {
470   /* character 0x7C ('|'): (width=1) */
471   0x01, 0x01, 0x01, 0x01, 0x01,},
472   {
473   /* character 0x7D ('}'): (width=3) */
474   0x00, 0x00, 0x00, 0x00, 0x00,},
475 };
476
477 const unsigned char MetaWatch5width[PRINTABLE_CHARACTERS] = 
478 {
479 /*              width    char    hexcode */
480 /*              =====    ====    ======= */
481                   2, /*  '  '    20      */
482                   1, /*   !      21      */
483                   3, /*   "      22      */
484                   5, /*   #      23      */
485                   3, /*   $      24      */
486                   3, /*   %      25      */
487                   5, /*   &      26      */
488                   1, /*   '      27      */
489                   2, /*   (      28      */
490                   2, /*   )      29      */
491                   5, /*   *      2A      */
492                   5, /*   +      2B      */
493                   1, /*   ,      2C      */
494                   3, /*   -      2D      */
495                   1, /*   .      2E      */
496                   5, /*   /      2F      */
497                   4, /*   0      30      */
498                   3, /*   1      31      */
499                   4, /*   2      32      */
500                   4, /*   3      33      */
501                   4, /*   4      34      */
502                   4, /*   5      35      */
503                   4, /*   6      36      */
504                   4, /*   7      37      */
505                   4, /*   8      38      */
506                   4, /*   9      39      */
507                   1, /*   :      3A      */
508                   2, /*   ;      3B      */
509                   3, /*   <      3C      */
510                   4, /*   =      3D      */
511                   3, /*   >      3E      */
512                   3, /*   ?      3F      */
513                   3, /*   @      40      */
514                   5, /*   A      41      */
515                   4, /*   B      42      */
516                   4, /*   C      43      */
517                   4, /*   D      44      */
518                   4, /*   E      45      */
519                   4, /*   F      46      */
520                   4, /*   G      47      */
521                   4, /*   H      48      */
522                   3, /*   I      49      */
523                   4, /*   J      4A      */
524                   4, /*   K      4B      */
525                   4, /*   L      4C      */
526                   5, /*   M      4D      */
527                   5, /*   N      4E      */
528                   4, /*   O      4F      */
529                   4, /*   P      50      */
530                   5, /*   Q      51      */
531                   4, /*   R      52      */
532                   4, /*   S      53      */
533                   3, /*   T      54      */
534                   4, /*   U      55      */
535                   5, /*   V      56      */
536                   5, /*   W      57      */
537                   4, /*   X      58      */
538                   5, /*   Y      59      */
539                   4, /*   Z      5A      */
540                   2, /*   [      5B      */
541                   5, /*   \      5C      */
542                   2, /*   ]      5D      */
543                   5, /*   ^      5E      */
544                   4, /*   _      5F      */
545                   1, /*   `      60      */
546                   5, /*   a      61      */
547                   4, /*   b      62      */
548                   4, /*   c      63      */
549                   4, /*   d      64      */
550                   4, /*   e      65      */
551                   4, /*   f      66      */
552                   4, /*   g      67      */
553                   4, /*   h      68      */
554                   3, /*   i      69      */
555                   4, /*   j      6A      */
556                   4, /*   k      6B      */
557                   4, /*   l      6C      */
558                   5, /*   m      6D      */
559                   5, /*   n      6E      */
560                   4, /*   o      6F      */
561                   4, /*   p      70      */
562                   5, /*   q      71      */
563                   4, /*   r      72      */
564                   4, /*   s      73      */
565                   3, /*   t      74      */
566                   4, /*   u      75      */
567                   5, /*   v      76      */
568                   5, /*   w      77      */
569                   4, /*   x      78      */
570                   5, /*   y      79      */
571                   4, /*   z      7A      */
572                   3, /*   {      7B      */
573                   1, /*   |      7C      */
574                   3, /*   }      7D      */
575 };
576
577 const unsigned char MetaWatch7table[PRINTABLE_CHARACTERS][7] = 
578 {
579
580   /* character 0x20 (' '): (width = 2) */
581   {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
582   /* character 0x21 ('!'): (width=1) */
583   {0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01,},
584   {
585   /* character 0x22 ('"'): (width=3) */
586   0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,},
587   {
588   /* character 0x23 ('#'): (width=7) */
589   0x00, 0x28, 0x7E, 0x14, 0x3F, 0x0A, 0x00,},
590   {
591   /* character 0x24 ('$'): (width=5) */
592   0x04, 0x1E, 0x05, 0x0E, 0x14, 0x0F, 0x04,},
593   {
594   /* character 0x25 ('%'): (width=7) */
595   0x42, 0x25, 0x15, 0x2A, 0x54, 0x52, 0x21,},
596   {
597   /* character 0x26 ('&'): (width=5) */
598   0x02, 0x05, 0x05, 0x02, 0x15, 0x09, 0x16,},
599   {
600   /* character 0x27 ('''): (width=3) */
601   0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,},
602   {
603   /* character 0x28 ('('): (width=3) */
604   0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x04,},
605   {
606   /* character 0x29 (')'): (width=3) */
607   0x01, 0x02, 0x04, 0x04, 0x04, 0x02, 0x01,},
608   {
609   /* character 0x2A ('*'): (width=7) */
610   0x08, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08,},
611   {
612   /* character 0x2B ('+'): (width=5) */
613   0x00, 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00,},
614   {
615   /* character 0x2C (','): (width=1) */
616   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,},
617   {
618   /* character 0x2D ('-'): (width=4) */
619   0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,},
620   {
621   /* character 0x2E ('.'): (width=1) */
622   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,},
623   {
624   /* character 0x2F ('/'): (width=4) */
625   0x08, 0x08, 0x04, 0x06, 0x02, 0x01, 0x01,},
626   {
627   /* character 0x30 ('0'): (width=4) */
628   0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06,},
629   {
630   /* character 0x31 ('1'): (width=2) */
631   0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02,},
632   {
633   /* character 0x32 ('2'): (width=4) */
634   0x06, 0x09, 0x08, 0x04, 0x02, 0x01, 0x0F,},
635   {
636   /* character 0x33 ('3'): (width=4) */
637   0x06, 0x09, 0x08, 0x06, 0x08, 0x09, 0x06,},
638   {
639   /* character 0x34 ('4'): (width=5) */
640   0x04, 0x04, 0x0A, 0x09, 0x1F, 0x08, 0x08,},
641   {
642   /* character 0x35 ('5'): (width=4) */
643   0x0F, 0x01, 0x07, 0x08, 0x08, 0x09, 0x06,},
644   {
645   /* character 0x36 ('6'): (width=4) */
646   0x06, 0x01, 0x07, 0x09, 0x09, 0x09, 0x06,},
647   {
648   /* character 0x37 ('7'): (width=4) */
649   0x0F, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02,},
650   {
651   /* character 0x38 ('8'): (width=4) */
652   0x06, 0x09, 0x09, 0x06, 0x09, 0x09, 0x06,},
653   {
654   /* character 0x39 ('9'): (width=4) */
655   0x06, 0x09, 0x09, 0x09, 0x0E, 0x08, 0x06,},
656   {
657   /* character 0x3A (':'): (width=1) */
658   0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,},
659   {
660   /* character 0x3B (';'): (width=1) */
661   0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01,},
662   {
663   /* character 0x3C ('<'): (width=3) */
664   0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,},
665   {
666   /* character 0x3D ('='): (width=4) */
667   0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00,},
668   {
669   /* character 0x3E ('>'): (width=3) */
670   0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00,},
671   {
672   /* character 0x3F ('?'): (width=4) */
673   0x07, 0x08, 0x04, 0x02, 0x02, 0x00, 0x02,},
674   {
675   /* character 0x40 ('@'): (width=7) */
676   0x3C, 0x42, 0x59, 0x55, 0x39, 0x02, 0x3C,},
677   {
678   /* character 0x41 ('A'): (width=7) */
679   0x08, 0x08, 0x14, 0x14, 0x3E, 0x22, 0x41,},
680   {
681   /* character 0x42 ('B'): (width=5) */
682   0x0F, 0x11, 0x11, 0x0F, 0x11, 0x11, 0x0F,},
683   {
684   /* character 0x43 ('C'): (width=5) */
685   0x0C, 0x12, 0x01, 0x01, 0x01, 0x12, 0x0C,},
686   {
687   /* character 0x44 ('D'): (width=5) */
688   0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07,},
689   {
690   /* character 0x45 ('E'): (width=4) */
691   0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x0F,},
692   {
693   /* character 0x46 ('F'): (width=4) */
694   0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x01,},
695   {
696   /* character 0x47 ('G'): (width=6) */
697   0x0C, 0x12, 0x01, 0x39, 0x21, 0x12, 0x0C,},
698   {
699   /* character 0x48 ('H'): (width=5) */
700   0x11, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11,},
701   {
702   /* character 0x49 ('I'): (width=3) */
703   0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07,},
704   {
705   /* character 0x4A ('J'): (width=5) */
706   0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x0E,},
707   {
708   /* character 0x4B ('K'): (width=5) */
709   0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11,},
710   {
711   /* character 0x4C ('L'): (width=4) */
712   0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F,},
713   {
714   /* character 0x4D ('M'): (width=7) */
715   0x41, 0x63, 0x63, 0x55, 0x55, 0x49, 0x49,},
716   {
717   /* character 0x4E ('N'): (width=6) */
718   0x21, 0x23, 0x25, 0x2D, 0x29, 0x31, 0x21,},
719   {
720   /* character 0x4F ('O'): (width=6) */
721   0x0C, 0x12, 0x21, 0x21, 0x21, 0x12, 0x0C,},
722   {
723   /* character 0x50 ('P'): (width=4) */
724   0x07, 0x09, 0x09, 0x07, 0x01, 0x01, 0x01,},
725   {
726   /* character 0x51 ('Q'): (width=7) */
727   0x0C, 0x12, 0x21, 0x21, 0x21, 0x12, 0x6C,},
728   {
729   /* character 0x52 ('R'): (width=5) */
730   0x0F, 0x11, 0x11, 0x0F, 0x09, 0x11, 0x11,},
731   {
732   /* character 0x53 ('S'): (width=4) */
733   0x06, 0x09, 0x01, 0x06, 0x08, 0x09, 0x06,},
734   {
735   /* character 0x54 ('T'): (width=5) */
736   0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,},
737   {
738   /* character 0x55 ('U'): (width=5) */
739   0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E,},
740   {
741   /* character 0x56 ('V'): (width=7) */
742   0x41, 0x22, 0x22, 0x14, 0x14, 0x08, 0x08,},
743   {
744   /* character 0x57 ('W'): (width=7) */
745   0x49, 0x49, 0x49, 0x55, 0x55, 0x22, 0x22,},
746   {
747   /* character 0x58 ('X'): (width=5) */
748   0x11, 0x1B, 0x0A, 0x04, 0x0A, 0x1B, 0x11,},
749   {
750   /* character 0x59 ('Y'): (width=7) */
751   0x41, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08,},
752   {
753   /* character 0x5A ('Z'): (width=5) */
754   0x1F, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1F,},
755   {
756   /* character 0x5B ('['): (width=3) */
757   0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07,},
758   {
759   /* character 0x5C ('\'): (width=4) */
760   0x01, 0x01, 0x02, 0x06, 0x04, 0x08, 0x08,},
761   {
762   /* character 0x5D (']'): (width=3) */
763   0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07,},
764   {
765   /* character 0x5E ('^'): (width=5) */
766   0x04, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x00,},
767   {
768   /* character 0x5F ('_'): (width=5) */
769   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,},
770   {
771   /* character 0x60 ('`'): (width=1) */
772   0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,},
773   {
774   /* character 0x61 ('a'): (width=7) */
775   0x08, 0x08, 0x14, 0x14, 0x3E, 0x22, 0x41,},
776   {
777   /* character 0x62 ('b'): (width=5) */
778   0x0F, 0x11, 0x11, 0x0F, 0x11, 0x11, 0x0F,},
779   {
780   /* character 0x63 ('c'): (width=5) */
781   0x0C, 0x12, 0x01, 0x01, 0x01, 0x12, 0x0C,},
782   {
783   /* character 0x64 ('d'): (width=5) */
784   0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07,},
785   {
786   /* character 0x65 ('e'): (width=4) */
787   0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x0F,},
788   {
789   /* character 0x66 ('f'): (width=4) */
790   0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x01,},
791   {
792   /* character 0x67 ('g'): (width=6) */
793   0x0C, 0x12, 0x01, 0x39, 0x21, 0x12, 0x0C,},
794   {
795   /* character 0x68 ('h'): (width=5) */
796   0x11, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11,},
797   {
798   /* character 0x69 ('i'): (width=3) */
799   0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07,},
800   {
801   /* character 0x6A ('j'): (width=5) */
802   0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x0E,},
803   {
804   /* character 0x6B ('k'): (width=5) */
805   0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11,},
806   {
807   /* character 0x6C ('l'): (width=4) */
808   0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F,},
809   {
810   /* character 0x6D ('m'): (width=7) */
811   0x41, 0x63, 0x63, 0x55, 0x55, 0x49, 0x49,},
812   {
813   /* character 0x6E ('n'): (width=6) */
814   0x21, 0x23, 0x25, 0x2D, 0x29, 0x31, 0x21,},
815   {
816   /* character 0x6F ('o'): (width=6) */
817   0x0C, 0x12, 0x21, 0x21, 0x21, 0x12, 0x0C,},
818   {
819   /* character 0x70 ('p'): (width=4) */
820   0x07, 0x09, 0x09, 0x07, 0x01, 0x01, 0x01,},
821   {
822   /* character 0x71 ('q'): (width=7) */
823   0x0C, 0x12, 0x21, 0x21, 0x21, 0x12, 0x6C,},
824   {
825   /* character 0x72 ('r'): (width=5) */
826   0x0F, 0x11, 0x11, 0x0F, 0x09, 0x11, 0x11,},
827   {
828   /* character 0x73 ('s'): (width=4) */
829   0x06, 0x09, 0x01, 0x06, 0x08, 0x09, 0x06,},
830   {
831   /* character 0x74 ('t'): (width=5) */
832   0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,},
833   {
834   /* character 0x75 ('u'): (width=5) */
835   0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E,},
836   {
837   /* character 0x76 ('v'): (width=7) */
838   0x41, 0x22, 0x22, 0x14, 0x14, 0x08, 0x08,},
839   {
840   /* character 0x77 ('w'): (width=7) */
841   0x49, 0x49, 0x49, 0x55, 0x55, 0x22, 0x22,},
842   {
843   /* character 0x78 ('x'): (width=5) */
844   0x11, 0x1B, 0x0A, 0x04, 0x0A, 0x1B, 0x11,},
845   {
846   /* character 0x79 ('y'): (width=7) */
847   0x41, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08,},
848   {
849   /* character 0x7A ('z'): (width=5) */
850   0x1F, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1F,},
851   {
852   /* character 0x7B ('{'): (width=3) */
853   0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x04,},
854   {
855   /* character 0x7C ('|'): (width=1) */
856   0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,},
857   {
858   /* character 0x7D ('}'): (width=3) */
859   0x01, 0x02, 0x04, 0x04, 0x04, 0x02, 0x01,},
860
861 };
862
863 const unsigned char MetaWatch7width[PRINTABLE_CHARACTERS] = {
864 /*              width    char    hexcode */
865 /*              =====    ====    ======= */
866         2, /*  '  '    20      */
867                   1, /*   !      21      */
868                   3, /*   "      22      */
869                   7, /*   #      23      */
870                   5, /*   $      24      */
871                   7, /*   %      25      */
872                   5, /*   &      26      */
873                   3, /*   '      27      */
874                   3, /*   (      28      */
875                   3, /*   )      29      */
876                   7, /*   *      2A      */
877                   5, /*   +      2B      */
878                   1, /*   ,      2C      */
879                   4, /*   -      2D      */
880                   1, /*   .      2E      */
881                   4, /*   /      2F      */
882                   4, /*   0      30      */
883                   2, /*   1      31      */
884                   4, /*   2      32      */
885                   4, /*   3      33      */
886                   5, /*   4      34      */
887                   4, /*   5      35      */
888                   4, /*   6      36      */
889                   4, /*   7      37      */
890                   4, /*   8      38      */
891                   4, /*   9      39      */
892                   1, /*   :      3A      */
893                   1, /*   ;      3B      */
894                   3, /*   <      3C      */
895                   4, /*   =      3D      */
896                   3, /*   >      3E      */
897                   4, /*   ?      3F      */
898                   7, /*   @      40      */
899                   7, /*   A      41      */
900                   5, /*   B      42      */
901                   5, /*   C      43      */
902                   5, /*   D      44      */
903                   4, /*   E      45      */
904                   4, /*   F      46      */
905                   6, /*   G      47      */
906                   5, /*   H      48      */
907                   3, /*   I      49      */
908                   5, /*   J      4A      */
909                   5, /*   K      4B      */
910                   4, /*   L      4C      */
911                   7, /*   M      4D      */
912                   6, /*   N      4E      */
913                   6, /*   O      4F      */
914                   4, /*   P      50      */
915                   7, /*   Q      51      */
916                   5, /*   R      52      */
917                   4, /*   S      53      */
918                   5, /*   T      54      */
919                   5, /*   U      55      */
920                   7, /*   V      56      */
921                   7, /*   W      57      */
922                   5, /*   X      58      */
923                   7, /*   Y      59      */
924                   5, /*   Z      5A      */
925                   3, /*   [      5B      */
926                   4, /*   \      5C      */
927                   3, /*   ]      5D      */
928                   5, /*   ^      5E      */
929                   5, /*   _      5F      */
930                   1, /*   `      60      */
931                   7, /*   a      61      */
932                   5, /*   b      62      */
933                   5, /*   c      63      */
934                   5, /*   d      64      */
935                   4, /*   e      65      */
936                   4, /*   f      66      */
937                   6, /*   g      67      */
938                   5, /*   h      68      */
939                   3, /*   i      69      */
940                   5, /*   j      6A      */
941                   5, /*   k      6B      */
942                   4, /*   l      6C      */
943                   7, /*   m      6D      */
944                   6, /*   n      6E      */
945                   6, /*   o      6F      */
946                   4, /*   p      70      */
947                   7, /*   q      71      */
948                   5, /*   r      72      */
949                   4, /*   s      73      */
950                   5, /*   t      74      */
951                   5, /*   u      75      */
952                   7, /*   v      76      */
953                   7, /*   w      77      */
954                   5, /*   x      78      */
955                   7, /*   y      79      */
956                   5, /*   z      7A      */
957                   3, /*   {      7B      */
958                   1, /*   |      7C      */
959                   3, /*   }      7D      */
960 };
961
962
963 const u16t MetaWatch16table[PRINTABLE_CHARACTERS][16] = 
964 {
965   /* character 0x20 (' '): (width=4) */
966   {0x0000, 0x0000, 0x0000, 0x0000,
967   0x0000, 0x0000, 0x0000, 0x0000,
968   0x0000, 0x0000, 0x0000, 0x0000,
969   0x0000, 0x0000, 0x0000, 0x0000},
970   
971   /* character 0x21 ('!'): (width=2) */
972   {0x0000, 0x0000, 0x0003, 0x0003,
973   0x0003, 0x0003, 0x0003, 0x0003,
974   0x0003, 0x0003, 0x0000, 0x0003,
975   0x0003, 0x0000, 0x0000, 0x0000},
976   /* character 0x22 ('"'): (width=5) */
977   {0x0000, 0x0012, 0x001B, 0x001B,
978   0x0009, 0x0000, 0x0000, 0x0000,
979   0x0000, 0x0000, 0x0000, 0x0000,
980   0x0000, 0x0000, 0x0000, 0x0000},
981   
982   /* character 0x23 ('#'): (width=12) */
983   {0x0000, 0x0000, 0x0000, 0x0110,
984   0x0198, 0x0FFE, 0x07FF, 0x0198,
985   0x0198, 0x0FFE, 0x07FF, 0x0198,
986   0x0088, 0x0000, 0x0000, 0x0000},
987   
988   /* character 0x24 ('$'): (width=6) */
989   {0x000C, 0x000C, 0x001E, 0x003F,
990   0x0033, 0x0003, 0x0007, 0x001E,
991   0x0038, 0x0030, 0x0033, 0x003F,
992   0x001E, 0x000C, 0x000C, 0x0000},
993   
994   /* character 0x25 ('%'): (width=10) */
995   {0x0000, 0x020E, 0x031F, 0x039B,
996   0x01DF, 0x00EE, 0x0070, 0x0038,
997   0x01DC, 0x03EE, 0x0367, 0x03E3,
998   0x01C1, 0x0000, 0x0000, 0x0000},
999   
1000   /* character 0x26 ('&'): (width=10) */
1001   {0x0000, 0x0000, 0x001C, 0x003E,
1002   0x0036, 0x003E, 0x001C, 0x01BE,
1003   0x01F7, 0x00E3, 0x01F7, 0x03BE,
1004   0x031C, 0x0000, 0x0000, 0x0000},
1005   
1006   /* character 0x27 ('''): (width=2) */
1007   {0x0000, 0x0002, 0x0003, 0x0003,
1008   0x0001, 0x0000, 0x0000, 0x0000,
1009   0x0000, 0x0000, 0x0000, 0x0000,
1010   0x0000, 0x0000, 0x0000, 0x0000},
1011   {
1012   /* character 0x28 ('('): (width=4) */
1013   0x0008, 0x0004, 0x0006, 0x0006,
1014   0x0003, 0x0003, 0x0003, 0x0003,
1015   0x0003, 0x0003, 0x0003, 0x0006,
1016   0x0006, 0x0004, 0x0008, 0x0000},
1017   {
1018   /* character 0x29 (')'): (width=4) */
1019   0x0001, 0x0002, 0x0006, 0x0006,
1020   0x000C, 0x000C, 0x000C, 0x000C,
1021   0x000C, 0x000C, 0x000C, 0x0006,
1022   0x0006, 0x0002, 0x0001, 0x0000},
1023   {
1024   /* character 0x2A ('*'): (width=8) */
1025   0x0000, 0x0000, 0x0018, 0x0018,
1026   0x00DB, 0x00FF, 0x003C, 0x00FF,
1027   0x00DB, 0x0018, 0x0018, 0x0000,
1028   0x0000, 0x0000, 0x0000, 0x0000},
1029   {
1030   /* character 0x2B ('+'): (width=8) */
1031   0x0000, 0x0000, 0x0000, 0x0000,
1032   0x0018, 0x0018, 0x0018, 0x00FF,
1033   0x00FF, 0x0018, 0x0018, 0x0018,
1034   0x0000, 0x0000, 0x0000, 0x0000},
1035   {
1036   /* character 0x2C (','): (width=2) */
1037   0x0000, 0x0000, 0x0000, 0x0000,
1038   0x0000, 0x0000, 0x0000, 0x0000,
1039   0x0000, 0x0000, 0x0000, 0x0002,
1040   0x0003, 0x0003, 0x0001, 0x0000},
1041   {
1042   /* character 0x2D ('-'): (width=8) */
1043   0x0000, 0x0000, 0x0000, 0x0000,
1044   0x0000, 0x0000, 0x0000, 0x00FF,
1045   0x00FF, 0x0000, 0x0000, 0x0000,
1046   0x0000, 0x0000, 0x0000, 0x0000},
1047   {
1048   /* character 0x2E ('.'): (width=2) */
1049   0x0000, 0x0000, 0x0000, 0x0000,
1050   0x0000, 0x0000, 0x0000, 0x0000,
1051   0x0000, 0x0000, 0x0000, 0x0003,
1052   0x0003, 0x0000, 0x0000, 0x0000},
1053   {
1054   /* character 0x2F ('/'): (width=6) */
1055   0x0000, 0x0000, 0x0000, 0x0030,
1056   0x0030, 0x0018, 0x0018, 0x000C,
1057   0x000C, 0x0006, 0x0006, 0x0003,
1058   0x0003, 0x0000, 0x0000, 0x0000},
1059   {
1060   /* character 0x30 ('0'): (width=7) */
1061   0x0000, 0x0000, 0x001C, 0x003E,
1062   0x0036, 0x0063, 0x0063, 0x0063,
1063   0x0063, 0x0063, 0x0036, 0x003E,
1064   0x001C, 0x0000, 0x0000, 0x0000},
1065   {
1066   /* character 0x31 ('1'): (width=3) */
1067   0x0000, 0x0000, 0x0006, 0x0007,
1068   0x0007, 0x0006, 0x0006, 0x0006,
1069   0x0006, 0x0006, 0x0006, 0x0006,
1070   0x0006, 0x0000, 0x0000, 0x0000},
1071   {
1072   /* character 0x32 ('2'): (width=6) */
1073   0x0000, 0x0000, 0x001E, 0x003F,
1074   0x0033, 0x0030, 0x0038, 0x001C,
1075   0x000E, 0x0007, 0x0003, 0x003F,
1076   0x003F, 0x0000, 0x0000, 0x0000},
1077   {
1078   /* character 0x33 ('3'): (width=6) */
1079   0x0000, 0x0000, 0x001E, 0x003F,
1080   0x0033, 0x0030, 0x001C, 0x003C,
1081   0x0030, 0x0030, 0x0033, 0x003F,
1082   0x001E, 0x0000, 0x0000, 0x0000},
1083   {
1084   /* character 0x34 ('4'): (width=7) */
1085   0x0000, 0x0000, 0x000C, 0x000C,
1086   0x000C, 0x0036, 0x0036, 0x0033,
1087   0x007F, 0x007F, 0x0030, 0x0030,
1088   0x0030, 0x0000, 0x0000, 0x0000},
1089   {
1090   /* character 0x35 ('5'): (width=6) */
1091   0x0000, 0x0000, 0x003F, 0x003F,
1092   0x0003, 0x0003, 0x001F, 0x003F,
1093   0x0030, 0x0030, 0x0033, 0x003F,
1094   0x001E, 0x0000, 0x0000, 0x0000},
1095   {
1096   /* character 0x36 ('6'): (width=6) */
1097   0x0000, 0x0000, 0x000C, 0x000E,
1098   0x0006, 0x0003, 0x001F, 0x003F,
1099   0x0033, 0x0033, 0x0033, 0x001F,
1100   0x001E, 0x0000, 0x0000, 0x0000},
1101   {
1102   /* character 0x37 ('7'): (width=6) */
1103   0x0000, 0x0000, 0x003F, 0x003F,
1104   0x0030, 0x0030, 0x0018, 0x0018,
1105   0x000C, 0x000C, 0x000C, 0x000C,
1106   0x000C, 0x0000, 0x0000, 0x0000},
1107   {
1108   /* character 0x38 ('8'): (width=6) */
1109   0x0000, 0x0000, 0x001E, 0x003F,
1110   0x0033, 0x0033, 0x003F, 0x001E,
1111   0x0033, 0x0033, 0x0033, 0x003F,
1112   0x001E, 0x0000, 0x0000, 0x0000},
1113   {
1114   /* character 0x39 ('9'): (width=6) */
1115   0x0000, 0x0000, 0x001E, 0x003F,
1116   0x0033, 0x0033, 0x0033, 0x003F,
1117   0x003E, 0x0030, 0x0018, 0x001C,
1118   0x000C, 0x0000, 0x0000, 0x0000},
1119   {
1120   /* character 0x3A (':'): (width=2) */
1121   0x0000, 0x0000, 0x0000, 0x0000,
1122   0x0000, 0x0003, 0x0003, 0x0000,
1123   0x0000, 0x0003, 0x0003, 0x0000,
1124   0x0000, 0x0000, 0x0000, 0x0000},
1125   
1126   /* character 0x3B (';'): (width=2) */
1127   {0x0000, 0x0000, 0x0000, 0x0000,
1128   0x0000, 0x0003, 0x0003, 0x0000,
1129   0x0002, 0x0003, 0x0003, 0x0001,
1130   0x0000, 0x0000, 0x0000, 0x0000},
1131   {
1132   /* character 0x3C ('<'): (width=8) */
1133   0x0000, 0x0000, 0x0000, 0x0000,
1134   0x00C0, 0x00F0, 0x003C, 0x000F,
1135   0x003C, 0x00F0, 0x00C0, 0x0000,
1136   0x0000, 0x0000, 0x0000, 0x0000},
1137   {
1138   /* character 0x3D ('='): (width=7) */
1139   0x0000, 0x0000, 0x0000, 0x0000,
1140   0x0000, 0x0000, 0x007F, 0x007F,
1141   0x0000, 0x007F, 0x007F, 0x0000,
1142   0x0000, 0x0000, 0x0000, 0x0000},
1143   {
1144   /* character 0x3E ('>'): (width=8) */
1145   0x0000, 0x0000, 0x0000, 0x0000,
1146   0x0003, 0x000F, 0x003C, 0x00F0,
1147   0x003C, 0x000F, 0x0003, 0x0000,
1148   0x0000, 0x0000, 0x0000, 0x0000},
1149   {
1150   /* character 0x3F ('?'): (width=6) */
1151   0x0000, 0x0000, 0x001E, 0x003F,
1152   0x0033, 0x0030, 0x0018, 0x001C,
1153   0x000C, 0x000C, 0x0000, 0x000C,
1154   0x000C, 0x0000, 0x0000, 0x0000},
1155   {
1156   /* character 0x40 ('@'): (width=11) */
1157   0x0000, 0x0000, 0x01F8, 0x03FE,
1158   0x0706, 0x06F3, 0x06FB, 0x06DB,
1159   0x07FB, 0x03F3, 0x0006, 0x01FE,
1160   0x00F8, 0x0000, 0x0000, 0x0000},
1161   {
1162   /* character 0x41 ('A'): (width=9) */
1163   0x0000, 0x0000, 0x0010, 0x0010,
1164   0x0038, 0x0038, 0x006C, 0x006C,
1165   0x00C6, 0x00C6, 0x01FF, 0x0183,
1166   0x0183, 0x0000, 0x0000, 0x0000},
1167   {
1168   /* character 0x42 ('B'): (width=7) */
1169   0x0000, 0x0000, 0x003F, 0x007F,
1170   0x0063, 0x0063, 0x003F, 0x007F,
1171   0x0063, 0x0063, 0x0063, 0x007F,
1172   0x003F, 0x0000, 0x0000, 0x0000},
1173   {
1174   /* character 0x43 ('C'): (width=7) */
1175   0x0000, 0x0000, 0x003E, 0x007F,
1176   0x0063, 0x0003, 0x0003, 0x0003,
1177   0x0003, 0x0003, 0x0063, 0x007F,
1178   0x003E, 0x0000, 0x0000, 0x0000},
1179   {
1180   /* character 0x44 ('D'): (width=7) */
1181   0x0000, 0x0000, 0x003F, 0x007F,
1182   0x0063, 0x0063, 0x0063, 0x0063,
1183   0x0063, 0x0063, 0x0063, 0x007F,
1184   0x003F, 0x0000, 0x0000, 0x0000},
1185   {
1186   /* character 0x45 ('E'): (width=7) */
1187   0x0000, 0x0000, 0x007F, 0x007F,
1188   0x0003, 0x0003, 0x001F, 0x001F,
1189   0x0003, 0x0003, 0x0003, 0x007F,
1190   0x007F, 0x0000, 0x0000, 0x0000},
1191   {
1192   /* character 0x46 ('F'): (width=6) */
1193   0x0000, 0x0000, 0x003F, 0x003F,
1194   0x0003, 0x0003, 0x003F, 0x003F,
1195   0x0003, 0x0003, 0x0003, 0x0003,
1196   0x0003, 0x0000, 0x0000, 0x0000},
1197   {
1198   /* character 0x47 ('G'): (width=7) */
1199   0x0000, 0x0000, 0x003E, 0x007F,
1200   0x0063, 0x0003, 0x0003, 0x007B,
1201   0x007B, 0x0063, 0x0063, 0x007F,
1202   0x003E, 0x0000, 0x0000, 0x0000},
1203   {
1204   /* character 0x48 ('H'): (width=7) */
1205   0x0000, 0x0000, 0x0063, 0x0063,
1206   0x0063, 0x0063, 0x007F, 0x007F,
1207   0x0063, 0x0063, 0x0063, 0x0063,
1208   0x0063, 0x0000, 0x0000, 0x0000},
1209   {
1210   /* character 0x49 ('I'): (width=4) */
1211   0x0000, 0x0000, 0x000F, 0x000F,
1212   0x0006, 0x0006, 0x0006, 0x0006,
1213   0x0006, 0x0006, 0x0006, 0x000F,
1214   0x000F, 0x0000, 0x0000, 0x0000},
1215   {
1216   /* character 0x4A ('J'): (width=6) */
1217   0x0000, 0x0000, 0x0030, 0x0030,
1218   0x0030, 0x0030, 0x0030, 0x0030,
1219   0x0030, 0x0030, 0x0033, 0x003F,
1220   0x001E, 0x0000, 0x0000, 0x0000},
1221   {
1222   /* character 0x4B ('K'): (width=7) */
1223   0x0000, 0x0000, 0x0063, 0x0073,
1224   0x003B, 0x001F, 0x000F, 0x0007,
1225   0x000F, 0x001F, 0x003B, 0x0073,
1226   0x0063, 0x0000, 0x0000, 0x0000},
1227   {
1228   /* character 0x4C ('L'): (width=6) */
1229   0x0000, 0x0000, 0x0003, 0x0003,
1230   0x0003, 0x0003, 0x0003, 0x0003,
1231   0x0003, 0x0003, 0x0003, 0x003F,
1232   0x003F, 0x0000, 0x0000, 0x0000},
1233   {
1234   /* character 0x4D ('M'): (width=11) */
1235   0x0000, 0x0000, 0x0401, 0x0603,
1236   0x0707, 0x078F, 0x07DF, 0x06FB,
1237   0x0673, 0x0623, 0x0603, 0x0603,
1238   0x0603, 0x0000, 0x0000, 0x0000},
1239   {
1240   /* character 0x4E ('N'): (width=9) */
1241   0x0000, 0x0000, 0x0181, 0x0183,
1242   0x0187, 0x018F, 0x019F, 0x01BB,
1243   0x01F3, 0x01E3, 0x01C3, 0x0183,
1244   0x0103, 0x0000, 0x0000, 0x0000},
1245   {
1246   /* character 0x4F ('O'): (width=7) */
1247   0x0000, 0x0000, 0x003E, 0x007F,
1248   0x0063, 0x0063, 0x0063, 0x0063,
1249   0x0063, 0x0063, 0x0063, 0x007F,
1250   0x003E, 0x0000, 0x0000, 0x0000},
1251   {
1252   /* character 0x50 ('P'): (width=7) */
1253   0x0000, 0x0000, 0x003F, 0x007F,
1254   0x0063, 0x0063, 0x0063, 0x007F,
1255   0x003F, 0x0003, 0x0003, 0x0003,
1256   0x0003, 0x0000, 0x0000, 0x0000},
1257   {
1258   /* character 0x51 ('Q'): (width=8) */
1259   0x0000, 0x0000, 0x003E, 0x007F,
1260   0x0063, 0x0063, 0x0063, 0x0063,
1261   0x0063, 0x0063, 0x0063, 0x007F,
1262   0x003E, 0x00F0, 0x0060, 0x0000},
1263   {
1264   /* character 0x52 ('R'): (width=7) */
1265   0x0000, 0x0000, 0x003F, 0x007F,
1266   0x0063, 0x0063, 0x0063, 0x003F,
1267   0x007F, 0x0063, 0x0063, 0x0063,
1268   0x0063, 0x0000, 0x0000, 0x0000},
1269   {
1270   /* character 0x53 ('S'): (width=6) */
1271   0x0000, 0x0000, 0x001E, 0x003F,
1272   0x0033, 0x0003, 0x0007, 0x001E,
1273   0x0038, 0x0030, 0x0033, 0x003F,
1274   0x001E, 0x0000, 0x0000, 0x0000},
1275   {
1276   /* character 0x54 ('T'): (width=6) */
1277   0x0000, 0x0000, 0x003F, 0x003F,
1278   0x000C, 0x000C, 0x000C, 0x000C,
1279   0x000C, 0x000C, 0x000C, 0x000C,
1280   0x000C, 0x0000, 0x0000, 0x0000},
1281   {
1282   /* character 0x55 ('U'): (width=7) */
1283   0x0000, 0x0000, 0x0063, 0x0063,
1284   0x0063, 0x0063, 0x0063, 0x0063,
1285   0x0063, 0x0063, 0x0063, 0x007F,
1286   0x003E, 0x0000, 0x0000, 0x0000},
1287   {
1288   /* character 0x56 ('V'): (width=7) */
1289   0x0000, 0x0000, 0x0063, 0x0063,
1290   0x0063, 0x0036, 0x0036, 0x0036,
1291   0x001C, 0x001C, 0x001C, 0x0008,
1292   0x0008, 0x0000, 0x0000, 0x0000},
1293   {
1294   /* character 0x57 ('W'): (width=11) */
1295   0x0000, 0x0000, 0x0603, 0x0623,
1296   0x0623, 0x0376, 0x0376, 0x0376,
1297   0x01DC, 0x01DC, 0x01DC, 0x0088,
1298   0x0088, 0x0000, 0x0000, 0x0000},
1299   {
1300   /* character 0x58 ('X'): (width=7) */
1301   0x0000, 0x0000, 0x0063, 0x0063,
1302   0x0036, 0x0036, 0x001C, 0x001C,
1303   0x001C, 0x0036, 0x0036, 0x0063,
1304   0x0063, 0x0000, 0x0000, 0x0000},
1305   {
1306   /* character 0x59 ('Y'): (width=8) */
1307   0x0000, 0x0000, 0x00C3, 0x00C3,
1308   0x0066, 0x0066, 0x003C, 0x003C,
1309   0x0018, 0x0018, 0x0018, 0x0018,
1310   0x0018, 0x0000, 0x0000, 0x0000},
1311   {
1312   /* character 0x5A ('Z'): (width=7) */
1313   0x0000, 0x0000, 0x007F, 0x007F,
1314   0x0030, 0x0030, 0x0018, 0x0018,
1315   0x000C, 0x000E, 0x0006, 0x007F,
1316   0x007F, 0x0000, 0x0000, 0x0000},
1317   {
1318   /* character 0x5B ('['): (width=4) */
1319   0x000F, 0x000F, 0x0003, 0x0003,
1320   0x0003, 0x0003, 0x0003, 0x0003,
1321   0x0003, 0x0003, 0x0003, 0x0003,
1322   0x0003, 0x000F, 0x000F, 0x0000},
1323   {
1324   /* character 0x5C ('\'): (width=6) */
1325   0x0000, 0x0000, 0x0000, 0x0003,
1326   0x0003, 0x0006, 0x0006, 0x000C,
1327   0x000C, 0x0018, 0x0018, 0x0030,
1328   0x0030, 0x0000, 0x0000, 0x0000},
1329   {
1330   /* character 0x5D (']'): (width=4) */
1331   0x000F, 0x000F, 0x000C, 0x000C,
1332   0x000C, 0x000C, 0x000C, 0x000C,
1333   0x000C, 0x000C, 0x000C, 0x000C,
1334   0x000C, 0x000F, 0x000F, 0x0000},
1335   {
1336   /* character 0x5E ('^'): (width=7) */
1337   0x0000, 0x0000, 0x0000, 0x0008,
1338   0x0008, 0x001C, 0x001C, 0x0036,
1339   0x0036, 0x0063, 0x0063, 0x0000,
1340   0x0000, 0x0000, 0x0000, 0x0000},
1341   {
1342   /* character 0x5F ('_'): (width=9) */
1343   0x0000, 0x0000, 0x0000, 0x0000,
1344   0x0000, 0x0000, 0x0000, 0x0000,
1345   0x0000, 0x0000, 0x0000, 0x0000,
1346   0x01FF, 0x0000, 0x0000, 0x0000},
1347   {
1348   /* character 0x60 ('`'): (width=3) */
1349   0x0000, 0x0000, 0x0000, 0x0001,
1350   0x0003, 0x0006, 0x0004, 0x0000,
1351   0x0000, 0x0000, 0x0000, 0x0000,
1352   0x0000, 0x0000, 0x0000, 0x0000},
1353   {
1354   /* character 0x61 ('a'): (width=6) */
1355   0x0000, 0x0000, 0x0000, 0x0000,
1356   0x0000, 0x001E, 0x003F, 0x0030,
1357   0x003E, 0x003F, 0x0033, 0x003F,
1358   0x003E, 0x0000, 0x0000, 0x0000},
1359   {
1360   /* character 0x62 ('b'): (width=6) */
1361   0x0000, 0x0000, 0x0003, 0x0003,
1362   0x0003, 0x001F, 0x003F, 0x0033,
1363   0x0033, 0x0033, 0x0033, 0x003F,
1364   0x001F, 0x0000, 0x0000, 0x0000},
1365   {
1366   /* character 0x63 ('c'): (width=6) */
1367   0x0000, 0x0000, 0x0000, 0x0000,
1368   0x0000, 0x001E, 0x003F, 0x0033,
1369   0x0003, 0x0003, 0x0033, 0x003F,
1370   0x001E, 0x0000, 0x0000, 0x0000},
1371   {
1372   /* character 0x64 ('d'): (width=6) */
1373   0x0000, 0x0000, 0x0030, 0x0030,
1374   0x0030, 0x003E, 0x003F, 0x0033,
1375   0x0033, 0x0033, 0x0033, 0x003F,
1376   0x003E, 0x0000, 0x0000, 0x0000},
1377   {
1378   /* character 0x65 ('e'): (width=6) */
1379   0x0000, 0x0000, 0x0000, 0x0000,
1380   0x0000, 0x001E, 0x003F, 0x0033,
1381   0x003F, 0x003F, 0x0003, 0x003F,
1382   0x001E, 0x0000, 0x0000, 0x0000},
1383   {
1384   /* character 0x66 ('f'): (width=4) */
1385   0x0000, 0x0000, 0x000C, 0x000E,
1386   0x0006, 0x000F, 0x000F, 0x0006,
1387   0x0006, 0x0006, 0x0006, 0x0006,
1388   0x0006, 0x0000, 0x0000, 0x0000},
1389   {
1390   /* character 0x67 ('g'): (width=6) */
1391   0x0000, 0x0000, 0x0000, 0x0000,
1392   0x0000, 0x003E, 0x003F, 0x0033,
1393   0x0033, 0x0033, 0x0033, 0x003F,
1394   0x003E, 0x0030, 0x003E, 0x001C},
1395   {
1396   /* character 0x68 ('h'): (width=6) */
1397   0x0000, 0x0000, 0x0003, 0x0003,
1398   0x0003, 0x001F, 0x003F, 0x0033,
1399   0x0033, 0x0033, 0x0033, 0x0033,
1400   0x0033, 0x0000, 0x0000, 0x0000},
1401   {
1402   /* character 0x69 ('i'): (width=2) */
1403   0x0000, 0x0000, 0x0003, 0x0003,
1404   0x0000, 0x0003, 0x0003, 0x0003,
1405   0x0003, 0x0003, 0x0003, 0x0003,
1406   0x0003, 0x0000, 0x0000, 0x0000},
1407   {
1408   /* character 0x6A ('j'): (width=5) */
1409   0x0000, 0x0000, 0x0018, 0x0018,
1410   0x0000, 0x0018, 0x0018, 0x0018,
1411   0x0018, 0x0018, 0x0018, 0x0018,
1412   0x0018, 0x0018, 0x001F, 0x000E},
1413   {
1414   /* character 0x6B ('k'): (width=6) */
1415   0x0000, 0x0000, 0x0003, 0x0003,
1416   0x0003, 0x0033, 0x003B, 0x001F,
1417   0x000F, 0x000F, 0x001F, 0x003B,
1418   0x0033, 0x0000, 0x0000, 0x0000},
1419   {
1420   /* character 0x6C ('l'): (width=2) */
1421   0x0000, 0x0000, 0x0003, 0x0003,
1422   0x0003, 0x0003, 0x0003, 0x0003,
1423   0x0003, 0x0003, 0x0003, 0x0003,
1424   0x0003, 0x0000, 0x0000, 0x0000},
1425   {
1426   /* character 0x6D ('m'): (width=10) */
1427   0x0000, 0x0000, 0x0000, 0x0000,
1428   0x0000, 0x01DB, 0x03FF, 0x0377,
1429   0x0333, 0x0333, 0x0333, 0x0333,
1430   0x0333, 0x0000, 0x0000, 0x0000},
1431   {
1432   /* character 0x6E ('n'): (width=6) */
1433   0x0000, 0x0000, 0x0000, 0x0000,
1434   0x0000, 0x001B, 0x003F, 0x0037,
1435   0x0033, 0x0033, 0x0033, 0x0033,
1436   0x0033, 0x0000, 0x0000, 0x0000},
1437   {
1438   /* character 0x6F ('o'): (width=6) */
1439   0x0000, 0x0000, 0x0000, 0x0000,
1440   0x0000, 0x001E, 0x003F, 0x0033,
1441   0x0033, 0x0033, 0x0033, 0x003F,
1442   0x001E, 0x0000, 0x0000, 0x0000},
1443   {
1444   /* character 0x70 ('p'): (width=6) */
1445   0x0000, 0x0000, 0x0000, 0x0000,
1446   0x0000, 0x001F, 0x003F, 0x0033,
1447   0x0033, 0x0033, 0x0033, 0x001F,
1448   0x001F, 0x0003, 0x0003, 0x0003},
1449   {
1450   /* character 0x71 ('q'): (width=6) */
1451   0x0000, 0x0000, 0x0000, 0x0000,
1452   0x0000, 0x003E, 0x003F, 0x0033,
1453   0x0033, 0x0033, 0x0033, 0x003E,
1454   0x003E, 0x0030, 0x0030, 0x0030},
1455   {
1456   /* character 0x72 ('r'): (width=5) */
1457   0x0000, 0x0000, 0x0000, 0x0000,
1458   0x0000, 0x001B, 0x001F, 0x0007,
1459   0x0003, 0x0003, 0x0003, 0x0003,
1460   0x0003, 0x0000, 0x0000, 0x0000},
1461   {
1462   /* character 0x73 ('s'): (width=5) */
1463   0x0000, 0x0000, 0x0000, 0x0000,
1464   0x0000, 0x000E, 0x001F, 0x0003,
1465   0x000F, 0x001E, 0x0018, 0x001F,
1466   0x000E, 0x0000, 0x0000, 0x0000},
1467   {
1468   /* character 0x74 ('t'): (width=4) */
1469   0x0000, 0x0000, 0x0004, 0x0006,
1470   0x0006, 0x000F, 0x000F, 0x0006,
1471   0x0006, 0x0006, 0x0006, 0x000E,
1472   0x000C, 0x0000, 0x0000, 0x0000},
1473   {
1474   /* character 0x75 ('u'): (width=6) */
1475   0x0000, 0x0000, 0x0000, 0x0000,
1476   0x0000, 0x0033, 0x0033, 0x0033,
1477   0x0033, 0x0033, 0x0033, 0x003F,
1478   0x003E, 0x0000, 0x0000, 0x0000},
1479   {
1480   /* character 0x76 ('v'): (width=7) */
1481   0x0000, 0x0000, 0x0000, 0x0000,
1482   0x0000, 0x0063, 0x0063, 0x0036,
1483   0x0036, 0x001C, 0x001C, 0x0008,
1484   0x0008, 0x0000, 0x0000, 0x0000},
1485   {
1486   /* character 0x77 ('w'): (width=11) */
1487   0x0000, 0x0000, 0x0000, 0x0000,
1488   0x0000, 0x0623, 0x0623, 0x0376,
1489   0x0376, 0x01DC, 0x01DC, 0x0088,
1490   0x0088, 0x0000, 0x0000, 0x0000},
1491   {
1492   /* character 0x78 ('x'): (width=7) */
1493   0x0000, 0x0000, 0x0000, 0x0000,
1494   0x0000, 0x0063, 0x0077, 0x003E,
1495   0x001C, 0x001C, 0x003E, 0x0077,
1496   0x0063, 0x0000, 0x0000, 0x0000},
1497   {
1498   /* character 0x79 ('y'): (width=6) */
1499   0x0000, 0x0000, 0x0000, 0x0000,
1500   0x0000, 0x0033, 0x0033, 0x0033,
1501   0x0033, 0x0033, 0x0033, 0x003F,
1502   0x003E, 0x0030, 0x003E, 0x001C},
1503   {
1504   /* character 0x7A ('z'): (width=6) */
1505   0x0000, 0x0000, 0x0000, 0x0000,
1506   0x0000, 0x003F, 0x003F, 0x0030,
1507   0x0018, 0x000C, 0x0006, 0x003F,
1508   0x003F, 0x0000, 0x0000, 0x0000},
1509   {
1510   /* character 0x7B ('{'): (width=4) */
1511   0x0008, 0x0004, 0x0006, 0x0006,
1512   0x0003, 0x0003, 0x0003, 0x0003,
1513   0x0003, 0x0003, 0x0003, 0x0006,
1514   0x0006, 0x0004, 0x0008, 0x0000},
1515   {
1516   /* character 0x7C ('|'): (width=2) */
1517   0x0000, 0x0003, 0x0003, 0x0003,
1518   0x0003, 0x0003, 0x0000, 0x0000,
1519   0x0003, 0x0003, 0x0003, 0x0003,
1520   0x0003, 0x0000, 0x0000, 0x0000},
1521   {
1522   /* character 0x7D ('}'): (width=4) */
1523   0x0001, 0x0002, 0x0006, 0x0006,
1524   0x000C, 0x000C, 0x000C, 0x000C,
1525   0x000C, 0x000C, 0x000C, 0x0006,
1526   0x0006, 0x0002, 0x0001, 0x0000},
1527 };
1528
1529 const unsigned char MetaWatch16width[PRINTABLE_CHARACTERS] = 
1530 {
1531 /*              width    char    hexcode */
1532 /*              =====    ====    ======= */
1533         4, /*  '  '    20      */
1534                   2, /*   !      21      */
1535                   5, /*   "      22      */
1536                  12, /*   #      23      */
1537                   6, /*   $      24      */
1538                  10, /*   %      25      */
1539                  10, /*   &      26      */
1540                   2, /*   '      27      */
1541                   4, /*   (      28      */
1542                   4, /*   )      29      */
1543                   8, /*   *      2A      */
1544                   8, /*   +      2B      */
1545                   2, /*   ,      2C      */
1546                   8, /*   -      2D      */
1547                   2, /*   .      2E      */
1548                   6, /*   /      2F      */
1549                   7, /*   0      30      */
1550                   3, /*   1      31      */
1551                   6, /*   2      32      */
1552                   6, /*   3      33      */
1553                   7, /*   4      34      */
1554                   6, /*   5      35      */
1555                   6, /*   6      36      */
1556                   6, /*   7      37      */
1557                   6, /*   8      38      */
1558                   6, /*   9      39      */
1559                   2, /*   :      3A      */
1560                   2, /*   ;      3B      */
1561                   8, /*   <      3C      */
1562                   7, /*   =      3D      */
1563                   8, /*   >      3E      */
1564                   6, /*   ?      3F      */
1565                  11, /*   @      40      */
1566                   9, /*   A      41      */
1567                   7, /*   B      42      */
1568                   7, /*   C      43      */
1569                   7, /*   D      44      */
1570                   7, /*   E      45      */
1571                   6, /*   F      46      */
1572                   7, /*   G      47      */
1573                   7, /*   H      48      */
1574                   4, /*   I      49      */
1575                   6, /*   J      4A      */
1576                   7, /*   K      4B      */
1577                   6, /*   L      4C      */
1578                  11, /*   M      4D      */
1579                   9, /*   N      4E      */
1580                   7, /*   O      4F      */
1581                   7, /*   P      50      */
1582                   8, /*   Q      51      */
1583                   7, /*   R      52      */
1584                   6, /*   S      53      */
1585                   6, /*   T      54      */
1586                   7, /*   U      55      */
1587                   7, /*   V      56      */
1588                  11, /*   W      57      */
1589                   7, /*   X      58      */
1590                   8, /*   Y      59      */
1591                   7, /*   Z      5A      */
1592                   4, /*   [      5B      */
1593                   6, /*   \      5C      */
1594                   4, /*   ]      5D      */
1595                   7, /*   ^      5E      */
1596                   9, /*   _      5F      */
1597                   3, /*   `      60      */
1598                   6, /*   a      61      */
1599                   6, /*   b      62      */
1600                   6, /*   c      63      */
1601                   6, /*   d      64      */
1602                   6, /*   e      65      */
1603                   4, /*   f      66      */
1604                   6, /*   g      67      */
1605                   6, /*   h      68      */
1606                   2, /*   i      69      */
1607                   5, /*   j      6A      */
1608                   6, /*   k      6B      */
1609                   2, /*   l      6C      */
1610                  10, /*   m      6D      */
1611                   6, /*   n      6E      */
1612                   6, /*   o      6F      */
1613                   6, /*   p      70      */
1614                   6, /*   q      71      */
1615                   5, /*   r      72      */
1616                   5, /*   s      73      */
1617                   4, /*   t      74      */
1618                   6, /*   u      75      */
1619                   7, /*   v      76      */
1620                  11, /*   w      77      */
1621                   7, /*   x      78      */
1622                   6, /*   y      79      */
1623                   6, /*   z      7A      */
1624                   4, /*   {      7B      */
1625                   2, /*   |      7C      */
1626                   4, /*   }      7D      */
1627 };
1628
1629 /******************************************************************************/
1630 const u16t MetaWatchTimeTable[TOTAL_TIME_CHARACTERS][19] = 
1631 {
1632   /* character 0x30 ('0'): (width=11, offset=0) */
1633   {0x01FC, 0x03FE, 0x07FF, 0x07FF,
1634   0x078F, 0x078F, 0x078F, 0x078F,
1635   0x078F, 0x078F, 0x078F, 0x078F,
1636   0x078F, 0x078F, 0x078F, 0x07FF,
1637   0x07FF, 0x03FE, 0x01FC},
1638   {
1639   /* character 0x31 ('1'): (width=11, offset=38) */
1640   0x01C0, 0x01E0, 0x01F8, 0x01F8,
1641   0x01F8, 0x01F8, 0x01E0, 0x01E0,
1642   0x01E0, 0x01E0, 0x01E0, 0x01E0,
1643   0x01E0, 0x01E0, 0x01E0, 0x01E0,
1644   0x01E0, 0x01E0, 0x01E0},
1645   {
1646   /* character 0x32 ('2'): (width=11, offset=76) */
1647   0x01FC, 0x03FE, 0x07FF, 0x07FF,
1648   0x078F, 0x078F, 0x0780, 0x07C0,
1649   0x07E0, 0x03F0, 0x01F8, 0x00FC,
1650   0x007E, 0x003F, 0x001F, 0x07FF,
1651   0x07FF, 0x07FF, 0x07FF},
1652   {
1653   /* character 0x33 ('3'): (width=11, offset=114) */
1654   0x01FC, 0x03FE, 0x07FF, 0x07FF,
1655   0x078F, 0x078F, 0x0780, 0x07C0,
1656   0x03F0, 0x01F0, 0x03F0, 0x07C0,
1657   0x0780, 0x078F, 0x078F, 0x07FF,
1658   0x07FF, 0x03FE, 0x01FC},
1659   {
1660   /* character 0x34 ('4'): (width=11, offset=152) */
1661   0x003C, 0x07BC, 0x07BC, 0x079E,
1662   0x079E, 0x078F, 0x078F, 0x07FF,
1663   0x07FF, 0x07FF, 0x07FF, 0x0780,
1664   0x0780, 0x0780, 0x0780, 0x0780,
1665   0x0780, 0x0780, 0x0780},
1666   {
1667   /* character 0x35 ('5'): (width=11, offset=190) */
1668   0x07FF, 0x07FF, 0x07FF, 0x07FF,
1669   0x000F, 0x000F, 0x000F, 0x03FF,
1670   0x07FF, 0x07FF, 0x07FF, 0x0780,
1671   0x0780, 0x0780, 0x07C0, 0x07FF,
1672   0x03FF, 0x03FF, 0x00FF},
1673   {
1674   /* character 0x36 ('6'): (width=11, offset=228) */
1675   0x01F0, 0x01FC, 0x01FE, 0x01FE,
1676   0x001F, 0x000F, 0x000F, 0x01FF,
1677   0x03FF, 0x07FF, 0x07FF, 0x078F,
1678   0x078F, 0x078F, 0x078F, 0x07FF,
1679   0x07FF, 0x03FE, 0x01FC},
1680   {
1681   /* character 0x37 ('7'): (width=11, offset=266) */
1682   0x07FF, 0x07FF, 0x07FF, 0x07FF,
1683   0x0780, 0x07C0, 0x03C0, 0x03E0,
1684   0x01E0, 0x01F0, 0x00F0, 0x00F8,
1685   0x0078, 0x0078, 0x0078, 0x0078,
1686   0x0078, 0x0078, 0x0078},
1687   {
1688   /* character 0x38 ('8'): (width=11, offset=304) */
1689   0x01FC, 0x03FE, 0x07FF, 0x07FF,
1690   0x078F, 0x078F, 0x078F, 0x07FF,
1691   0x07FF, 0x03FE, 0x07FF, 0x078F,
1692   0x078F, 0x078F, 0x078F, 0x07FF,
1693   0x07FF, 0x03FE, 0x01FC},
1694   {
1695   /* character 0x39 ('9'): (width=11, offset=342) */
1696   0x01FC, 0x03FE, 0x07FF, 0x07FF,
1697   0x078F, 0x078F, 0x078F, 0x078F,
1698   0x07FF, 0x07FF, 0x07FE, 0x07FC,
1699   0x0780, 0x0780, 0x07C0, 0x03FC,
1700   0x03FC, 0x01FC, 0x007C},
1701   {
1702   /* character 0x3A (':'): (width=4, offset=380) */
1703   0x0000, 0x0000, 0x0000, 0x0000,
1704   0x0006, 0x000F, 0x000F, 0x0006,
1705   0x0000, 0x0000, 0x0000, 0x0006,
1706   0x000F, 0x000F, 0x0006, 0x0000,
1707   0x0000, 0x0000, 0x0000},
1708   {
1709   /* character 0x3B (';'): (width=11, offset=418) */
1710   0x0000, 0x0000, 0x0000, 0x0000,
1711   0x0000, 0x0000, 0x0000, 0x0000,
1712   0x0000, 0x0000, 0x0000, 0x0000,
1713   0x0000, 0x0000, 0x0000, 0x0000,
1714   0x0000, 0x0000, 0x0000},
1715 };
1716
1717 const unsigned char MetaWatchTimeWidth[TOTAL_TIME_CHARACTERS] = 
1718 {
1719 /*              width    char    hexcode */
1720 /*              =====    ====    ======= */
1721                  11, /*   0      30      */
1722                  11, /*   1      31      */
1723                  11, /*   2      32      */
1724                  11, /*   3      33      */
1725                  11, /*   4      34      */
1726                  11, /*   5      35      */
1727                  11, /*   6      36      */
1728                  11, /*   7      37      */
1729                  11, /*   8      38      */
1730                  11, /*   9      39      */
1731                   4, /*   :      3A      */
1732                  11, /*  ' '     3B      */ 
1733 };
1734
1735 /******************************************************************************/
1736
1737 const unsigned char MetaWatchMonospaced10Table[PRINTABLE_CHARACTERS][10] =  
1738 {
1739   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
1740   {0x00,0x00,0x10,0x38,0x38,0x10,0x10,0x00,0x10,0x00},
1741   {0x00,0x00,0x6C,0x6C,0x24,0x00,0x00,0x00,0x00,0x00},
1742   {0x00,0x00,0x00,0x28,0x7C,0x28,0x28,0x7C,0x28,0x00},
1743   {0x00,0x00,0x10,0x70,0x08,0x30,0x40,0x38,0x20,0x00},
1744   {0x00,0x00,0x4C,0x4C,0x20,0x10,0x08,0x64,0x64,0x00},
1745   {0x00,0x00,0x08,0x14,0x14,0x08,0x54,0x24,0x58,0x00},
1746   {0x00,0x00,0x18,0x18,0x10,0x08,0x00,0x00,0x00,0x00},
1747   {0x00,0x00,0x10,0x08,0x08,0x08,0x08,0x08,0x10,0x00},
1748   {0x00,0x00,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x00},
1749   {0x00,0x00,0x92,0x54,0x38,0xFE,0x38,0x54,0x92,0x00},
1750   {0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00},
1751   {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x10,0x08},
1752   {0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00},
1753   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00},
1754   {0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x00,0x00},
1755   {0x00,0x00,0x38,0x44,0x64,0x54,0x4C,0x44,0x38,0x00},
1756   {0x00,0x00,0x10,0x18,0x10,0x10,0x10,0x10,0x38,0x00},
1757   {0x00,0x00,0x38,0x44,0x40,0x30,0x08,0x04,0x7C,0x00},
1758   {0x00,0x00,0x38,0x44,0x40,0x38,0x40,0x44,0x38,0x00},
1759   {0x00,0x00,0x20,0x30,0x28,0x24,0x7C,0x20,0x20,0x00},
1760   {0x00,0x00,0x7C,0x04,0x04,0x3C,0x40,0x44,0x38,0x00},
1761   {0x00,0x00,0x30,0x08,0x04,0x3C,0x44,0x44,0x38,0x00},
1762   {0x00,0x00,0x7C,0x40,0x20,0x10,0x08,0x08,0x08,0x00},
1763   {0x00,0x00,0x38,0x44,0x44,0x38,0x44,0x44,0x38,0x00},
1764   {0x00,0x00,0x38,0x44,0x44,0x78,0x40,0x20,0x18,0x00},
1765   {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00},
1766   {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x10},
1767   {0x00,0x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00},
1768   {0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00},
1769   {0x00,0x00,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00},
1770   {0x00,0x00,0x38,0x44,0x40,0x30,0x10,0x00,0x10,0x00},
1771   {0x00,0x00,0x38,0x44,0x74,0x54,0x74,0x04,0x38,0x00},
1772   {0x00,0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44,0x00},
1773   {0x00,0x00,0x3C,0x44,0x44,0x3C,0x44,0x44,0x3C,0x00},
1774   {0x00,0x00,0x38,0x44,0x04,0x04,0x04,0x44,0x38,0x00},
1775   {0x00,0x00,0x3C,0x44,0x44,0x44,0x44,0x44,0x3C,0x00},
1776   {0x00,0x00,0x7C,0x04,0x04,0x3C,0x04,0x04,0x7C,0x00},
1777   {0x00,0x00,0x7C,0x04,0x04,0x3C,0x04,0x04,0x04,0x00},
1778   {0x00,0x00,0x38,0x44,0x04,0x74,0x44,0x44,0x78,0x00},
1779   {0x00,0x00,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x00},
1780   {0x00,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,0x00},
1781   {0x00,0x00,0x40,0x40,0x40,0x40,0x44,0x44,0x38,0x00},
1782   {0x00,0x00,0x44,0x24,0x14,0x0C,0x14,0x24,0x44,0x00},
1783   {0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x7C,0x00},
1784   {0x00,0x00,0x44,0x6C,0x54,0x44,0x44,0x44,0x44,0x00},
1785   {0x00,0x00,0x44,0x4C,0x54,0x64,0x44,0x44,0x44,0x00},
1786   {0x00,0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00},
1787   {0x00,0x00,0x3C,0x44,0x44,0x3C,0x04,0x04,0x04,0x00},
1788   {0x00,0x00,0x38,0x44,0x44,0x44,0x54,0x24,0x58,0x00},
1789   {0x00,0x00,0x3C,0x44,0x44,0x3C,0x24,0x44,0x44,0x00},
1790   {0x00,0x00,0x38,0x44,0x04,0x38,0x40,0x44,0x38,0x00},
1791   {0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x00},
1792   {0x00,0x00,0x44,0x44,0x44,0x44,0x44,0x44,0x38,0x00},
1793   {0x00,0x00,0x44,0x44,0x44,0x44,0x44,0x28,0x10,0x00},
1794   {0x00,0x00,0x44,0x44,0x54,0x54,0x54,0x54,0x28,0x00},
1795   {0x00,0x00,0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x00},
1796   {0x00,0x00,0x44,0x44,0x44,0x28,0x10,0x10,0x10,0x00},
1797   {0x00,0x00,0x7C,0x40,0x20,0x10,0x08,0x04,0x7C,0x00},
1798   {0x00,0x00,0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00},
1799   {0x00,0x00,0x00,0x04,0x08,0x10,0x20,0x40,0x00,0x00},
1800   {0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x38,0x00},
1801   {0x00,0x00,0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00},
1802   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00},
1803   {0x00,0x18,0x18,0x08,0x10,0x00,0x00,0x00,0x00,0x00},
1804   {0x00,0x00,0x00,0x00,0x38,0x40,0x78,0x44,0x78,0x00},
1805   {0x00,0x00,0x04,0x04,0x3C,0x44,0x44,0x44,0x3C,0x00},
1806   {0x00,0x00,0x00,0x00,0x38,0x44,0x04,0x44,0x38,0x00},
1807   {0x00,0x00,0x40,0x40,0x78,0x44,0x44,0x44,0x78,0x00},
1808   {0x00,0x00,0x00,0x00,0x38,0x44,0x3C,0x04,0x38,0x00},
1809   {0x00,0x00,0x60,0x10,0x10,0x78,0x10,0x10,0x10,0x00},
1810   {0x00,0x00,0x00,0x78,0x44,0x44,0x78,0x40,0x38,0x00},
1811   {0x00,0x00,0x08,0x08,0x38,0x48,0x48,0x48,0x48,0x00},
1812   {0x00,0x00,0x10,0x00,0x10,0x10,0x10,0x10,0x10,0x00},
1813   {0x00,0x00,0x40,0x00,0x60,0x40,0x40,0x40,0x48,0x30},
1814   {0x00,0x00,0x08,0x08,0x48,0x28,0x18,0x28,0x48,0x00},
1815   {0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00},
1816   {0x00,0x00,0x00,0x00,0x2C,0x54,0x54,0x44,0x44,0x00},
1817   {0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x00},
1818   {0x00,0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00},
1819   {0x00,0x00,0x00,0x00,0x3C,0x44,0x44,0x3C,0x04,0x04},
1820   {0x00,0x00,0x00,0x00,0x78,0x44,0x44,0x78,0x40,0x40},
1821   {0x00,0x00,0x00,0x00,0x34,0x48,0x08,0x08,0x1C,0x00},
1822   {0x00,0x00,0x00,0x00,0x38,0x04,0x38,0x40,0x38,0x00},
1823   {0x00,0x00,0x00,0x10,0x78,0x10,0x10,0x50,0x20,0x00},
1824   {0x00,0x00,0x00,0x00,0x48,0x48,0x48,0x68,0x50,0x00},
1825   {0x00,0x00,0x00,0x00,0x44,0x44,0x44,0x28,0x10,0x00},
1826   {0x00,0x00,0x00,0x00,0x44,0x44,0x54,0x7C,0x28,0x00},
1827   {0x00,0x00,0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00},
1828   {0x00,0x00,0x00,0x00,0x48,0x48,0x48,0x70,0x40,0x70},
1829   {0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00},
1830   {0x00,0x00,0x30,0x08,0x08,0x0C,0x08,0x08,0x30,0x00},
1831   {0x00,0x00,0x10,0x10,0x10,0x00,0x10,0x10,0x10,0x00},
1832   {0x00,0x00,0x18,0x20,0x20,0x60,0x20,0x20,0x18,0x00},
1833 //  {0x00,0x00,0x00,0x50,0x28,0x00,0x00,0x00,0x00,0x00},
1834 };
1835