Belirli bir Unicode karakteri verildiğinde, 嗎 diyelim, sistemde yüklü olan tüm fontlar üzerinde nasıl yinelemeli ve bu karakter için bir glif içerenleri listeleyelim?Hangi yazı tiplerinin belirli bir karakter içerdiğini nasıl belirlenir?
cevap
Bunu .NET 4.0 üzerinde test ettim, çalışma için & yazı tipi türlerini almak için PresentationCore'a başvuru eklemeniz gerekir. Ayrıca Fonts.GetFontFamilies overloads'u da kontrol edin.
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);
}
}
Çok teşekkürler, iyi çalışıyor gibi görünüyor! Tabii ki, üretim kodunda biri, font klasörünü bunun gibi kodlamayacaktı. Muhtemelen bir 'char' (veya 'string' yerine' int' yerine '' '' '' '' '' '' char.ConvertToUtf32'' yerine '' yerine bir '' ''' almalısınız, aksi halde BMP’ye sınırlandırmalısınız. Tekrar teşekkürler! – Timwi
Doğru, üretim kalitesi kodu değil, daha fazlası ** howto **. –
GDI + 'da yeni bir System.Drawing.InstalledFontCollection() 'oluşturarak ve' .Families' özelliği üzerinden döngü oluşturarak yüklü font ailelerinin listesini kolayca sorgulayabilirsiniz (örn. Hiçbir URI veya klasör konumu gerekli değil, yalnızca Windows'ta sorgulanır)). WPF PresentationCore şeyler ile bunu yapmak için benzer bir yolu var mı? – BrainSlugs83
- 1. MongoDB Hangi poligonun belirli bir Nokta içerdiğini nasıl bulabilirsiniz?
- 2. Dahili WPF Yazı Tiplerinin Listesi
- 3. Nasıl Yapılır: Hangi karakter aralıklarının bir yazı tarafından desteklendiğini belirleme
- 4. Yazı tiplerinin yeniden boyutlandırılmasını nasıl engelleyebilirim?
- 5. Yüklü tüm yazı tiplerinin listesini nasıl alırsınız?
- 6. Şimdi hangi SSAS Cube'un işleniyor nasıl belirlenir?
- 7. Belirli bir Karakter
- 8. Android'de MIDI Synthesizer Sesinin Geliştirilmesi/Ses Yazı Tiplerinin Yüklenmesi
- 9. Belirli bir Tamsayı'nın belirli bir Enum içinde nasıl belirlenir?
- 10. Formdaki hangi denetimin odaklandığı nasıl belirlenir?
- 11. Hangi textfield'ın etkin olduğu belirlenir nasıl olur
- 12. Direct3D'nin hangi sürümü yüklü olduğu nasıl belirlenir?
- 13. Yapay nöronun hangi değerde ateşleneceği nasıl belirlenir?
- 14. Yüklü bir yazı tipinin O/S dosya adı nasıl belirlenir?
- 15. WPF'de TextBox'ta hangi karakter silinir?
- 16. Bir şeyin belirli bir kümenin üyesi olup olmadığı nasıl belirlenir?
- 17. , belirli bir bölge için alfanümerik olarak tanımlanan hangi karakter öğrenmek için nasıl
- 18. ServiceController'den Windows.Diagnostics.Process nasıl belirlenir
- 19. Android'de hangi yazı tipleri var?
- 20. C# kullanarak dize belirli bir dizine bir karakter nasıl eklenir?
- 21. HTTP İçerik Türü yanıt başlığında karakter kümesi nasıl belirlenir?
- 22. Belirli bir JDBC bağlantısı için veritabanı türü nasıl belirlenir?
- 23. R strsplit: Bölünmüş belirli bir karakter
- 24. MySQL dizesinde belirli bir karakter dizisi değiştirme
- 25. Tesseract eğitiminde varolan yazı tipine karakter ekleme
- 26. Django - bir model için veritabanı nasıl belirlenir?
- 27. C: printf'de ptrdiff_t için hangi karakter kullanılmalıdır?
- 28. Hangi karakter kodlaması c3 82 c2 bf?
- 29. Java'ya mantıksal bir yazı tipini (örneğin SansSerif) sistemimdeki belirli bir yazı tipiyle eşleştirmesini nasıl söyleyebilirim?
- 30. Belirli bir sıraya göre karakter vektörü nasıl sıralanır?
bakınız: [desteklenmeyen karakterler için kontrol/bir yazı tipi kabartmalar] (http://stackoverflow.com/questions/5025740/c-check-for-unsupported-characters-glyphs-in-a-font) – Ani
Not C#, ancak bu python betiği harika çalışıyor: http://unix.stackexchange.com/a/268286/26952 –