Android 11 이하에서 AOSP( /system/fonts
파티션) 또는 공급업체 파티션( /product/fonts
또는 /system/fonts
파티션)에서 기기 설치 글꼴 파일을 업데이트하려면 OEM의 시스템 업데이트가 필요합니다. 이 요구 사항은 이모티콘 호환성에 상당한 영향을 미칩니다. Android 12에서는 FontManager
시스템 서비스를 사용하여 시스템 업데이트 없이 설치된 글꼴 파일을 관리하고 기기에 설치된 글꼴 파일을 업데이트할 수 있습니다.
Android 12에는 세 가지 프로세스 상호 작용이 있습니다. FontManagerService
, Font Updater
및 Application
.
FontManagerService
는 시스템 서버의 중앙 관리 시스템입니다. FontManagerService
는 최신 사용자별 시스템 글꼴 설정을 저장합니다.
FontUpdater
는 signature|privileged
권한 검사에서 신뢰하는 플러그형 글꼴 업데이트 프로그램입니다. FontUpdater
는 FontManagerService
와 통신하여 현재 시스템 글꼴 설정을 가져오고, 설치하고, 제거하거나 업데이트합니다. FontUpdater
는 IPC(프로세스 간 통신) 메커니즘을 통해 새 글꼴 파일 내용을 전달할 수 있습니다. FontManagerService
는 /data/fonts
파일과 같이 세계가 읽을 수 있는 저장 위치에 내용을 저장합니다. 이 저장소는 보호됩니다. 이는 SELinux 정책에 의해 FontManagerService
로만 작성할 수 있습니다.
Application
클래스가 시작되면 시스템 글꼴 설정을 bindApplication
메서드의 인수로 전달합니다. 그런 다음 응용 프로그램 프로세스에서 사용할 글꼴 설정을 초기화합니다.
사용자 정의 글꼴 구현
일부 OEM은 브랜드를 표시하기 위해 AOSP에서 글꼴 파일을 설치하거나 교체합니다. Android 12는 이 기능을 지원하지만 기기에서 이모티콘 글꼴을 계속 업데이트하기 위한 요구 사항을 추가합니다. 이모티콘 글꼴 파일을 수정하거나 업데이트하지 않는 OEM은 이 기능을 사용할 필요가 없습니다.
Google은 GMS Core를 통해 글꼴 파일, 특히 NotoColorEmoji
파일을 업데이트하므로 /system
파티션에서 NotoColorEmoji.ttf
파일을 수정하거나 제거하지 말고 /system/etc/fonts.xml
에서 제거하지 마십시오. 글꼴 을 사용자 정의할 수 있는 다음 세 가지 방법에 유의하십시오.
-
NotoColorEmoji.ttf
파일을 OEM 브랜드 이모티콘 글꼴로 교체합니다. - 현지 시장 요구에 맞게
NotoColorEmoji.ttf
파일을 수정하십시오. - 다른 글꼴 파일을 바꾸거나 수정합니다.
AOSP에서 이모티콘 글꼴을 수정하지 않는 경우 조치를 취할 필요가 없습니다. 이모티콘 글꼴을 사용자 지정하려면 다음 섹션의 지침을 따르세요.
NotoColorEmoji.ttf를 OEM 브랜드 이모티콘 글꼴로 교체
NotoColorEmoji.ttf
파일을 OEM 브랜드 이모티콘 글꼴 파일로 바꾸려면 글꼴 대체 체인 바로 앞에 이모티콘 글꼴을 넣으십시오.
-
/system
파티션에OEMCustomEmoji.ttf
라는 자체 글꼴을 배치합니다. 다음 코드와 같이
/system/etc/fonts.xml
을 수정합니다.<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>
현지 시장 요구에 맞게 NotoColorEmoji.ttf 수정
현지 시장 요구 사항에 맞게 사용자 정의하려면 다음 단계를 따르십시오.
- 다른 이름으로 나만의
NotoColorEmoji
파일을 만드십시오. 예를 들어 이름을Modified\_NotoColorEmoji.ttf
로 지정합니다. - 원본
NotoColorEmoji.ttf
파일 앞에 놓습니다.
2단계를 수행하면 원래 NotoColorEmoji.ttf
대신 Modified\NotoColorEmoji.ttf
에서 지원하는 수정된 글리프가 표시됩니다. Google은 다음을 권장합니다.
- 이 글꼴에는 필요한 글리프만 있어야 합니다.
- 수정되지 않은 글리프를 원본
NotoColorEmoji.ttf
파일에 위임하여 향후 이모지 릴리스에서 디자인 수정 사항을 장치에 받을 수 있도록 합니다.
글리프 제거: NotoColorEmoji.ttf
파일에서 글리프를 제거하려면 1단계와 2단계를 수행하고 cmap에서 glyph ID = 0
을 지정합니다.
지역 플래그 사용: 대상 글리프가 지역 플래그인 경우 글리프 ID를 알 수 없는 국가 코드로 지정합니다. ( country code = "ZZ"
사용)
두부 글리프 만들기: 두부 글리프 ID를 사용하려는 경우 명시적으로 지정할 수 있습니다. glyphID = 0
을 지정하면 관련 앱에서 이를 "글리프를 사용할 수 없음"으로 해석합니다. 예를 들어 이 속성을 사용하면 Paint#hasGlyph
앱이 false
를 반환합니다.
다른 글꼴 파일 바꾸기 또는 수정
다른 글꼴을 바꾸거나 수정하기 위한 사용자 지정은 현지 시장 요구에 맞게 tff
파일을 수정하는 것과 유사합니다. 런타임 시 AOSP에서 업데이트되는 알 수 없는 글꼴 파일은 무시되며 업데이트되지 않습니다. Google은 기기에서 알 수 없는 글꼴을 무시합니다. 여기에는 AOSP의 원래 글꼴에서 수정된 글꼴 파일이 포함됩니다.
글꼴 업데이트는 GMS Core에서 Google에 의해 수행되지만 일반적인 글꼴 업데이트 메커니즘은 모든 OEM에게 열려 있습니다. OEM은 전제 조건 충족 , 글꼴 파일 서명 및 런타임 글꼴 업데이트 만들기 의 단계를 사용하여 추가 글꼴 업데이트 프로그램을 설치할 수 있습니다.
전제 조건 충족
글꼴 업데이트 메커니즘은 fs-verity
Linux 커널 기능을 사용합니다. 장치가 fs-verity
와 호환되는지 확인하고 장치에 인증서를 포함하십시오.
글꼴 파일 서명
글꼴 파일은 위험한 리소스이므로 신뢰할 수 있는 키로 확인해야 합니다. 업데이트할 모든 글꼴 파일을 주의 깊게 검토하고 개인 키로 서명하십시오. 서명은 fs-verity
와 호환되어야 합니다.
런타임 글꼴 업데이트
FontManger
시스템 앱은 글꼴 업데이트를 수행합니다. FontManager
앱은 최신 설치된 시스템 글꼴 상태와 글꼴 파일을 서명으로 업데이트하는 기능을 제공합니다. 앱 업데이트를 호출하려면 앱 허용 목록 및 매니페스트 에 UPDATE_FONT signature|privileged
권한을 추가하세요.
앱의 업데이터 기능에 UPDATE_FONT signature|privileged
권한을 제공하십시오.