2010-06-03 2 views
12

Windows 2003 서버에 새 글꼴을 설치할 때마다 즉시 asp.net 웹 응용 프로그램에서 사용할 수 없습니다. 응용 프로그램은 CreateFontIndirect gdi32.dll win API를 통해 글꼴을 가져온 다음이 글꼴을 사용하여 asp.net 응용 프로그램에서 동적 텍스트 이미지를 만듭니다. 어딘가에 캐쉬 된 글꼴이있는 것처럼 보입니다. 왜냐하면 기본 글꼴을 반환하기 때문입니다.설치 후 응용 프로그램에서 즉시 사용할 수없는 Windows 글꼴?

재부팅 후 글꼴 캐시가 업데이트 된 다음 올바른 글꼴을 얻지 만 분명히 새로운 글꼴을 사용하기 위해 프로덕션 서버에서 재부팅하는 것을 원하지 않습니다.

글꼴 캐시를 비울 수있는 방법이 있습니까?

+0

어떻게 글꼴을 설치합니까? –

+0

windows \ fonts 폴더에 복사하여 설치합니다. Windows는 설치 진행 막대를 표시하며 windows \ fonts 폴더에 올바르게 표시되므로 올바르게 설치되어있는 것처럼 보입니다. – Carvellis

+0

btw 그들은 일반적으로 응용 프로그램에서 작동하는 일반 TT 글꼴입니다. 단지 창에 설치 한 직후가 아닙니다. – Carvellis

답변

12

기본적으로 새 글꼴을 설치하면 현재 세션에만 변경 사항이 통보됩니다. 따라서 터미널 서비스 세션에서 서버에 로그인하는 경우 (다른 세션에서 실행되는 ASP.NET 응용 프로그램) 변경 내용을 볼 수 없습니다.

시스템을 재부팅하면 시스템에서 자동으로 글꼴 디렉토리를 검색하여 거기에있는 모든 글꼴을 현재 세션에 "등록"합니다.

"수동으로"새 글꼴을 등록하려면 AddFontResource을 호출하고 글꼴 경로를 전달해야합니다.

앱을 조금 더 쉽게 만들려면 앱이 Fonts 폴더를 검색하여 Application_Start 이벤트에있는 각 파일의 AddFontResource을 호출하도록 만들 수 있습니다. 그렇게하면 새 글꼴을 설치할 때 사이트를 재활용 (예 : web.config 파일 편집)하면 모든 파일을 다시 스캔 할 수 있습니다.

또 다른 옵션은 Fonts 폴더에 디렉터리 시계 (FileSystemWatcher 경유)를 넣고 자동으로 다시 스캔하는 것입니다.

나는 당신이 ...

+1

그래서 특정 세션에 대한 응용 프로그램 외부에서 글꼴을 다시 스캔 할 수 있습니까? – Carvellis

+0

'AddFontResource'는 * whole * 세션을 위해 시스템에 폰트를 추가하므로 ASP.NET과 동일한 세션에서 다른 프로그램을 실행하여 디렉토리를 다시 스캔하고'AddFontResource'를 호출 할 수 있습니다. 그러나 많은 이점이 있는지 여부 난 그렇게까지 확신은 못해. –

+0

고마워, 이번엔 서버를 재부팅 할게. – Carvellis

1

IIS 다시 시작을 새로운 글꼴을 설치 할 수 있습니다 얼마나 자주 따라 같아요. 그 트릭을해야합니다. 명령 줄에서 iisreset을 문지르거나 IIS 관리자를 사용하십시오.

+2

확인할 수 있습니다. 이것은 작동하지 않는다. 딘의 설명이 맞는 것처럼 보입니다. – Heinzi

+1

바코드 글꼴에서 그래픽을 만들려면 System.Drawing.Font를 사용하여 시스템을 다시 부팅하지 않고 내 바코드 응용 프로그램에서 작동했습니다. – Crob

+0

이 대답은 문제를 해결할 수 있습니다. 시도해보십시오. 해결되었습니다. –

관련 문제