⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 takefont.c

📁 汉字系统的c源代码
💻 C
字号:
    /*-----------------------------------------------------------
        函数 takefont : 从汉字库中取字模点阵
    -----------------------------------------------------------*/
    #include <mem.h>
    #include <hanenv.h>

    int _Cdecl takefont(h)
    unsigned h;                             /* 汉字机内码      */
    {
        int size = _CurrentHZK->fonthigh*_CurrentHZK->fontwidth;
        long pos,addr;

        /*- 如果是小字库,则首先在索引中查找汉字在字库中的位置 -*/
        if(_CurrentHZK->codelist)
        {
            for(pos=0;pos<_CurrentHZK->fontcount;pos++)
                if(h==*((unsigned *)(_CurrentHZK->codelist+pos*2)))
                {
                    pos *= size;
                    goto COPY;
                }
            return NO;
        }
        else
            pos = (long)(((h&0xff)-161)*94+(h>>8)-161)*size;
        COPY:
        switch(_CurrentHZK->wherefont)
        {
            case DSK:   /* 直接使用硬盘上的汉字库文件          */
                fseek(_CurrentHZK->fontfile,pos,SEEK_SET);
                fread(_HanFont,sizeof(char),size,_CurrentHZK->fontfile);
                break;
            case XMS:   /* 汉字库已装载到扩充内存中(用XMS规范) */
                _Emb.len        = size;
                _Emb.sour_han   = _CurrentHZK->fonthandle;
                _Emb.sour_off   = pos;
                _Emb.dest_han   = 0;
                _Emb.dest_off   = FP_SEG(_HanFont);
                _Emb.dest_off <<= 16;
                _Emb.dest_off  += FP_OFF(_HanFont);
                _MoveDataXMS();
                break;
            case EMM:    /* 汉字库已装载到扩充内存中(用INT15H) */
                addr = FP_SEG(_HanFont);
                addr = (addr<<4)+FP_OFF(_HanFont);
                _SetDestAddr(addr,size);
                addr = _CurrentHZK->EMM_addr+pos;
                _SetSourAddr(addr,size);
                _MoveDataEMM(size);
                break;
            case MEM:  /* 汉字库已装载到常规内存中(仅限小字库) */
                memcpy(_HanFont,_CurrentHZK->fontbuff+pos,size);
                break;
        }
        return YES;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -