W pisanej obecnie aplikacji zaistniała potrzeba sprawdzenia istnienia
(specyficznej) czcionki przy każdym uruchomieniu. Oczywiście można
to robić iterując po liście czcionek w systemie, jednak takie
rozwiązanie jest bardzo czasochłonne, gdy w systemie istnieje sporo
(>500) zainstalowanych czcionek. Zastanawiam się więc, czy istnieje
jakaś sprytniejsza metoda sprawdzająca niż poniższa:
private bool FontExists(string name)
{
for (int i = 0; i <= System.Drawing.FontFamily.Families.Length - 1;
i++)
{
if (System.Drawing.FontFamily.Families[i].Name == name)
{
return true;
}
}
return false;
}
Z góry dziękuję za wszelkie sugestie bądź rozwiązania.
Pozdrawiam,
Maciej Litwiniuk
wykorzystałbym cechę systemu, który dla nazwy czcionki sam dobiera jej
odpowiednik, jesli dana czcionka nie istniejesze:
bool FontExists( string FontName )
{
using ( Font f = new Font( FontName, 12 ) )
return f.Name == FontName;
}
MessageBox.Show( FontExists( "Courier New" ).ToString() );
MessageBox.Show( FontExists( "qwe" ).ToString() );
MessageBox.Show( FontExists( "Tahoma" ).ToString() );
daje mi:
True
False
True
Wiktor Zychla