void manager::init() const { #ifdef CAIRO_HAS_FT_FONT if (!FcConfigAppFontAddDir(FcConfigGetCurrent(), reinterpret_cast<const FcChar8 *>((game_config::path + "/fonts").c_str()))) { ERR_FT << "Could not load the true type fonts\n"; throw error(); } #endif #if CAIRO_HAS_WIN32_FONT BOOST_FOREACH(const std::string& path, get_binary_paths("fonts")) { std::vector<std::string> files; get_files_in_dir(path, &files, NULL, ENTIRE_FILE_PATH); BOOST_FOREACH(const std::string& file, files) if(file.substr(file.length() - 4) == ".ttf" || file.substr(file.length() - 4) == ".ttc") AddFontResourceA(file.c_str()); } #endif }
FontLoadStatus FontLoad(const char *p_filename) { FontLoadStatus t_status; t_status = kFontLoadStatusSuccess; if (t_status == kFontLoadStatusSuccess) { struct _stat t_info; if (_stat(p_filename, &t_info) != 0 || (t_info . st_mode & _S_IFDIR) != 0) t_status = kFontLoadStatusNotFound; } if (t_status == kFontLoadStatusSuccess) { if (AddFontResourceA(p_filename) == 0) t_status = kFontLoadStatusBadFont; } if (t_status == kFontLoadStatusSuccess) PostMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); return t_status; }
void Test_AddFontResourceA() { CHAR szFileNameA[MAX_PATH]; CHAR szFileNameFont1A[MAX_PATH]; CHAR szFileNameFont2A[MAX_PATH]; int result; GetCurrentDirectoryA(MAX_PATH,szFileNameA); memcpy(szFileNameFont1A,szFileNameA,MAX_PATH ); strcat(szFileNameFont1A, "\\testdata\\test.ttf"); memcpy(szFileNameFont2A,szFileNameA,MAX_PATH ); strcat(szFileNameFont2A, "\\testdata\\test.otf"); RtlZeroMemory(szFileNameA,MAX_PATH); /* * Start testing Ansi version * */ /* Testing NULL pointer */ SetLastError(ERROR_SUCCESS); result = AddFontResourceA(NULL); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); /* Testing -1 pointer */ SetLastError(ERROR_SUCCESS); result = AddFontResourceA((CHAR*)-1); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); /* Testing address 1 pointer */ SetLastError(ERROR_SUCCESS); result = AddFontResourceA((CHAR*)1); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); /* Testing address empty string */ SetLastError(ERROR_SUCCESS); result = AddFontResourceA(""); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_INVALID_PARAMETER, "GetLastError()=%ld\n", GetLastError()); /* Testing one ttf font */ SetLastError(ERROR_SUCCESS); result = AddFontResourceA(szFileNameFont1A); ok(result == 1, "AddFontResourceA(\"%s\") failed, result=%d\n", szFileNameFont1A, result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); /* Testing one otf font */ SetLastError(ERROR_SUCCESS); result = AddFontResourceA(szFileNameFont2A); ok(result == 1, "AddFontResourceA failed, result=%d\n", result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); /* Testing two fonts */ SetLastError(ERROR_SUCCESS); sprintf(szFileNameA,"%s|%s",szFileNameFont1A, szFileNameFont2A); result = AddFontResourceA(szFileNameA); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); SetLastError(ERROR_SUCCESS); sprintf(szFileNameA,"%s |%s",szFileNameFont1A, szFileNameFont2A); result = AddFontResourceA(szFileNameA); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); SetLastError(ERROR_SUCCESS); sprintf(szFileNameA,"%s | %s",szFileNameFont1A, szFileNameFont2A); result = AddFontResourceA(szFileNameA); ok(result == 0, "AddFontResourceA succeeded, result=%d\n", result); ok(GetLastError() == ERROR_FILE_NOT_FOUND, "GetLastError()=%ld\n", GetLastError()); GetCurrentDirectoryA(MAX_PATH, szFileNameA); strcpy(szFileNameFont1A, szFileNameA); strcat(szFileNameFont1A, "\\testdata\\test.pfm"); strcpy(szFileNameFont2A, szFileNameA); strcat(szFileNameFont2A, "\\testdata\\test.pfb"); SetLastError(ERROR_SUCCESS); sprintf(szFileNameA,"%s|%s", szFileNameFont1A, szFileNameFont2A); result = AddFontResourceA(szFileNameA); ok(result == 1, "AddFontResourceA(\"%s|%s\") failed, result=%d\n", szFileNameFont1A, szFileNameFont2A, result); ok(GetLastError() == ERROR_SUCCESS, "GetLastError()=%ld\n", GetLastError()); sprintf(szFileNameA,"%s | %s", szFileNameFont1A, szFileNameFont2A); result = AddFontResourceA(szFileNameA); ok(result == 0, "AddFontResourceA(\"%s | %s\") succeeded, result=%d\n", szFileNameFont1A, szFileNameFont2A, result); ok(GetLastError() == ERROR_FILE_NOT_FOUND, "GetLastError()=%ld\n", GetLastError()); sprintf(szFileNameA,"%s|%s", szFileNameFont2A, szFileNameFont1A); result = AddFontResourceA(szFileNameA); ok(result == 0, "AddFontResourceA(\"%s|%s\") succeeded, result=%d\n", szFileNameFont2A, szFileNameFont1A, result); ok(GetLastError() == ERROR_FILE_NOT_FOUND, "GetLastError()=%ld\n", GetLastError()); }
void map_font() { HDC hDC = GetDC( NULL ); //errno_t err ; //err = _wfopen_s(&out, L"font_dump.txt", L"w, ccs=UNICODE" ) ; //LOGFONT lf = { 0, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, //0, NULL }; //EnumFontFamiliesEx( hDC, &lf, (FONTENUMPROC)EnumFontFamiliesExProc, 0, 0 ); //fclose( out ); HFONT hfont; TEXTMETRIC tm; LOGFONTA lf; TCHAR szFaceName[LF_FACESIZE]; CHOOSEFONTA choose_font; LPCTSTR lpszFilename = "c:\\Code39Barcode.ttf"; int err; bool success; // load font err = AddFontResourceA(lpszFilename); SendMessageA(HWND_BROADCAST,WM_FONTCHANGE,0,0); choose_font.lStructSize = sizeof(CHOOSEFONT); choose_font.hwndOwner = NULL; choose_font.lpLogFont = &lf; choose_font.Flags = CF_SCREENFONTS; success = ChooseFontA( &choose_font ); /* for( indx=0; indx<num_fonts; indx++) { hfont = CreateFontA(0,0,0,0,0,0,0,0,DEFAULT_CHARSET, 0,0,0,0, font_table[indx]); SelectObject(hDC, hfont); GetObjectA( GetCurrentObject( hdc, OBJ_FONT ), sizeof(lf), (LPVOID) &lf ); // Get the info for the currently realized font. //GetTextMetrics( hdc, &tm ); GetTextFace( hdc, sizeof(szFaceName), szFaceName ); cout << "Font: " << font_table[indx] << " Mapping: " << szFaceName << endl; */ /* // get logical font information hfont = CreateFontA(0,0,0,0,0,0,0,0,DEFAULT_CHARSET, 0,0,0,0, "Code39Barcode"); SelectObject(hDC, hfont); GetObjectA( GetCurrentObject( hDC, OBJ_FONT ), sizeof(lf), (LPVOID) &lf ); GetTextFace( hDC, sizeof(szFaceName), szFaceName ); */ // unload font err = RemoveFontResourceA(lpszFilename); SendMessageA(HWND_BROADCAST,WM_FONTCHANGE,0,0); hfont = CreateFontIndirectA(&lf); SelectObject(hDC, hfont); GetObjectA( GetCurrentObject( hDC, OBJ_FONT ), sizeof(lf), (LPVOID) &lf ); GetTextFace( hDC, sizeof(szFaceName), szFaceName ); GetTextMetrics( hDC, &tm ); //cout << "Font: " << "Arial" << " Mapping: " << szFaceName << endl; ReleaseDC( NULL, hDC ); return; }