日期:2014-05-20 浏览次数:20592 次
关于点阵字库在J2ME的实现。
最近在学习C的过程中无意发现了点阵字库的东西。整理了下,在J2ME实现了下相关的算法。
下面是DOS的一段话
对于使用少量的汉字图形程序,完全没有必要带巨大的汉字库来运行,
只要内存允许,你可以把汉字字模直接定义为数组的信息存储在EXE文
件里。通过这个工具,你可以把单个字模信息直接取出来,然后在源代
码中粘贴。该工具的强大在于不仅可以生成12×12、16×16宋体这些
存在于DOS字库的字模,而且可以生成16×16楷体、黑体甚至自定义字
体的字模,而且可以提供6种字模大小供您选择并即时预览效果!对使
用少量汉字的图形编程能够提供极大方便。
相对于绘制这些字体的J2ME函数是:
首先,我们要通过工具来生成点阵字库的GB2312字模,然后在图像中绘制出来,下面我给出一些字体的字模,
废话少说,具体看例子吧。有啥不明白,或者需要探讨的,到wuhua.3geye.net。上面有我的联系方式。
import javax.microedition.midlet.*;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Display;
public class FontMIDlet extends MIDlet {
public FontMIDlet() {
}
protected void destroyApp(boolean _boolean) throws
MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(new FontCanvas());
}
char yi12[] = {
/* 以下是 '1' 的 12点阵宋体 字模,24 byte */
0x00, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x3C, 0x00,
0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
0x0C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
};
char er12[] = {
/* 以下是 '2' 的 12点阵宋体 字模,24 byte */
0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x03, 0x00,
0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00,
0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
};
char dian12[] = {
/* 以下是 '点' 的 12点阵宋体 字模,24 byte */
0x04, 0x00, 0x07, 0xC0, 0x04, 0x00, 0x04, 0x00,
0x3F, 0x80, 0x20, 0x80, 0x20, 0x80, 0x3F, 0x80,
0x00, 0x00, 0x49, 0x40, 0xC9, 0x20, 0x00, 0x00,
};
char zhen12[] = {
/* 以下是 '阵' 的 12点阵宋体 字模,24 byte */
0xF2, 0x00, 0x9F, 0xE0, 0x92, 0x00, 0xA5, 0x00,
0xA5, 0x00, 0x97, 0xE0, 0x91, 0x00, 0xB1, 0x00,
0x8F, 0xE0, 0x81, 0x00, 0x81, 0x00, 0x00, 0x00,
};
char song16[] = {
/* 以下是 '宋' 的 16点阵宋体 字模,32 byte */
0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x41, 0x04,
0x81, 0x08, 0x01, 0x00, 0x7F, 0xFC, 0x03, 0x80,
0x05, 0x80, 0x05, 0x40, 0x09, 0x20, 0x11, 0x10,
0x21, 0x0E, 0x41, 0x04, 0x01, 0x00, 0x00, 0x00,