2010-09-11 13 views
9

Próbuję teraz FTGLES dynamicznie wyświetlać tekst w dowolnych czcionkach w OpenGL-ES na iOS (por. Moje pytanie SO here). Ta biblioteka wydaje się wymagać bezpośredniego dostępu do pliku TTF, aby użyć czcionki. Korzystając z metod koszerowych, można uzyskać bezpośredni dostęp - po ścieżce - do plików czcionek systemowych w systemie iOS? Mam RTFMd i nie mogę znaleźć niczego.Na iOS, czy mogę uzyskać dostęp do pliku TTF dostarczanego przez system?

Pozwolenie na to, czy ktoś wie, czy ma aprobatę Apple do kopiowania czcionek systemowych do aplikacji (przed ich przesłaniem).

+0

Uzyskiwanie dostępu do elementów spoza obszaru izolowanego aplikacji, z wyjątkiem oficjalnych interfejsów API: s, jest podstawą do odrzucenia. Tak więc bez względu na to, czy jest to rzeczywiście możliwe, poleciłbym to. –

+0

Tak, szukałem czegoś w granicach. Zmieniłem post, aby był jaśniejszy. –

Odpowiedz

7

Moje rozwiązanie zostało zainspirowane skia.

Choć nie można wbudowany system w plikach czcionek bezpośrednio, wciąż mamy sposób pośredni dostęp:

Utwórz CGFont z poszukiwanego nazwę czcionki, wszystkie zawartość SFNT tabeli tej CGFont można uzyskać po prostu zawijających CGFontCopyTableTags() i CGFontCopyTableForTag().

Dane czcionki ttf/otf można następnie skonstruować za pomocą tych tabel, zapisz nowo utworzoną czcionkę na dysku, możesz użyć jej później w FTGL ES.

+0

Interesujące. Czy masz działający kod? –

+3

https://gist.github.com/1892760. nie zostały w pełni przetestowane we wszystkich wbudowanych czcionkach, ale działa dobrze we wszystkich moich przypadkach. – EXphinx

6

Nie, nie można uzyskać dostępu do zainstalowanych systemowych plików TTF na urządzeniach z systemem iOS. Musisz więc osadzić kroje pisma, których chcesz użyć.

Nota prawna: Nie jestem prawnikiem, a możliwość korzystania z czcionek systemowych dostarczanych przez Apple w aplikacji na iOS jest kwestią prawną związaną z interpretacją licencji na oprogramowanie, dlatego warto zasięgnąć profesjonalnej porady.

Chcesz osadzić czcionkę dostarczoną przez Apple w swojej aplikacji. Definicja "osadzania" jest nieco mglista, więc dodanie czcionki do aplikacji na iOS może lub nie mieści się w definicji "osadzania" posiadacza praw autorskich. Niektóre domy typu definiują "osadzanie" w celu oznaczania jedynie oglądania z góry określonej zawartości w dołączonej czcionce; inne oznacza przeglądanie i edytowanie treści w tej czcionce. Wyświetlanie treści, które zmieniają się podczas działania aplikacji, znajduje się gdzieś pomiędzy tymi dwoma przypadkami.

Zgodnie z Mac OS X Lion 10.7.2 Elua:

F. Fonts. Z zastrzeżeniem warunków i postanowień niniejszej Licencji, użytkownik może korzystać z czcionek dołączonych do Oprogramowania Apple w celu wyświetlania i drukowania zawartości podczas działania Oprogramowania Apple; jednak można osadzać tylko czcionki w treści, jeśli jest to dozwolone przez ograniczenia osadzania towarzyszące danej czcionce. Te ograniczenia osadzania mogą być znalezione w panelu Księga czcionek/Podgląd/Pokaż informacje o czcionce.

Jeśli używasz czcionek w aplikacji na iOS, to rzeczywiście "osadzanie", musisz po prostu sprawdzić poszczególne czcionki, które chcesz użyć w Książce Czcionek.

W tej sytuacji znajdę czcionkę lub zestaw czcionek, w których mam wyraźne pozwolenie na dołączenie czcionek do aplikacji na iOS. Zacznę od zakupów w domach różnych typów w celu uzyskania schematu licencyjnego, który wyraźnie zezwala na takie użycie. To może stać się drogie, więc innym sposobem byłoby wyszukanie krojów open source z licencją, która pozwoliłaby na takie użycie. Lub, dla bardzo ograniczonego zestawu znaków (na przykład tylko liczb), rozważałbym nawet rysowanie własnego kroju pisma.

+0

Dzięki za dobrą odpowiedź. Szkoda jednak ... Wydaje mi się, że korzyści bezpieczeństwa związane z piaskownicą przeważają nad korzyściami wynikającymi z nieograniczonego dostępu aplikacji do zasobów systemowych, które mogą sprawić, że Twoja aplikacja będzie większa o kilka K lub MB. – jheriko

0

Nie. Twoja aplikacja nie może uzyskać dostępu do plików poza piaskownicą Twojej aplikacji. Okres (no chyba, że ​​jest jailbreak;). Ale naprawdę możesz spakować plik czcionki. Nie widzę powodu, dla którego firma Apple odrzuciłaby Twoją aplikację, ponieważ używa pliku już dostępnego na urządzeniu, a do tego właśnie dodajesz plik lokalny. Pod względem praw autorskich Apple ma już takie pozwolenie na używanie go na swoim urządzeniu, więc włączenie go nie powinno stanowić problemu.

Powiedziałem, że powinienem, ponieważ nie potrzebowałem tej możliwości i nie przetestowałem jej z własnym zgłoszeniem, ale na podstawie prawnego instynktu i praw autorskich do fontów, które widziałem w przeszłości, spodziewałem się, że to nie byłby problem.

Powiązane problemy