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:
- Zastąp plik
NotoColorEmoji.ttf
czcionką emotikonu marki OEM. - Zmodyfikuj plik
NotoColorEmoji.ttf
pod kątem potrzeb rynku lokalnego. - 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:
- Umieść własną czcionkę o nazwie
OEMCustomEmoji.ttf
w partycji/system
. 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:
- Utwórz własny plik
NotoColorEmoji
o innej nazwie. np. nadaj mu nazwęModified\_NotoColorEmoji.ttf
. - 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
.