Example #1
0
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
}
Example #2
0
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;
}
Example #3
0
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;
	}