?? takefont.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 + -