Exemplo n.º 1
0
int WINAPI PIM_ReloadFontMapResource()
{
	FreeFontMapResource();
	LoadFontMapResource();

	return 1;
}
Exemplo n.º 2
0
/**	装载输入法使用的资源,如果失败,则输入法不起作用
 *	返回:
 *		成功:1,失败:0
 */
int PIM_LoadResources()
{
	LoadWordLibraryResource();			//词库
	LoadBigramResource();				//Bigram数据

	if (share_segment->resource_loaded)
		return 1;

	share_segment->resource_loaded = 1;

	LoadSpwResource();					//短语
	LoadTopZiResource();				//置顶字
	LoadZiCacheResource();				//汉字Cache
	LoadHZDataResource();				//装载汉字数据
	LoadCiCacheResource();				//词Cache
	//LoadNewWordTable();					//新词表
	LoadSPResource();					//装载双拼资源
	LoadSymbolResource();				//装载中文符号资源
	LoadFontMapResource();              //load font map
	GenGBKMapResource();                //load gbk map
//	LoadEnglishResource();				//装载英文词典数据
//	LoadEnglishTransResource();			//装载英文翻译数据
//	LoadURLResource();				    //装载URL数据
//	LoadBHResource();					//装载笔划数据文件

	return 1;
}
Exemplo n.º 3
0
int FontCanSupport(UC zi)
{
	int pos_offset;
	byte pos_mask,*pos;
	TCHAR *fontname,*pos1,*pos2;
	extern int LoadFontMapResource();

	if(!share_segment->fontmap_loaded)
		return 1;
	//if font map data isn't loaded,return 1(support)
	if(!fontmap)
	{
		fontmap = GetReadOnlySharedMemory(fontmap_share_name);

		//可能存在其他进程已经装载了,但是退出后共享内存被释放的问题
		if (!fontmap && share_segment->fontmap_loaded)
		{
			share_segment->fontmap_loaded = 0;
			LoadFontMapResource();
		}
	}
	if(!fontmap)
		return 1;

	fontname = (TCHAR *)(fontmap + 0x6000);
	if (!fontname)
		return 1;
	pos1 = _tcsstr( fontname, pim_config->chinese_font_name );
	pos2 = _tcsstr( fontname, TEXT("{") );
	if (!pos1 || pos1 > pos2)
		return 1;

	if (!fontmap || zi > 0x2FFFF)
		return 1;

	//PUA
	if ( !_tcscmp(pim_config->chinese_font_name,TEXT("微软雅黑")) && zi >= 0xE000 && zi <= 0xF8FF )
		return 0;

	pos_offset = zi >> 3;
	pos_mask = 1 << (zi % 8);

	pos = (byte*)(fontmap + pos_offset);

	return (*pos) & pos_mask;
}