Bagaimana cara mendapatkan nama file font?

Saya telah menulis kode ini:

List<string> fontNames = new List<string>();
foreach (FontFamily font in FontFamily.Families)
{
    fontNames.Add(font.Name);
}

untuk mendapatkan nama font, tetapi katakanlah jika Anda ingin menyalin font ke folder lain, bagaimana cara mendapatkan nama file font untuk melakukan operasi penyalinan?

Terima kasih.


person Kourosh    schedule 13.09.2011    source sumber
comment
Apakah Anda mencoba menggunakan properti BaseURI? msdn.microsoft.com/en-us/ perpustakaan/   -  person Alex Turpin    schedule 14.09.2011
comment
Saya menggunakan .net 2. tidak didukung...   -  person Kourosh    schedule 14.09.2011
comment
@ Xeon06 sepertinya ada beberapa fungsi WPF. Karena konservatif, saya berasumsi dia merujuk pada WinForms saja.   -  person Uwe Keim    schedule 14.09.2011
comment
Kemudian tingkatkan versi .NET Anda.   -  person Alex Turpin    schedule 14.09.2011
comment
Saya membuat perpustakaan kelas untuk digunakan di aplikasi lain.   -  person Kourosh    schedule 14.09.2011
comment
@ Xeon06 saya punya keterbatasan, tidak bisa update :(   -  person Kourosh    schedule 14.09.2011
comment
Dalam hal ini saya pikir Anda lebih baik mencari tahu direktori font dan secara manual mencari beberapa kemungkinan nama.   -  person Alex Turpin    schedule 14.09.2011
comment
@ Xeon06 Bagi saya saran Anda sepertinya cukup arogan. Mengupgrade seluruh lingkungan ke lapisan presentasi lain akan memakan banyak waktu, bergantung pada ukuran proyek.   -  person Uwe Keim    schedule 14.09.2011
comment
Ada pertanyaan serupa dan beberapa jawaban di CP. Mungkin ini membantu.   -  person Uwe Keim    schedule 14.09.2011
comment
@Uwe Untuk masing-masing pendapatnya sendiri, saya kira. Saya membenci orang yang dapat meningkatkan tetapi tidak. Orang-orang ini menciptakan masalah bagi semua orang dalam jangka panjang. Tentu saja OP dalam hal ini tidak punya pilihan, tetapi jika itu adalah proyek yang relatif baru, saran saya akan tetap berlaku.   -  person Alex Turpin    schedule 14.09.2011
comment
Batasan yang saya sebutkan adalah, aplikasi pihak ketiga yang akan saya impor dll tidak mendukung .net 3 ke atas. hanya .net 2   -  person Kourosh    schedule 14.09.2011


Jawaban (2)


Jika Anda dapat mengakses registri, sehingga Anda bisa mendapatkan nama file dari Kunci: 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts', pada dasarnya setiap file font ditempatkan di C:\Windows\Fonts , kecuali disebutkan di tempat lain.

person Catalyst    schedule 13.09.2011

Ada solusi C++ di CP untuk mendapatkan nama file dari pegangan font HFONT GDI+.

Pertama-tama Anda dapat menggunakan Font.ToHfont() metode untuk mendapatkan pegangan font dan kemudian gunakan kode dalam artikel CP yang disebutkan. Tentu saja ini memerlukan penulisan ulang kode C++ ke C# dengan beberapa PINvoke.

person Uwe Keim    schedule 13.09.2011