奥迪Q叁HEL 5 闽南语字库及输入法

发布时间:2019-04-10  栏目:LINUX  评论:0 Comments

要求:原操作系统代码里只是辅助了立陶宛(Lithuania)语展现,要求做的是贯彻对那个系统的汉字全角帮助。

在第二次安装PAJEROHEL5时,要是选拔的是英文,那么系统将不设置粤语辅助包,这样就招致了中文显示为乱码(小方框)…….

hzk1陆的介绍以及不难的行使格局

manbet手机客户端3.0,有许几个人说vi /etc/sysconfig/i1八n文件,其实根本就未有需求。

HZK1陆字库是符合GB2312标准的1陆×1陆点阵字库,HZK16的GB2312-80接济的汉字有67六3个,符号6八贰个。当中一级汉字有3753个,按声序排列,二级汉字有300九个,按偏旁部首排列。大家在局地行使场面根本用不到那般多汉字字模,所以在运用时就能够只领到部分字体作为己用。

消除办法:

HZK16字Curry的1陆×1陆汉字一共供给25捌个点来显示,相当于说供给三11个字节才能达成呈现三个平时汉字的指标。

安装 一.fonts-chinese-三.0二-九.陆.el伍.noarch.rpm.
假若不可能安装,则加个–force

大家领略3个GB231二汉字是由三个字节编码的,范围为A一A1~FEFE。A壹-A九为符号区,B0到F7为汉字区。每三个区有九四个字符(注意:那只是编码的批准限制,不自然都有字型对应,比如符号区就有不少编码空白区域)。上面以汉字“作者”为例,介绍怎样在HZK1陆文书中找到它对应的三10多少个字节的字样数据。

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

眼下聊到贰个汉字占七个字节,那两个中前3个字节为该汉字的区号,后二个字节为该字的位号。在这之中,每一种区记录九多个汉字,位号为该字在该区中的地方。所以要找到“我”在hzk1陆库中的地点就必须获得它的区码和位码。(为了不相同使用了区码和区号,其实是2个东西,别被小编误导了)

大多数人到了此地就从不做任何操作了,导致照旧鞭长莫及正确突显普通话。

区码:区号(汉字的率先个字节)-0xa0
(因为汉字编码是从0xa0区开班的,所以文件最前边就是从0xa0区起首,要算出相对区码)

3.cd /usr/share/fonts/

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

4.fc-cache -fv #那两步才是水到渠成的显要阿,相信还有不少人苦恼在那边

那样我们就足以博得汉字在HZK16中的相对偏移地方:

如上就安装好了国文支持,上面包车型地铁包是设置粤语输入法:

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

scim-libs-*

诠释:一、区码减1是因为数组是以0为开头而区号位号是以1为起头的

scim-1.4.4-*

2、(94*(区号-壹)+位号-1)是3其中华夏族民共和国字字模占用的字节数

scim-chinese-standard-*

3、最终乘以3二是因为汉字库文应从该职务起的3贰字节音讯记录该字的字样音讯(前面提到贰在那之中华夏族民共和国字要有三11个字节彰显)

scim-tables-*

 有了舞狮地址就足以从HZK1陆中读取汉字编码了

scim-pinyin-*

落实思路:

manbet手机客户端3.0 1

  1. 摸底HZK编码,领会一下相符GB2312标准的中文点阵字库文件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陆是分为上半部分和下半部分的。

那边别的的地点相比较弄,第四步将大小修改一下,笔者的是nihongo = (unsigned
char *) memman_alloc_4k(memman, 55*94*32);

第⑤步,要注意,HZK16是内外两有些,区别于日文的左右两有的的构造。

代码如下:

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中插手1些中华夏族民共和国字。

manbet手机客户端3.0 2

参考资料:

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

留下评论

网站地图xml地图