다운로드 가능한 글꼴 기능을 사용하면 API가 앱에 파일을 번들로 묶거나 앱에서 글꼴을 다운로드하도록 하는 대신 제공업체 애플리케이션에서 글꼴을 요청할 수 있습니다. 다운로드 가능한 글꼴은 AndroidX Core 라이브러리를 통해 Android API 버전 14 이상을 실행하는 기기에서 사용할 수 있습니다.
다운로드 가능한 글꼴은 다음과 같은 이점을 제공합니다.
앱 크기를 줄여 앱 설치 성공률을 높입니다.
여러 앱이 제공업체를 통해 동일한 글꼴을 공유할 수 있으므로 전반적인 시스템 상태를 개선합니다. 이렇게 하면 사용자의 모바일 데이터, 휴대전화 메모리, 디스크 공간이 절약됩니다. 이 모델에서는
글꼴이 필요할 때 네트워크를 통해 가져옵니다.
앱에서 FontsContract API를 사용하여 글꼴 제공업체에서 글꼴을 검색합니다. 각 제공업체는 지원하는 Android 버전 및 쿼리 언어에 관한 자체 제한사항을 보유하고 있습니다. Android 버전 및 쿼리 형식에 관한 자세한 내용은 제공업체의 문서를 참고하세요.
글꼴을 다운로드하려면 다음 단계를 완료하세요.
android.graphics.fonts.FontRequest 클래스의 인스턴스를 만들어 제공업체에 글꼴을 요청합니다. 요청을 만들려면 다음 매개변수를 전달하세요.
글꼴 제공업체 권한
제공업체의 ID를 확인하기 위한 글꼴 제공업체 패키지
글꼴의 문자열 쿼리. 쿼리 형식에 관한 자세한 내용은 글꼴
제공업체의 문서(예: Google Fonts)를 참고하세요.
FontsContract.requestFont() 메서드를 호출하여 글꼴 제공업체에서 글꼴을 검색합니다. 이 메서드는 글꼴이 캐시에 있는지 확인하는 검사를 시작합니다. 글꼴을 로컬에서 사용할 수 없는 경우 글꼴 제공업체를 호출하고 비동기적으로 글꼴을 검색하여 그 결과를 콜백에 전달합니다. 다음 매개변수를 전달하세요.
valrequest=FontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs)valcallback=object:FontsContract.FontRequestCallback(){overridefunonTypefaceRetrieved(typeface:Typeface){// Your code to use the font goes here....}overridefunonTypefaceRequestFailed(reason:Int){// Your code to deal with the failure goes here....}}FontsContract.requestFonts(context,request,handler,null,callback)
자바
FontRequestrequest=newFontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs);FontsContract.FontRequestCallbackcallback=newFontsContract.FontRequestCallback(){@OverridepublicvoidonTypefaceRetrieved(Typefacetypeface){// Your code to use the font goes here....}@OverridepublicvoidonTypefaceRequestFailed(intreason){// Your code to deal with the failure goes here....}};FontsContract.requestFonts(context,request,handler,null,callback);
AndroidX Core는 Android
API 버전 14 이상을 실행하는 기기에서 다운로드 가능한 글꼴 기능을 지원합니다. androidx.core.provider 패키지에는 이전 버전과 호환되는 다운로드 가능한 글꼴 기능 지원을 구현하는 FontsContractCompat 및 FontRequest 클래스가 포함되어 있습니다. AndroidX 클래스에는 프레임워크 메서드와 유사한 메서드가 포함되어 있으며 글꼴을 다운로드하는 프로세스는 이 페이지의
프로그래매틱 방식으로 다운로드 가능한 글꼴 사용에 관한 섹션에 설명된 프로세스와 유사합니다.
AndroidX를 사용하여 글꼴을 다운로드하려면 androidx.core.provider 패키지에서 FontsContractCompat 및 FontRequest 클래스를 가져옵니다. FontsContract 및 android.graphics.fonts.FontRequest 프레임워크 클래스 대신 이러한 클래스의 인스턴스를 만듭니다.
AndroidX Core 종속 항목 추가
FontsContractCompat 및 FontRequest 클래스를 사용하려면 개발 환경 내에서 앱 프로젝트의 클래스 경로 종속 항목을 수정해야 합니다.
애플리케이션 프로젝트에 AndroidX Core를 추가하려면 앱의 build.gradle 파일에 다음 종속 항목을 추가하세요.
Android 8.0 (API 수준 26) 및 AndroidX Core는 맞춤 글꼴을 XML 레이아웃에서 리소스로 선언하는 더 빠르고 편리한 방법을 제공합니다. 즉, 글꼴을 애셋으로 번들할 필요가 없습니다. 전체 테마에 맞춤 글꼴을 정의하여 굵게, 보통, 연하게 등 여러 두께 및 스타일의 사용성을 촉진할 수 있습니다.
res/font 폴더에 새 XML 파일을 만듭니다.
다음 샘플 XML 파일과 같이 <font-family> 루트 요소를 추가하고 글꼴 관련 속성을 설정합니다.
레이아웃 XML 파일에서 @font/font_file_name으로 파일을 참조합니다. getFont() 메서드를 사용하여 프로그래매틱 방식으로 파일을 검색할 수도 있습니다. 예를 들면 getFont(R.font.font_file_name)과 같습니다.
매니페스트에서 글꼴 미리 선언
레이아웃 인플레이션 및 리소스 검색은 동기 작업입니다. 기본적으로 글꼴 검색을 위한 첫 번째 시도는 글꼴 제공업체 요청을 트리거하므로 첫 번째 레이아웃 시간이 늘어납니다. 지연을 방지하려면 매니페스트에서 검색이 필요한 글꼴을 미리 선언하면 됩니다.
시스템이 제공업체에서 글꼴을 검색한 후에는 즉시 사용할 수 있습니다. 글꼴 검색에 예상보다 오래 걸리면 시스템은 가져오기 프로세스를 중단하고 기본 글꼴을 사용합니다.
매니페스트에서 글꼴을 미리 선언하려면 다음 단계를 완료하세요.
res/values/arrays.xml에서 리소스 배열을 만들고 미리 가져오려는 글꼴을 선언합니다.