manbetx手机网页版奇骏HEL 伍 普通话字库及输入法

要求:原操作系统代码里只是支撑了阿拉伯语突显,须求做的是贯彻对这些类其他方块字全角协理。

在第壹次安装汉兰达HEL五时,假若接纳的是英文,那么系统将不安装中文帮忙包,那样就造成了华语呈现为乱码(小方框)…….

hzk1六的牵线以及不难的行使办法

有好多少人说vi /etc/sysconfig/i1八n文件,其实根本就不曾必要。

HZK1六字库是契合GB2312标准的1六×1陆点阵字库,HZK1陆的GB231贰-80帮忙的汉字有676二个,符号6八二个。当中超级汉字有375一个,按声序排列,二级汉字有300七个,按偏旁部首排列。我们在一部分应用地方根本用不到那般多汉字字模,所以在运用时就能够只领到部分字体作为己用。

化解方法:

HZK16字Curry的1六×1陆中夏族民共和国字一共须要257个点来展现,也正是说要求3二个字节才能达成展现二个不乏先例汉字的目标。

安装 一.fonts-chinese-③.0二-九.6.el5.noarch.rpm.
如若不恐怕安装,则加个–force

咱俩精通3个GB231二汉字是由四个字节编码的,范围为A1A壹~FEFE。A壹-A9为符号区,B0到F7为汉字区。每叁个区有玖五个字符(注意:那只是编码的批准限制,不必然都有字型对应,比如符号区就有为数不少编码空白区域)。下边以汉字“我”为例,介绍怎么样在HZK16文件中找到它对应的3三个字节的字样数据。

2.fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

近年来谈到二个汉字占八个字节,那两在那之中前二个字节为该汉字的区号,后3个字节为该字的位号。在那之中,每一种区记录玖四个汉字,位号为该字在该区中的地点。所以要找到“笔者”在hzk1陆库中的地方就必须取得它的区码和位码。(为了区别使用了区码和区号,其实是三个事物,别被笔者误导了)

超越伍分之多个人到了那边就从未做别的操作了,导致依旧鞭长莫及正确突显中文。

区码:区号(汉字的第二个字节)-0xa0
(因为汉字编码是从0xa0区启幕的,所以文件最前方正是从0xa0区开首,要算出相对区码)

3.cd /usr/share/fonts/

位码:位号(汉字的第一个字节)-0xa0

4.fc-cache -fv #那两步才是打响的首要性阿,相信还有不少人干扰在这里

那样大家就足以获得汉字在HZK1六中的绝对偏移位置:

如上就安装好了普通话援助,下边包车型客车包是设置中文输入法:

offset=(94*(区码-1)+(位码-1))*32

scim-libs-*

诠释:1、区码减1是因为数组是以0为发端而区号位号是以1为发端的

scim-1.4.4-*

2、(94*(区号-一)+位号-1)是1个汉字字模占用的字节数

scim-chinese-standard-*

三、最后乘以32是因为汉字库文应从该职位起的3二字节音讯记录该字的字样消息(前面提到一个中华人民共和国字要有三13个字节展现)

scim-tables-*

 有了摇头地址就足以从HZK16中读取汉字编码了

scim-pinyin-*

实现思路:

manbetx手机网页版 1

  1. 打探HZK编码,精晓一下契合GB231贰标准的中文点阵字库文件HZK1陆;
  2. 下载粤语GB231二的2进制点阵文件;
  3. 将HZK1陆.fnt文书放入nihongo文件夹中;
  4. 修改主makefile文件和app_make.txt文件,将原本装载nihongo.fnt的语句替换来装载HZK1陆.fnt即可;
  5. 修改bootpack.c文件,将事先分配的装载德语字体的内部存款和储蓄器扩充,载入字库的公文名;
  6. 在haribote/graphic.c中加上帮助汉字的代码,扩张二个函数用于显示汉字;
  7. 修改putfonts8_asc函数里if (task->langmode == 3)语句块;
  8. 测试程序。
  9. 只顾:日文的编码是分为左半部分和右半部分,而大家应用的HZK1陆是分为上半部分和下半部分的。

此处别的的地点比较弄,第4步将大小修改一下,小编的是nihongo = (unsigned
char *) memman_alloc_4k(memman, 55*94*32);

第四步,要专注,HZK1陆是左右两部分,差异于日文的左右两有些的布局。

代码如下:

void putfont32(char *vram, int xsize, int x, int y, char c, char *font1, char *font2)
{
    int i,k,j,f;
    char *p, d ;
    j=0;
    p=vram+(y+j)*xsize+x;
    j++;
    //上半部分
    for(i=0;i<16;i++)
    {
        for(k=0;k<8;k++)
        {
            if(font1[i]&(0x80>>k))
            {
                p[k+(i%2)*8]=c;
            }
        }
        if(i%2==0){
            for(k=0;k<4;k++){
                f=p[k];
                p[k]=p[7-k];
                p[7-k]=f;
            }
        }else{
            for(k=0;k<4;k++){
                f=p[k+8];
                p[k+8]=p[15-k];
                p[15-k]=f;
            }
        }
       /* for(k=0;k<8/2;k++)
        {
            f=p[k+(i%2)*8];
            p[k+(i%2)*8]=p[8-1-k+(i%2)*8];
            p[8-1-k+(i%2)*8]=f;
        }*/
        if(i%2)
        {
            p=vram+(y+j)*xsize+x;
            j++;
        }
    }
    //下半部分
    for(i=0;i<16;i++)
    {
        for(k=0;k<8;k++)
        {
            if(font2[i]&(0x80>>k))
            {
                p[k+(i%2)*8]=c;
            }
        }
        if(i%2==0){
            for(k=0;k<4;k++){
                f=p[k];
                p[k]=p[7-k];
                p[7-k]=f;
            }
        }else{
            for(k=0;k<4;k++){
                f=p[k+8];
                p[k+8]=p[15-k];
                p[15-k]=f;
            }
        }
        /*for(k=0;k<8/2;k++)
        {
            f=p[k+(i%2)*8];
            p[k+(i%2)*8]=p[8-1-k+(i%2)*8];
            p[8-1-k+(i%2)*8]=f;
        }*/
        if(i%2)
        {
            p=vram+(y+j)*xsize+x;
            j++;
        }
    }
    return;
}

 

运作结果,大家在euc.txt中投入一些中夏族民共和国字。

manbetx手机网页版 2

参考资料:

1.https://www.cnblogs.com/wunaozai/p/3858473.html 30天操作系统支持中文。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图