2009-03-12 9 views
2

Wir verwenden eine PDF Generator Bibliothek von Drittanbietern, die erfordert, dass Sie den TrueType- oder Type1-Dateinamen angeben, wenn Sie eine andere Schriftart als die 14 verwenden, die Teil des Standard-PDF-Standards sind.Wie ermittelt man den O/S-Dateinamen einer installierten Schriftart?

Also wenn ich Bitstream Arrus Bold verwenden möchte, muss ich auf arrusb.ttf verweisen.

Kurz vor dem Aufzählen aller Dateien im Schriftartenordner und dem Erstellen einer wegwerfbaren PrivateFontCollection zum Extrahieren der Beziehungen, gibt es eine Möglichkeit, den zugrundeliegenden Schriftartnamen aus den Schriftsatzinformationen zu erhalten. D. H. Courier Neu, Fett, Kursiv ableiten CourBI.ttf?

Ich habe bereits die InstallierteFontCollection angeschaut und es gibt nichts.

Antwort

5

Wenn Sie nicht in der Registrierung Stochern nichts dagegen, einen Blick auf

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts 

Es hat sich Paare wie

Name = "Arial (TrueType)" 
Data = "arial.ttf" 

du die notwendigen Abfragen wie folgt tun:

static RegistryKey fontsKey = 
    Registry.LocalMachine.OpenSubKey(
     @"Software\Microsoft\Windows NT\CurrentVersion\Fonts"); 

static public string GetFontFile(string fontName) 
{ 
    return fontsKey.GetValue(fontName, string.Empty) as string; 
} 

Ein Anruf an GetFontFile("Arial (TrueType)") liefert "arial.ttf"

Sie können natürlich den Code ändern, um den (TrueType) Teil an die fontName anzufügen, oder um alles durchzugehen, das von fontsKey.GetValueNames() zurückgegeben wird, um die beste Übereinstimmung zu finden.

+0

Danke, ich werde das überprüfen. – Bill