Пример #1
0
INT32 ATMFontMan::DeInstallFont(TCHAR *pMenuName, WORD Style)
{
	INT32 err = BeginFontChange();

	if (err==ATM_NOERR)
		err = RemoveFont(pMenuName, Style);

	EndFontChange();

	return err;
}
Пример #2
0
void CFGAS_FontMgr::RemoveFont(CFGAS_GEFont* pFont) {
  RemoveFont(m_CPFonts, pFont);
  RemoveFont(m_FamilyFonts, pFont);
  RemoveFont(m_UnicodeFonts, pFont);
  RemoveFont(m_BufferFonts, pFont);
  RemoveFont(m_StreamFonts, pFont);
  RemoveFont(m_DeriveFonts, pFont);
  int32_t iFind = m_Fonts.Find(pFont);
  if (iFind > -1)
    m_Fonts.RemoveAt(iFind, 1);
}
Пример #3
0
BOOL FreeTypeFontEngine::RemoveFont(LPCWSTR FontName)
{
	if (!FontName) return false;
	LOGFONTW* fontarray = GetFontNameFromFile(FontName);
	LOGFONTW* c_fontarray = fontarray;	//记录原始指针
	if (!fontarray) return false;
	FTC_FaceID fid = NULL;
	BOOL bIsFontLoaded, bIsFontFileLoaded = false;
	COwnedCriticalSectionLock __lock2(2, COwnedCriticalSectionLock::OCS_DC);	//获取所有权,现在要处理DC,禁止所有绘图函数访问
	CCriticalSectionLock __lock(CCriticalSectionLock::CS_MANAGER);
	while (*(char*)fontarray)
	{
		bIsFontLoaded = false;
		FreeTypeFontInfo* result = FindFont(fontarray->lfFaceName, fontarray->lfWeight, !!fontarray->lfItalic, false, &bIsFontLoaded);
		if (result)
		{
			fid = (FTC_FaceID)result->GetId();
			if (bIsFontLoaded)	//该字体已经被使用过
			{
				RemoveFont(result);	//枚举字体信息全部删除
				bIsFontFileLoaded = true;	//设置字体文件也被使用过
			}
			else
				RemoveThisFont(result, fontarray);
			CCriticalSectionLock __lock(CCriticalSectionLock::CS_FONTENG);
			FTC_Manager_RemoveFaceID(cache_man, fid);
			m_mfontList[(int)fid-1]=NULL;
		}
		fontarray++;
	}
	free(c_fontarray); //利用原始指针释放
	if (bIsFontFileLoaded)	//若字体文件被使用过,则需要清楚所有DC
	{
		CTLSDCArray::iterator iter = TLSDCArray.begin();
		while (iter!=TLSDCArray.end())
		{
			((CBitmapCache*)*iter)->~CBitmapCache();	//清除掉所有使用中的DC
			++iter;
		}
	}
	return true;
}
Пример #4
0
void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) {
  RemoveFont(m_pFormDict, csNameTag);
}
Пример #5
0
void CPDF_InterForm::RemoveFormFont(const CPDF_Font* pFont) {
  RemoveFont(m_pFormDict, pFont);
}