2010-09-11 32 views
9

Tôi đang cố gắng hiển thị văn bản trong phông chữ tùy ý trên OpenGL-ES trên iOS (xem câu hỏi SO của tôi here). Thư viện đó dường như yêu cầu truy cập trực tiếp vào tệp TTF để sử dụng phông chữ. Sử dụng phương pháp kosher, có thể truy cập trực tiếp - theo đường dẫn - tệp phông chữ hệ thống trên iOS không? Tôi đã RTFM'd và không thể tìm thấy bất cứ điều gì.Trên iOS, tôi có thể truy cập tệp TTF của phông chữ do hệ thống cung cấp

Chặn điều đó, có ai biết nếu Apple được phê duyệt để sao chép phông chữ hệ thống vào ứng dụng của bạn (trước khi gửi).

+0

Truy cập mọi thứ bên ngoài hộp cát ứng dụng của bạn, ngoại trừ theo API chính thức: s, là cơ sở để từ chối. Vì vậy, không có vấn đề cho dù đó là thực sự có thể, tôi sẽ khuyên bạn nên chống lại nó. –

+0

Vâng, tôi đang tìm kiếm thứ gì đó trong giới hạn. Tôi đã chỉnh sửa bài đăng để làm cho bài đăng trở nên rõ ràng hơn. –

Trả lời

7

Giải pháp của tôi được lấy cảm hứng từ skia.

Mặc dù không thể truy cập hệ thống tích hợp trong các tập tin phông chữ trực tiếp, chúng tôi vẫn có một cách gián tiếp:

Tạo một CGFont với tên font muốn của bạn, tất cả nội dung của SFNT bảng CGFont này có thể được truy cập bởi CGFontCopyTableTags chỉ đơn giản gọi() và CGFontCopyTableForTag().

Dữ liệu phông chữ ttf/otf sau đó có thể được tạo bằng cách sử dụng các bảng này, lưu phông chữ mới được tạo vào đĩa, sau này bạn có thể sử dụng nó trong FTGL ES.

+0

Thú vị. Bạn có mã làm việc không? –

+3

https://gist.github.com/1892760. chưa được thử nghiệm đầy đủ với tất cả các phông chữ tích hợp, nhưng nó hoạt động tốt trong tất cả các trường hợp của tôi. – EXphinx

6

Không, bạn không thể truy cập tệp TTF được cài đặt hệ thống trên thiết bị iOS. Vì vậy, bạn sẽ phải nhúng các kiểu chữ bạn muốn sử dụng.

Tuyên bố từ chối trách nhiệm: Tôi không phải là luật sư và khả năng chấp nhận sử dụng phông chữ hệ thống do Apple cung cấp trong ứng dụng iOS là một câu hỏi pháp lý về việc diễn giải giấy phép phần mềm, vì vậy bạn có thể tìm kiếm lời khuyên chuyên nghiệp.

Bạn muốn nhúng phông chữ do Apple cung cấp trong ứng dụng của bạn. Định nghĩa về "nhúng" hơi mơ hồ, vì vậy việc thêm phông chữ vào ứng dụng iOS có thể hoặc không phù hợp với định nghĩa "nhúng" của chủ sở hữu bản quyền. Một số loại nhà xác định "nhúng" để có nghĩa là chỉ xem nội dung được xác định trước trong phông chữ đi kèm; nội dung xem và chỉnh sửa trung bình khác trong phông chữ đó. Hiển thị nội dung thay đổi trong quá trình chạy ứng dụng của bạn ở đâu đó giữa hai trường hợp này.

Theo Mac OS X Lion 10.7.2 ELUA:

F. Fonts. Theo các điều khoản và điều kiện của Giấy phép này, bạn có thể sử dụng các phông chữ đi kèm với Phần mềm của Apple để hiển thị và in nội dung khi chạy Phần mềm Apple; tuy nhiên, bạn chỉ có thể nhúng phông chữ trong nội dung nếu được phép theo các hạn chế nhúng kèm theo phông chữ được đề cập. Những hạn chế nhúng này có thể là được tìm thấy trong bảng điều khiển Font Book/Preview/Show Font Info.

Nếu sử dụng phông chữ trong ứng dụng iOS thực sự là "nhúng", bạn chỉ cần kiểm tra các phông chữ cụ thể bạn muốn sử dụng trong Phông chữ.

Trong trường hợp này, tôi sẽ tìm thấy phông chữ hoặc bộ phông chữ mà tôi đã cho phép rõ ràng để bao gồm phông chữ trong ứng dụng iOS. Tôi sẽ bắt đầu bằng cách mua sắm xung quanh các loại nhà khác nhau cho một chương trình cấp phép rõ ràng cho phép sử dụng này. Điều này có thể tốn kém, do đó, một tack sẽ là tìm kiếm các kiểu chữ nguồn mở với một giấy phép cho phép sử dụng này. Hoặc, đối với một tập hợp các ký tự rất hạn chế (ví dụ: chỉ số), tôi thậm chí còn cân nhắc vẽ kiểu chữ của riêng mình.

+0

Cảm ơn câu trả lời hay. Đó là một sự xấu hổ mặc dù ... Tôi đoán những lợi ích an ninh của sandboxing lớn hơn lợi ích của việc cho các ứng dụng truy cập không giới hạn vào tài nguyên hệ thống có thể ngăn chặn ứng dụng của bạn được nhiều K hoặc MB lớn hơn. – jheriko

0

Không. Ứng dụng của bạn không thể truy cập các tệp bên ngoài hộp cát của ứng dụng của bạn. Thời gian (tốt, trừ khi nó được jailbroken;). Nhưng bạn thực sự có thể gói các tập tin phông chữ. Bây giờ, tôi thấy không có lý do tại sao Apple sẽ từ chối ứng dụng của bạn, vì nó đang sử dụng một tệp đã có sẵn trên thiết bị và bạn chỉ cần đưa tệp cục bộ của mình vào đó. Về bản quyền, Apple đã có sự cho phép để sử dụng nó trên thiết bị của họ, do đó, sự bao gồm của bạn của nó sẽ không có vấn đề gì.

Tôi nói là vì tôi không cần khả năng này và chưa thử nghiệm nó bằng cách gửi của riêng tôi, nhưng dựa trên bản năng pháp lý và các vấn đề bản quyền phông chữ tôi đã thấy trong quá khứ, tôi mong rằng nó sẽ không là vấn đề.

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