맞춤 글꼴 추가

이제 런타임 리소스 오버레이(RRO)를 사용하여 글꼴을 변경할 수 있습니다. 맞춤 글꼴을 추가하여 글꼴 패키지를 만들면 테마에서 글꼴을 사용하고 RRO를 사용하여 맞춤설정을 적용할 수 있습니다.

다음 작업을 완료합니다.

샘플 파일 구조 및 샘플 파일은 custom-fonts.zip에 제공됩니다. 이 파일을 로컬에 다운로드한 후 압축을 해제하여 사용하세요.

글꼴 패키지 만들기

글꼴 패키지를 만들려면 다음 단계를 따르세요.

  1. 글꼴 ttf 파일을 모두 vendor 파티션의 글꼴 패키지에 추가합니다. 예를 들면 다음과 같습니다.

    vendor/[oem]/fonts/[oem]-sans/

  2. 글꼴 패키지용 Android.mk 파일을 만듭니다. 예를 들면 다음과 같습니다.

    vendor/[oem]/fonts/[oem]-[fontname]/Android.mk

  3. 모듈을 product 파티션의 etc 폴더에 설치합니다. 이렇게 하려면 모듈에 다음 플래그가 있는지 확인합니다.
    LOCAL_MODULE_CLASS := ETC
    LOCAL_PRODUCT_MODULE := true
    LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
    

    위에 제공된 샘플 코드는 글꼴 패키지 모듈의 완전한 정의를 보여줍니다.

  4. fonts.mk라는 글꼴 패키지용 파일을 만든 후 글꼴 ttf 파일을 PRODUCT_PACKAGES에 추가합니다. 예를 들면 다음과 같습니다.

    vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk

    예를 들면 다음과 같습니다.

    PRODUCT_PACKAGES := \
    [font name].ttf \
    

기기 오버레이 패키지 만들기

  1. 빌드에 추가할 fonts_customization.xml이라는 모듈을 만듭니다. 이 모듈은 글꼴 모음이 포함된 fonts_customization.xml 파일을 가리키고 모든 글꼴 패키지의 make 파일을 호출합니다. 예를 들면 다음과 같습니다.

    vendor/[oem]/[device]_overlay/fonts/Android.mk

  2. 다음과 같이 글꼴 모음을 만듭니다.

    vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml

    파일의 루트 수준은 fonts-modification 태그여야 합니다. 이 요소 아래에 각 글꼴 패키지의 글꼴 모음을 추가합니다. 또한 모든 글꼴 모음에 customizationType="new-named-family"를 추가하고 각각에 name 속성이 있는지 확인합니다. 이 이름은 나중에 글꼴 모음에 액세스하는 데 사용됩니다. 이 파일을 앞서 Android.mk에 정의한 fonts_customizations.xml 모듈에 추가해야 합니다.

    위에 제공된 샘플에는 유효한 fonts_customization.xml 파일이 포함되어 있습니다.

  3. fonts.mk를 만듭니다. 예를 들면 다음과 같습니다.

    vendor/[oem]/[device]_overlay/fonts/fonts.mk

  4. PRODUCT_PACKAGES 플래그 아래에 fonts_customization.xml을 추가합니다.
  5. 이전에 생성한 각 글꼴 패키지를 호출합니다.

    $(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)

  6. PRODUCT_PACKAGES 아래의 빌드에 글꼴 모듈을 추가한 후 다시 빌드합니다. 글꼴이 시스템에 설치됩니다.
  7. ttf 글꼴 파일이 기기의 /product/fonts 폴더에 있는지 확인합니다.
  8. fonts_customization.xml이 기기의 /product/etc/에 있는지 확인합니다.

새 시스템 글꼴 모음 사용

새 시스템 글꼴 모음 사용:

<style name="customstyle">
    <item name="android:fontFamily">customfontfamily</item>
</style>