2012-05-14 44 views
8

tôi cố gắng sử dụng OTF phông chữ được cài đặt trên hệ thống của tôi nhưng tôi đã thất bại:Tiếp cận OTF phông chữ

FontFamily family = new FontFamily(name_for_my_font); 

Tôi đã cố gắng để liệt kê tất cả các phông chữ của tôi trong hệ thống và font chữ cần thiết thực sự tôi chưa từng thấy:

foreach (FontFamily font in System.Drawing.FontFamily.Families) 
{ 
Console.WriteLine(font); 
} 

Nhưng tôi có thể thấy phông chữ của mình trong Phông chữ thư mục. Tiện ích mở rộng này có số điện thoại OTF. Có lẽ đó là vấn đề? Tôi chỉ có thể thấy các phông chữ TTF. Nhưng tại sao? Làm thế nào tôi có thể truy cập phông chữ OTF từ chương trình của tôi?

CẬP NHẬT: Rất tiếc, sự cố xảy ra với quyền truy cập OTF nhưng không phải TTF! Tôi đã thực hiện điều chỉnh trong câu trả lời của tôi

+1

Đó là cách khác xung quanh, System.Drawing có thể xử lý chỉ phông chữ TrueType , không phải phông chữ OpenType. –

+0

wow! Tôi không có ý tưởng về điều đó. Vì vậy, làm thế nào tôi có thể truy cập phông chữ OTF của tôi? –

+0

Có một giải pháp dễ dàng và khó khăn cho điều đó. Cách dễ nhất là ngừng sử dụng phông OpenType vì chúng sẽ không bao giờ hoạt động trong ứng dụng Winforms. Điều khó khăn nhất là vứt bỏ mọi thứ bạn có và chuyển sang WPF. –

Trả lời

8

Vấn đề là OpenType đến trong một số hương vị, một dựa trên TrueType phác thảo và một dựa trên PostScript loại 1 phác thảo. API đồ họa Windows GDI + không hỗ trợ các phác thảo PostScript loại 1. Đây là loại mỉa mai khi định dạng phông chữ OpenType được tạo ra bởi Microsoft là kết quả của việc không thể cấp phép một số công nghệ phông chữ của Apple. Vì vậy, nếu một ứng dụng Windows dựa trên GDI + nó sẽ không thể làm cho phông OpenType có PostScript loại 1 phác thảo hoặc phông chữ PostScript loại 1 cho rằng vấn đề. Rất tiếc, System.Drawing được triển khai bằng GDI +. Lựa chọn duy nhất của bạn là gắn vào các phông chữ bằng cách sử dụng các phác thảo TrueType.

(Hoặc, nếu bạn đang thực sự desparate, bạn có thể P/Invoke để "cổ điển" GDI và đưa ra các phông chữ vào một bitmap.)

0

Cố gắng sử dụng System.Drawing.Text.InstalledFontCollection http://msdn.microsoft.com/en-us/library/system.drawing.text.installedfontcollection.aspx

+2

1) Làm cách nào có thể giúp tôi truy cập phông chữ OTF của mình? 2) Tôi không thể nhìn thấy phông chữ của tôi bằng cách sử dụng cách tiếp cận của bạn quá. –

+1

Đây vẫn là câu trả lời hay về cách xem các phông chữ đã cài đặt. Tôi có lẽ sẽ phải Pinvoke vì vậy tôi đánh giá cao các bước lên trên có thể danh sách các phông chữ. – Carter

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