Chinaunix首页 | 论坛 | 博客
  • 博客访问: 685775
  • 博文数量: 845
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:22
文章分类

全部博文(845)

文章存档

2011年(1)

2008年(844)

我的朋友

分类:

2008-10-15 16:31:27

     关于点阵字库在J2ME的实现。
          最近在学习C的过程中无意发现了点阵字库的东西。整理了下,在J2ME实现了下相关的算法。

    下面是DOS的一段话
         对于使用少量的汉字图形程序,完全没有必要带巨大的汉字库来运行,只要内存允许,你可以把汉字字模直接定义为数组的信息在EXE文件里。通过这个工具,你可以把单个字模信息直接取出来,然后在源代码中粘贴。该工具的强大在于不仅可以生成12×12、16×16宋体这些存在于DOS字库的字模,而且可以生成16×16楷体、黑体甚至自定义字体的字模,而且可以提供6种字模大小供您选择并即时预览效果!对使用少量汉字的图形编程能够提供极大方便。

    相对于绘制这些字体的J2ME函数是:
        首先,我们要通过工具来生成点阵字库的GB2312字模,然后在图像中绘制出来,下面我给出一些字体的字模,废话少说,具体看例子吧。有啥不明白,或者需要探讨的,到uhua.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,
    };

    char ti16[] = {
    /* 以下是 '体' 的 16点阵宋体 字模,32 byte */
    0x10, 0x40, 0x18, 0x40, 0x10, 0x40, 0x20, 0x40,
    0x37, 0xFC, 0x60, 0xC0, 0xA0, 0xE0, 0x21, 0x60,
    0x21, 0x50, 0x22, 0x48, 0x24, 0x4E, 0x2B, 0xF4,
    0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x00, 0x00,
    };

    char zi24[] = {
    /* 以下是 '字' 的 24点阵隶书 字模,72 byte */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x1C, 0x10,
    0x1F, 0xFF, 0xF0, 0x18, 0x00, 0x30, 0x18, 0xFF,
    0x10, 0x09, 0xC3, 0x90, 0x00, 0x3C, 0x00, 0x00,
    0x1C, 0x00, 0x3F, 0xFF, 0xFE, 0x7E, 0x0C, 0xFE,
    0x00, 0x1C, 0x04, 0x00, 0x1C, 0x00, 0x04, 0x3C,
    0x00, 0x03, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    };

    char mo24[] = {
    /* 以下是 '模' 的 24点阵楷体_GB2312 字模,72 byte */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00,
    0x30, 0x03, 0x0C, 0x20, 0x03, 0x04, 0x3C, 0x02,
    0x07, 0xE0, 0x02, 0x1C, 0x40, 0x02, 0x00, 0x40,
    0x03, 0xC0, 0x70, 0x7E, 0x1F, 0x98, 0x02, 0x08,
    0x10, 0x06, 0x0F, 0x90, 0x07, 0x88, 0x10, 0x0A,
    0xCB, 0xE0, 0x1A, 0x05, 0x00, 0x12, 0x01, 0x1E,
    0x22, 0x0F, 0xFE, 0x42, 0x32, 0x80, 0x02, 0x02,
    0x40, 0x02, 0x04, 0x60, 0x02, 0x0C, 0x30, 0x02,
    0x18, 0x1C, 0x02, 0x20, 0x0F, 0x02, 0x00, 0x00,
    };

    char guan48[] = {
    /* 以下是 '灌' 的 48点阵黑体 字模,288 byte */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x38, 0x00,
    0x03, 0x00, 0x03, 0xC0, 0x38, 0x00, 0x07, 0x80,
    0x03, 0xC0, 0x38, 0x00, 0x07, 0xC0, 0x03, 0xC0,
    0x38, 0x00, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0xFC,
    0x01, 0xF9, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x79,
    0xF1, 0xC0, 0x39, 0xFC, 0x00, 0x30, 0x01, 0xC0,
    0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFF, 0xF0, 0xFF, 0xE0, 0x00, 0x00, 0xFF, 0xF0,
    0xFF, 0xE0, 0x00, 0x00, 0xE0, 0x70, 0xE0, 0xE0,
    0x0E, 0x00, 0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0x80,
    0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0xE0, 0xFF, 0xF0,
    0xFF, 0xE0, 0x07, 0xF0, 0xFF, 0xF0, 0xFF, 0xE0,
    0x01, 0xF0, 0xFF, 0xF1, 0xFF, 0xE0, 0x00, 0x60,
    0x08, 0x07, 0x00, 0x00, 0x00, 0x20, 0x1E, 0x03,
    0x80, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x00,
    0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
    0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF,
    0xFF, 0xF0, 0x00, 0x00, 0x7C, 0x03, 0x80, 0x00,
    0x00, 0x20, 0x7C, 0x03, 0x80, 0x00, 0x00, 0x70,
    0xFC, 0x03, 0x80, 0x00, 0x00, 0x71, 0xFF, 0xFF,
    0xFF, 0xE0, 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0xE0,
    0x00, 0xF3, 0xBC, 0x03, 0x80, 0x60, 0x00, 0xE3,
    0xBC, 0x03, 0x80, 0x00, 0x01, 0xE1, 0x3C, 0x03,
    0x80, 0x00, 0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0,
    0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0xC0,
    0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0x80, 0x3C, 0x03,
    0x80, 0x00, 0x07, 0x80, 0x3C, 0x03, 0x80, 0x00,
    0x0F, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x0F, 0x00,
    0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, 0x3F, 0xFF,
    0xFF, 0xF8, 0x1F, 0x00, 0x3C, 0x00, 0x00, 0x00,
    0x06, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    };

    char guan64[] = {
    /* 以下是 '灌' 的 64点阵方正黄草简体 字模,512 byte */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x03, 0xCF, 0xC0, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x1E, 0x07, 0xC0, 0x00,
    0x00, 0x00, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00,
    0x00, 0x04, 0x00, 0x03, 0xF8, 0x0F, 0x00, 0x00,
    0x00, 0x06, 0x00, 0x03, 0xF0, 0x18, 0x00, 0x00,
    0x00, 0x07, 0x00, 0x01, 0xF0, 0x30, 0x00, 0x00,
    0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x00, 0x00,
    0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x00, 0x00,
    0x00, 0x03, 0xE0, 0x00, 0x00, 0x06, 0x00, 0x00,
    0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00,
    0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00,
    0x00, 0x07, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00,
    0x00, 0x0F, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00,
    0x00, 0x0C, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00,
    0x00, 0x08, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00,
    0x00, 0x08, 0x00, 0x0F, 0xF0, 0x07, 0xC0, 0x00,
    0x00, 0x00, 0x00, 0x3F, 0x40, 0x0F, 0xC0, 0x00,
    0x00, 0x00, 0x00, 0x18, 0x80, 0x3F, 0x80, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x03, 0x0F, 0xFC, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x06, 0x1F, 0xF8, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x0E, 0x23, 0xF0, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x0E, 0xC3, 0xE0, 0x00, 0x00,
    0x00, 0x80, 0x00, 0x1F, 0x87, 0xC0, 0x00, 0x00,
    0x00, 0xC0, 0x00, 0x1F, 0x8F, 0x87, 0x80, 0x00,
    0x00, 0x70, 0x02, 0x0F, 0x9F, 0x0F, 0x80, 0x00,
    0x00, 0x7C, 0x02, 0x0F, 0xBE, 0x1C, 0xE0, 0x00,
    0x00, 0x3E, 0x04, 0x07, 0xFC, 0x18, 0xE0, 0x00,
    0x00, 0x3E, 0x04, 0x03, 0xF0, 0x1B, 0xC0, 0x00,
    0x00, 0x3E, 0x0C, 0x01, 0xE0, 0x1F, 0x80, 0x00,
    0x00, 0x1C, 0x08, 0x03, 0xC0, 0x1F, 0x00, 0x00,
    0x00, 0x18, 0x18, 0x07, 0x80, 0x7C, 0x00, 0x00,
    0x00, 0x18, 0x38, 0x0F, 0x01, 0xFC, 0x00, 0x00,
    0x00, 0x18, 0x30, 0x1F, 0x07, 0xDC, 0x00, 0x00,
    0x00, 0x30, 0x70, 0x3F, 0x1F, 0x0C, 0x00, 0x00,
    0x00, 0x30, 0x70, 0x7B, 0x38, 0x0C, 0x00, 0x00,
    0x00, 0x30, 0xE0, 0xF3, 0x60, 0x0C, 0x00, 0x00,
    0x00, 0x30, 0xE1, 0xE3, 0x00, 0x0E, 0x00, 0x00,
    0x00, 0x71, 0xC3, 0xE3, 0x00, 0x3E, 0x00, 0x00,
    0x00, 0x71, 0xC3, 0xC3, 0x00, 0x6E, 0x00, 0x00,
    0x00, 0x73, 0x83, 0xC3, 0x00, 0xCE, 0x00, 0x00,
    0x00, 0x77, 0x80, 0x07, 0x00, 0x9E, 0x00, 0x00,
    0x00, 0x77, 0x80, 0x07, 0x00, 0x9C, 0x00, 0x00,
    0x00, 0x7F, 0x00, 0x07, 0x00, 0x9C, 0x00, 0x00,
    0x00, 0x7F, 0x00, 0x07, 0x00, 0xBC, 0x00, 0x00,
    0x00, 0x7E, 0x00, 0x07, 0x00, 0xFC, 0x00, 0x00,
    0x00, 0x7E, 0x00, 0x07, 0x00, 0xFC, 0x00, 0x00,
    0x00, 0x7C, 0x00, 0x07, 0x00, 0xFF, 0x00, 0x00,
    0x00, 0x7C, 0x00, 0x06, 0x00, 0xDE, 0x00, 0x00,
    0x00, 0xFC, 0x00, 0x06, 0x00, 0x5C, 0x00, 0x00,
    0x01, 0xF8, 0x00, 0x06, 0x00, 0x78, 0x00, 0x00,
    0x00, 0xF8, 0x00, 0x0E, 0x00, 0x78, 0xF8, 0x00,
    0x00, 0xF8, 0x00, 0x0E, 0x00, 0xFF, 0xF8, 0x00,
    0x00, 0x78, 0x00, 0x0E, 0x01, 0xFF, 0xB0, 0x00,
    0x00, 0x70, 0x00, 0x06, 0x01, 0xF0, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    };

   

[1]  

【责编:landy】

--------------------next---------------------

阅读(284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~