2010-03-15 37 views
37

Tôi có một chương trình tôi đang viết. Tôi muốn sử dụng một phông chữ lạ mắt. Tôi có thể chỉ cần nhúng phông chữ vào gói của mình và sử dụng nó từ đó không.Nhúng phông chữ trong một bó mac

Mã của tôi ...

NSMutableAttributedString *recOf; 
recOf = [[NSMutableAttributedString alloc] initWithString:@"In Recognition of"]; 
length = [recOf length]; 
[recOf addAttribute:NSFontAttributeName value:[NSFont fontWithName:@"Edwardian Script ITC" size:50] range:NSMakeRange(0, length)]; 
[[NSColor blackColor] set]; 
p.x = (bounds.size.width/2)- (([recOf size].width)/2); 
p.y = (bounds.size.height/1.7); 
[recOf drawAtPoint:p]; 
[recOf release]; 
+2

Cảm ơn bạn đã đăng câu hỏi này! Tôi đã cố gắng tìm ra cách để làm điều này, và câu trả lời của Rob Keniger làm việc như một sự quyến rũ. Bạn thực sự nên đánh dấu câu trả lời của mình là câu trả lời được chấp nhận. –

Trả lời

2

Some people had success sử dụng Carbon kỳ diệu. Bạn nên thử nó.

Điều đó đang được nói về ví dụ trên, ATSFontActivateFromFileSpecification không được chấp nhận trong Leopard. Rõ ràng việc thay thế sử dụng một FSRef trực tiếp, mà thậm chí còn tốt hơn.

+3

Thay thế đó là 'ATSFontActivateFromFileReference'. Tuy nhiên, toàn bộ API đó (http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/ATS/) đã không được chấp nhận trong Snow Leopard, ủng hộ cho Core Text. Thay thế cho thay thế là 'CTFontManagerCreateFontDescriptorsFromURL': http://developer.apple.com/mac/library/documentation/Carbon/Reference/CoreText_FontManager_Ref/Reference/reference.html#//apple_ref/c/func/CTFontManagerCreateFontDescriptorsFromURL Điều đó cũng dễ dàng hơn để sử dụng, bởi vì các lớp Core Text được kết nối miễn phí với các đối tác AppKit của chúng. –

81

Có, bạn có thể. Bạn nên thêm giai đoạn xây dựng Copy Files vào mục tiêu của mình (nhấp chuột phải vào mục tiêu của bạn, sau đó chọn Thêm> Giai đoạn xây dựng mới> Tệp bản sao mới xây dựng Giai đoạn).

Đặt đích của giai đoạn xây dựng Sao chép tệp thành Tài nguyên với đường dẫn Fonts. Điều này sẽ đảm bảo phông chữ được sao chép vào thư mục có tên Fonts trong gói ứng dụng của bạn.

Thêm tệp phông chữ của bạn vào giai đoạn xây dựng mới bằng cách kéo tệp phông chữ vào giai đoạn xây dựng.

Sau đó, bạn cần phải thêm ATSApplicationFontsPath key đến file Info.plist của bạn, với tên của thư mục chứa phông chữ của bạn như giá trị của nó:

<key>ATSApplicationFontsPath</key> 
<string>Fonts</string> 

Sau đó bạn có thể sử dụng các phông chữ trong ứng dụng của bạn như thể nó là một font hệ thống tích hợp bằng cách gọi [NSFont fontWithName:@"yourFontName"].

Tất nhiên, bạn nên đảm bảo rằng bạn có quyền phân phối phông chữ trước khi thực hiện việc này.

+2

Đối với xCode 5, bạn phải chọn mục tiêu của mình, từ thanh thực đơn chọn Trình Biên tập-> Thêm Giai đoạn Xây dựng-> Thêm Sao chép Tập tin Xây dựng Giai đoạn để thêm giai đoạn xây dựng. –

+0

Bạn có thể vui lòng giúp tôi cho cùng một vấn đề, [câu hỏi của tôi] (http://stackoverflow.com/questions/25279279/unable-to-add-a-custom-font-in-mac-app-osx-10-9 -xcode5) –

+0

@Rob: Điều này hoạt động rất tốt. Cảm ơn vì điều đó. Nhưng nếu người dùng chưa cài đặt phông chữ trên máy mac của mình thì sao? Có nghĩa là chúng ta có thể kiểm tra từ ứng dụng nếu phông chữ được cài đặt trên mac hay không. Nếu không, thì chúng ta có thể cài đặt chương trình đó từ ứng dụng mac ca cao không? – Manthan

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