2010-12-10 32 views
10

Một lần nữa tôi cần sự giúp đỡ của bạn.C# - Cách sử dụng Phông chữ tùy chỉnh mà không cần cài đặt nó trong hệ thống

Tôi đang phát triển một ứng dụng nhỏ trên C# sử dụng Phông chữ tùy chỉnh. Vấn đề là, phông chữ phải được cài đặt trước đó trên hệ thống. Nếu phông chữ không có trong hệ thống, nó chỉ sử dụng Times New Roman. Có cách nào để nhúng tệp phông chữ trong ứng dụng để nó không cần phải được cài đặt trong mọi hệ thống không?

Cảm ơn bạn.

+0

bản sao có thể xảy ra: http://stackoverflow.com/questions/2288246, http://stackoverflow.com/questions/3007805/embedding-deploying-custom-font-in-net-app, http : //stackoverflow.com/questions/556147/how-to-quickly-and-easily-embed-fonts-in-winforms-app-in-c –

Trả lời

9

Nếu bạn vẫn đọc bài viết này, tôi có thể chỉ ra rằng bạn không phải sử dụng mã không an toàn để tải phông chữ từ tài nguyên. Đây là một ví dụ sử dụng Marshal.

PrivateFontCollection _fonts = new PrivateFontCollection(); 

byte[] fontData = Resources.CustomFontResourceName; 

IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length); 

Marshal.Copy(fontData, 0, fontPtr, fontData.Length); 

_fonts.AddMemoryFont(fontPtr, fontData.Length); 

Marshal.FreeCoTaskMem(fontPtr); 

Font customFont = new Font(_fonts.Families[0], 6.0F); 
+0

Bài viết mà câu trả lời được chấp nhận liên kết để giải thích rằng đây là một tùy chọn, cho cả lập trình viên VB.NET và cho những người không muốn sử dụng 'unsafe' trong C#. –

+0

@Cody Sau đó, tôi giả sử, đây là một ví dụ :). – Shibumi

+0

khi tôi sử dụng phương pháp này để tải phông chữ trên máy phát triển của mình, nó chỉ hoạt động với phông chữ .ttf chứ không phải với phông chữ .otf. Khi tôi triển khai trang web của mình lên đám mây (cửa sổ xanh), nó chỉ hoạt động với phông chữ .otf chứ không phải với phông chữ .ttf. Làm sao có thể? – fireydude

Các vấn đề liên quan