bool xDistanceFontGenerator::generate(const wchar_t* ttfFile , const wchar_t* _distFileName) { InitFilterKernel(); static bool sb_isInited = false; if(sb_isInited == false) { if (FT_Init_FreeType( &g_FT2Lib )) { XEVOL_LOG(eXL_DEBUG_HIGH,"FT_Init_FreeType failed\n"); assert(0); } } sb_isInited = true; char strFontFile[1024] = {0}; XEvol_UnicodeToFsEnc(ttfFile,strFontFile,1024); //加载一个字体,取默认的Face,一般为Regualer if (FT_New_Face( g_FT2Lib, strFontFile, 0, (FT_Face*)&m_FT_Face )) { XEVOL_LOG(eXL_DEBUG_HIGH,"FT_New_Face failed (there is probably a problem with your font file\n <font = %s> \n" , strFontFile); return false; } FT_Select_Charmap( (FT_Face)m_FT_Face, FT_ENCODING_UNICODE); //大小要乘64.这是规定。照做就可以了。 //FT_Set_Char_Size( m_FT_Face , 0 , m_w << 6, 96, 96); FT_Set_Pixel_Sizes( (FT_Face)m_FT_Face,m_ttfSize, m_ttfSize); std::wstring distFileName = std::wstring(_distFileName) + L".dff"; FILE* file = _wfopen(distFileName.c_str(),L"wb+"); std::wstring descFileName = std::wstring(_distFileName) + L".dfd"; FILE* descFile = _wfopen(descFileName.c_str() ,L"wb+"); if(file == NULL || descFile == NULL) return false; int Offset = 0; int nChar = m_Last - m_Begin; fwrite(&nChar , sizeof(nChar) , 1 , descFile ); printf("Bengin........\n"); for(wchar_t ch = m_Begin ; ch < m_Last ; ch ++) { xDFFCharDesc desc; float _noffset = gen(ch , file , Offset , desc); desc.m_offset = Offset; fwrite(&desc , sizeof(desc) , 1 , descFile ); Offset += _noffset; int _nCH = ch ; printf("Total %d char passed\n" , _nCH); } printf("Finish........\n"); fclose(descFile); fclose(file); return true; }
result MultiFrame::InitKernels( const int &sample_expand, const int &linear, const int &correction, const int &balanced) { result status = FILTER_OK; status = InitFilterKernel(sample_expand, linear, correction, balanced); if (status != FILTER_OK) return status; status = InitSortKernel(linear); if (status != FILTER_OK) return status; return status; }