문제

드롭 다운 선택 상자에 표시 할 수 있도록 사용자가 사용할 수있는 모든 시스템 글꼴을 찾는 가장 좋은 방법은 무엇입니까?

또한 유니 코드와 비공개 글꼴을 구별하고 싶습니다.

나는 완전히 유니 코드가 활성화 된 Delphi 2009를 사용하고 있으며 Delphi 솔루션을 원합니다.

도움이 되었습니까?

해결책

그만큼 Screen.Fonts 속성은 EnumFontFamiliesEx API 기능. 봐 형태 그 기능을 호출하는 예.

호출하는 콜백 함수는 a를 받게됩니다 TNewTextMetricEx 기록, 그리고 그 기록의 회원 중 하나는 TFontSignature. 그만큼 fsUsb 필드는 글꼴이 지원한다고 주장하는 유니 코드 서브 랑을 나타냅니다.

시스템에는 실제로 "유니 코드 글꼴"이 없습니다. 단어가있는 글꼴조차도 유니 코드 그들의 이름에는 글리프가 없습니다 모두 유니 코드 문자. 비트 맵, 프린터 및 트루 타입 글꼴을 구별 할 수 있지만, 그 외에도 최선을 다하면 고려중인 글꼴이 원하는 문자를 지원하는지 여부를 파악하는 것입니다. 글꼴이 "유니 코드 글꼴"이라고 생각하는 것이 아니라면 필요한 모든 문자를 지원하면 어떤 차이가 있습니까? 이 정보를 얻으려면 GetFontUnicodeRanges.

어떤 글꼴이 어떤 문자를 포함하는지에 따라 다른 글꼴이있는 텍스트를 표시하기위한 Microsoft 기술 해제하십시오, 특히 글꼴 폴백. 나는 uniscribe에 대한 델파이 지원을 모른다. 한 번은 수입 장치 세트를 작성하기 시작했지만 관심사는 변덕스럽고 완료하기 전에 다른 것으로 옮겼습니다. 마이클 카플란의 블로그 때때로 unissribe에 대해 이야기하므로 다른 곳입니다.

다른 팁

질문의 절반에 답할 수 있습니다. 현재 환경이 글로벌 화면 객체에서 문자열 목록으로 액세스 할 수있는 글꼴 목록을 얻을 수 있습니다.

Listbox1.Items.AddStrings(Screen.Fonts);

Forms.pas 소스를 볼 수 있습니다. Windows 글꼴을 열거하여 Codegear가 화면을 채우는 방법을 확인할 수 있습니다. 반환 된 로그 폰트 구조에는 숯불 멤버가 있지만 간단한 '유니 코드'결정을 제공하지는 않습니다.

내가 아는 한 글꼴이 '유니 코드'인 경우 Windows가 명시 적으로 말할 수 없습니다. 또한 '비 유니 코드'글꼴 창에 유니 코드 텍스트를 표시하려고하면 다른 글꼴을 대체 할 수 있으므로 글꼴이 유니 코드를 표시할지 여부를 말하기가 어렵습니다. 예를 들어, 나는 유니 코드 글리프가 포함 된 고대 Arial Black Font 파일이 있지만 D2009 메모에 일본어 텍스트를 표시하는 데 사용하면 일본어는 Arial과 Arial Black에 올바르게 나타납니다. 다른 예에서는 일반적인 빈 사각형이 나타날 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top