Wdrażanie czcionek niestandardowych

Na Androidzie 11 i starszych wersjach aktualizacja plików czcionek zainstalowanych na urządzeniu w AOSP (w /system/fonts) lub partycji dostawcy (w tagach /product/fonts lub /system/fonts partycji) wymaga aktualizacji systemu od producenta OEM. Ten ma istotny wpływ na zgodność emotikonów. W Android 12, którego można używać z systemem FontManager usługa zarządzania zainstalowanymi plikami czcionek i aktualizowanie plików czcionek zainstalowanych na urządzeniu bez aktualizacji systemu.

Android 12 obejmuje 3 interakcje z procesami. FontManagerService, Font Updater i Application.

FontManagerService to główny system zarządzania na serwerze systemu. FontManagerService przechowuje najnowsze ustawienia czcionek systemu dla poszczególnych użytkowników.

FontUpdater to możliwy do podłączenia aktualizator czcionek cieszący się zaufaniem signature|privileged sprawdzanie uprawnień. FontUpdater komunikuje się z FontManagerService, aby pobrać, zainstalować, usunąć lub zaktualizować bieżącą czcionkę systemową ustawieniach. Interfejs FontUpdater może przekazywać nową zawartość pliku czcionek między procesami i komunikacji (IPC). FontManagerService zapisuje treści w w łatwo dostępnej na całym świecie lokalizacji przechowywania, takiej jak pliki /data/fonts. Ten a pamięć masowa jest chroniona. Może ją zapisać tylko FontManagerService, przez zasadą SELinux.

Po uruchomieniu klasa Application przekazuje systemowe ustawienia czcionki jako argumenty metody bindApplication; a następnie inicjuje ustawienia czcionki do wykorzystania w procesie aplikacji.

Dostosuj czcionki

Niektórzy producenci OEM instalują lub wymieniają pliki czcionek w AOSP, aby pokazać swoje marki. Android 12 obsługuje tę funkcję, ale wymagania dotyczące aktualizowania czcionek emotikonów na urządzeniach. OEM, którzy nie modyfikują ani nie ulepszają aktualizacji plików czcionek emotikonów nie trzeba korzystać z tej funkcji.

Google aktualizuje pliki czcionek, zwłaszcza pliki NotoColorEmoji, używając GMS. Core, więc nie modyfikuj ani nie usuwaj pliku NotoColorEmoji.ttf z /system. Nie usuwaj jej z /system/etc/fonts.xml. Zwróć uwagę na te 3 sposoby dostosowania czcionek:

  1. Zastąp plik NotoColorEmoji.ttf czcionką emotikonu marki OEM.
  2. Zmodyfikuj plik NotoColorEmoji.ttf pod kątem potrzeb rynku lokalnego.
  3. zastępować lub modyfikować inne pliki czcionek;

Jeśli nie modyfikujesz czcionek emotikonów w AOSP, nie musisz nic robić. Jeśli Jeśli chcesz dostosować czcionki emotikonów, wykonaj te czynności sekcji.

Zastąp NotoColorEmoji.ttf czcionkami emotikonów marki OEM

Aby zastąpić plik NotoColorEmoji.ttf plikiem z czcionkami emotikonów marki OEM: umieść czcionkę z emotikonami tuż przed łańcuchem zastępczym czcionki:

  1. Umieść własną czcionkę o nazwie OEMCustomEmoji.ttf w partycji /system.
  2. Zmodyfikuj /system/etc/fonts.xml w ten sposób:

    <family lang="ko">
    <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font>
    </family>
    <!-- ADD FOLLOWING LINE -->
    <family lang="und-Zsye">
       <font weight="400" style="normal">OEMCustomEmoji.ttf</font>
    </family>
    <!-- END OF MODIFICATION -->
    <family lang="und-Zsye">
       <font weight="400" style="normal">NotoColorEmoji.ttf</font>
    </family>
    <family lang="und-Zsym">
       <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font>
    </family>
    

Zmodyfikuj plik NotoColorEmoji.ttf pod kątem potrzeb rynku lokalnego

Aby dostosować ustawienia do potrzeb lokalnego rynku:

  1. Utwórz własny plik NotoColorEmoji o innej nazwie. np. nadaj mu nazwę Modified\_NotoColorEmoji.ttf.
  2. Umieść go przed oryginalnym plikiem NotoColorEmoji.ttf.

Po wykonaniu kroku 2 zmodyfikowany glif obsługiwany przez Programy: Modified\NotoColorEmoji.ttf zamiast NotoColorEmoji.ttf. Google zaleca:

  • Używaj tylko niezbędnych glifów w tej czcionce.
  • Przypisz niezmodyfikowane glify do oryginalnego pliku NotoColorEmoji.ttf, tak aby urządzenia otrzymują wszelkie poprawki projektowe wprowadzone w przyszłych wersjach emotikonów.

Usuwanie glifów: aby usunąć glify z pliku NotoColorEmoji.ttf, wykonaj kroki 1 i 2 oraz wpisz glyph ID = 0 w kalendarzu.

Użyj flagi regionalnej: jeśli docelowy glif jest flagą regionu, określ glifu jako nieznanego kodu kraju. (Użyj country code = "ZZ").

Utwórz glif tofu: jeśli chcesz, możesz wyraźnie określić identyfikator glifu tofu. aby użyć jednej z nich. Jeśli podasz wartość glyphID = 0, powiązana aplikacja zinterpretuje to jako „glif jest niedostępny”. Na przykład, jeśli używasz tego atrybutu, atrybut Aplikacja Paint#hasGlyph zwraca: false.

Zastępowanie lub modyfikowanie innych plików czcionek

Aby zastąpić lub zmodyfikować inne czcionki, dostosowanie jest podobne do na dostosowanie plików TTF do potrzeb lokalnego rynku. Nieznane pliki czcionek, które aktualizowane w AOSP w czasie działania są ignorowane i nie są aktualizowane. Google ignoruje nieznanych czcionek na urządzeniu. Dotyczy to też plików czcionek zmodyfikowanych z oryginalne czcionki w AOSP.

Choć czcionki są aktualizowane przez Google w GMS Core, ogólna aktualizacja jest otwarty dla wszystkich producentów OEM. OEM może instalować dodatkowe aktualizatory czcionek za pomocą czynności opisane w sekcjach Wymagania wstępne dotyczące Meet, Podpisywanie plików czcionek, i Aktualizacja czcionek w czasie działania.

Spełnij wymagania wstępne

Mechanizm aktualizacji czcionek korzysta z funkcji jądra systemu Linux fs-verity. Sprawdź, czy Twoje urządzenie jest zgodne z fs-verity i dołącz ten certyfikat do urządzenia.

Pliki czcionek podpisu

Pliki czcionek to ryzykowne zasoby, dlatego trzeba je zweryfikować za pomocą zaufanych kluczy. Uważnie przejrzyj wszystkie pliki czcionek, które chcesz zaktualizować, i podpisz się klucz prywatny. Podpis musi być zgodny z fs-verity.

Aktualizuj czcionkę w czasie działania

Aplikacja systemowa FontManger aktualizuje czcionki. Aplikacja FontManager zapewnia najnowszy stan zainstalowanych czcionek systemowych i możliwość aktualizacji plików czcionek podpisami. Aby wywoływać aplikacje aktualizacyjne, dodaj UPDATE_FONT signature|privileged uprawnienia do listy dozwolonych aplikacji, i do pliku manifestu.

Przyznaj aktualizatorowi aplikacji uprawnienia UPDATE_FONT signature|privileged .