특정 유니 코드 문자가 있다고 가정 해 봅시다. 嗎, 시스템에 설치된 모든 글꼴을 반복하고이 문자에 대한 글리프가있는 글꼴을 나열하려면 어떻게합니까? 내가 .NET 4.0이 테스트 한특정 문자가 포함 된 글꼴을 확인하는 방법은 무엇입니까?
답변
, 당신은 글꼴 & 서체 유형은 일하러 가야 PresentationCore에 대한 참조를 추가해야합니다. Fonts.GetFontFamilies overloads도 확인하십시오.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Markup;
using System.Windows.Media;
class Program
{
public static void Main(String[] args)
{
PrintFamiliesSupprotingChar('a');
Console.ReadLine();
PrintFamiliesSupprotingChar('â');
Console.ReadLine();
PrintFamiliesSupprotingChar('嗎');
Console.ReadLine();
}
private static void PrintFamiliesSupprotingChar(char characterToCheck)
{
int count = 0;
ICollection<FontFamily> fontFamilies = Fonts.GetFontFamilies(@"C:\Windows\Fonts\");
ushort glyphIndex;
int unicodeValue = Convert.ToUInt16(characterToCheck);
GlyphTypeface glyph;
string familyName;
foreach (FontFamily family in fontFamilies)
{
var typefaces = family.GetTypefaces();
foreach (Typeface typeface in typefaces)
{
typeface.TryGetGlyphTypeface(out glyph);
if (glyph != null && glyph.CharacterToGlyphMap.TryGetValue(unicodeValue, out glyphIndex))
{
family.FamilyNames.TryGetValue(XmlLanguage.GetLanguage("en-us"), out familyName);
Console.WriteLine(familyName + " Supports ");
count++;
break;
}
}
}
Console.WriteLine();
Console.WriteLine("Total {0} fonts support {1}", count, characterToCheck);
}
}
많은 감사합니다. 잘 작동하는 것 같습니다! 물론, 프로덕션 코드에서는 그런 글꼴 폴더를 하드 코딩하지 않을 것입니다. 하나는'char' (또는'string') 대신'int'를 가져 와야하고 그렇지 않으면'char.ConvertToUtf32'를 사용하십시오. 그렇지 않으면 BMP로 제한됩니다. 다시 한 번 감사드립니다! – Timwi
맞아요, 그것은 양질의 코드가 아니며, 더 많은 ** howto **입니다. –
GDI +에서는'new System.Drawing.InstalledFontCollection()'을 만들고'.Families' 속성을 반복하여 (즉, URI 나 폴더 위치가 필요하지 않은 것처럼) 설치된 폰트 목록을 쉽게 쿼리 할 수 있습니다.). WPF PresentationCore 관련 작업을 수행하는 비슷한 방법이 있습니까? – BrainSlugs83
- 1. WebDav를 통해 특정 문자가 포함 된 문서를 여는 방법은 무엇입니까?
- 2. 문자가 Java의 문자인지 확인하는 방법은 무엇입니까?
- 3. 비정상적인 문자가 포함 된 정규식
- 4. PHP에서 모든 문자가 영숫자인지 확인하는 방법은 무엇입니까?
- 5. 비 ASCII 문자가 포함 된 문자열 리터럴을 정의하는 방법은 무엇입니까?
- 6. 메타 문자가 포함 된 구에 PHP에서 regex를 사용하는 방법은 무엇입니까?
- 7. CSS에서 특정 글꼴을 사용하는 방법은 무엇입니까?
- 8. [검색 문자열에 문자가 포함 된 RowFilter
- 9. UITextField에 특정 문자가 포함되어 있는지 확인하는 방법
- 10. 앰퍼샌드 (&) 문자가 포함 된 파일 경로
- 11. 특정 클래스가 속한 어셈블리를 확인하는 방법은 무엇입니까?
- 12. 국제 문자가 포함 된 제목이 포함 된 이메일을 작성하려면 어떻게해야합니까?
- 13. sizeWithFont - & 문자가 포함 된 경우 이상한 동작
- 14. Ghostscript에서 PDF에 포함 된 글꼴을 사용하는 방법
- 15. 문자열에 정규식 메타 문자가 있는지 확인하는 방법은 무엇입니까? (C#)
- 16. .htaccess - 특수 문자가 포함 된 URL이 필요합니다.
- 17. 외국 문자가 포함 된 URI 인코딩
- 18. URL에 잘못된 문자가 포함 된 HttpGet을 사용하십시오.
- 19. 특수 문자가 포함 된 이름으로 이미지 표시
- 20. 제어 문자가 포함 된 Socket.IO 문제
- 21. NSASCIIStringEncoding 특수 문자가 포함 된 RTFString?
- 22. URL에 mvc 오류 "%"문자가 포함 된 경우
- 23. PHP - 제어 문자가 포함 된 문자열 인쇄
- 24. '+'및 '-'문자가 포함 된 전화 번호 확인
- 25. 잘못된 문자가 포함 된 객체의 XML 직렬화
- 26. 런타임에 글꼴을 포함 하시겠습니까?
- 27. 특정 기능이 정의 된 라이브러리를 확인하는 방법은 무엇입니까?
- 28. 텍스트 영역에 javascript/php가 포함 된 특정 문구가 포함되어 있는지 확인하는 방법은 무엇입니까?
- 29. JSON 데이터에 특수 문자가 포함 된 이유는 무엇입니까?
- 30. 특정 텍스트 문자열이 포함 된 파일을 검색하는 방법은 무엇입니까?
참조 : [지원되지 않는 문자 확인/글꼴의 글리프 (http://stackoverflow.com/questions/5025740/c-check-for-unsupported-characters-glyphs-in-a-font) – Ani
C#이 아니지만이 python 스크립트는 훌륭하게 작동합니다. http://unix.stackexchange.com/a/268286/26952 –