ฟีเจอร์แบบอักษรที่ดาวน์โหลดได้ช่วยให้ API ขอแบบอักษรจากแอปพลิเคชันของผู้ให้บริการแทน จัดกลุ่มไฟล์ลงในแอป หรือให้แอปดาวน์โหลดแบบอักษร แบบอักษรที่ดาวน์โหลดได้มีให้ใช้งานใน อุปกรณ์ที่ใช้ Android API เวอร์ชัน 14 ขึ้นไปผ่านไลบรารี AndroidX Core
แบบอักษรที่ดาวน์โหลดได้มีประโยชน์ดังต่อไปนี้
- ลดขนาดแอปลง ดังนั้นจึงเพิ่มอัตราความสำเร็จในการติดตั้งแอป
- ปรับปรุงประสิทธิภาพโดยรวมของระบบ เนื่องจากแอปหลายรายการสามารถใช้แบบอักษรเดียวกันได้ วิธีนี้ช่วยประหยัดอินเทอร์เน็ตมือถือ หน่วยความจำโทรศัพท์ และพื้นที่ในดิสก์ของผู้ใช้ ในโมเดลนี้ พารามิเตอร์ ระบบจะดึงข้อมูลแบบอักษรผ่านเครือข่ายเมื่อจำเป็น
แบบอักษรที่ดาวน์โหลดได้ทำงานอย่างไร
ผู้ให้บริการแบบอักษรคือแอปพลิเคชันที่ดึงแบบอักษรและแคชแบบอักษรดังกล่าวไว้ในเครื่องเพื่อให้แอปอื่นๆ สามารถ ขอและแชร์แบบอักษร รูปต่อไปนี้จะแสดงขั้นตอนดังกล่าว
![รูปภาพแสดงองค์ประกอบหลักในกระบวนการจับคู่อีโมจิ](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/downloadable-fonts/downloadable-fonts-process.png?authuser=8&hl=th)
ข้อมูลเบื้องต้น
คุณสามารถใช้คุณลักษณะแบบอักษรที่ดาวน์โหลดได้ด้วยวิธีต่อไปนี้ ซึ่งจะกล่าวถึงโดยละเอียด ในหัวข้อหลังจากนี้:
ใช้แบบอักษรที่ดาวน์โหลดได้กับ Android Studio และบริการ Google Play
คุณตั้งค่าแอปพลิเคชันให้ดาวน์โหลดแบบอักษรโดยใช้ Android Studio 3.0 ขึ้นไปได้ เพื่อช่วยคุณ ให้เริ่มใช้งานฟีเจอร์แบบอักษรที่ดาวน์โหลดได้ คุณสามารถใช้ผู้ให้บริการแบบอักษรจาก Google Play บริการต่างๆ
- ในตัวแก้ไขเลย์เอาต์ ให้เลือก
TextView
จากนั้นในส่วนแอตทริบิวต์ เลือก fontFamily > แบบอักษรเพิ่มเติมวันที่ หน้าต่างทรัพยากรจะปรากฏขึ้นรูปที่ 2 การใช้เครื่องมือแก้ไขการออกแบบ - ในเมนูแหล่งที่มา ให้เลือก Google Fonts
- ในช่องแบบอักษร ให้เลือกแบบอักษรใต้ "ดาวน์โหลดได้" ของคุณ
- เลือกสร้างแบบอักษรที่ดาวน์โหลดได้ แล้วคลิกตกลง
วันที่ รูปที่ 3 การเลือกแบบอักษรจากหน้าต่างทรัพยากร
Android Studio จะสร้างไฟล์ XML ที่เกี่ยวข้องซึ่งจำเป็นต้องใช้ในการแสดงผลแบบอักษรโดยอัตโนมัติ ในแอปของคุณได้อย่างถูกต้อง
![รูปภาพแสดงวิธีแสดงตัวอย่างแบบอักษร](https://developer.android.com/static/guide/topics/ui/images/look-and-feel/downloadable-fonts/preview-fonts.png?authuser=8&hl=th)
ใช้แบบอักษรที่ดาวน์โหลดได้แบบเป็นโปรแกรม
สำหรับ Android 8.0 (API ระดับ 26) AndroidX Core จะรองรับแบบอักษรที่ดาวน์โหลดได้อย่างเต็มรูปแบบ สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับการใช้ไลบรารี AndroidX Core โปรดดู ส่วนไลบรารี Fonts AndroidX Core ที่ดาวน์โหลดได้ในหน้านี้
หากต้องการใช้ฟีเจอร์แบบอักษรที่ดาวน์โหลดได้แบบเป็นโปรแกรม ให้โต้ตอบกับคลาสหลัก 2 คลาสดังนี้
android.graphics.fonts.FontRequest
: ชั้นเรียนนี้จะให้คุณสร้างคำขอแบบอักษรได้FontsContractCompat
: ชั้นเรียนนี้จะช่วยให้คุณสร้างTypeface
ออบเจ็กต์อิงตาม คำขอแบบอักษร
แอปของคุณดึงแบบอักษรจากผู้ให้บริการแบบอักษรโดยใช้ FontsContract
API ชิ้น
มีข้อจำกัดของตนเองเกี่ยวกับเวอร์ชัน Android และภาษาที่ใช้ค้นหาที่รองรับ สำหรับ
ข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชัน Android และรูปแบบการค้นหา โปรดดูข้อมูลจากผู้ให้บริการ
เอกสารประกอบ
หากต้องการดาวน์โหลดแบบอักษร ให้ทำตามขั้นตอนต่อไปนี้
- สร้างอินสแตนซ์ของคลาส
android.graphics.fonts.FontRequest
เพื่อขอ แบบอักษรจากผู้ให้บริการ หากต้องการสร้างคำขอ ให้ส่งพารามิเตอร์ต่อไปนี้- สิทธิ์ของผู้ให้บริการแบบอักษร
- แพ็กเกจผู้ให้บริการแบบอักษรเพื่อยืนยันตัวตนของผู้ให้บริการ
- การค้นหาสตริงของแบบอักษร โปรดดูแบบอักษรสำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการค้นหา เอกสารของผู้ให้บริการ เช่น Google Fonts
- รายการชุดแฮชสำหรับใบรับรองเพื่อยืนยันตัวตนของผู้ให้บริการ
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs )
Java
FontRequest request = new FontRequest("com.example.fontprovider", "com.example.fontprovider", "my font", certs);
- สร้างอินสแตนซ์ของ
FontsContract.FontRequestCallback
- ลบล้าง
onTypefaceRetrieved()
เพื่อระบุว่าคำขอแบบอักษรเสร็จสมบูรณ์แล้ว ระบุแบบอักษรที่ดึงมาเป็นพารามิเตอร์ คุณสามารถใช้วิธีนี้เพื่อตั้งค่าแบบอักษรตามต้องการ เช่น คุณสามารถตั้งค่าแบบอักษรในTextView
- ลบล้าง
onTypefaceRequestFailed()
ในการรับข้อมูลเกี่ยวกับข้อผิดพลาดในกระบวนการขอแบบอักษร หากต้องการดูข้อมูลเพิ่มเติม เกี่ยวกับรหัสข้อผิดพลาด โปรดดู ค่าคงที่ของรหัสข้อผิดพลาด - เรียกใช้เมธอด
FontsContract.requestFont()
เพื่อเรียกแบบอักษรจากแบบอักษร เมธอดจะเริ่มการตรวจสอบเพื่อพิจารณาว่าแบบอักษรนั้นมีอยู่ในแคชหรือไม่ ถ้า แบบอักษรไม่พร้อมใช้งานในเครื่อง แต่จะโทรหาผู้ให้บริการแบบอักษรและดึงข้อมูลแบบอักษร แบบไม่พร้อมกัน และส่งต่อผลลัพธ์ไปยัง Callback ส่งต่อพารามิเตอร์ต่อไปนี้- ตัวอย่างของ
Context
ชั้นเรียน - อินสแตนซ์ของคลาส
android.graphics.fonts.FontRequest
- การเรียกกลับเพื่อรับผลลัพธ์ของคำขอแบบอักษร
- เครื่องจัดการสำหรับดึงข้อมูลแบบอักษรในชุดข้อความ
- ตัวอย่างของ
โค้ดตัวอย่างต่อไปนี้แสดงภาพรวมของกระบวนการแบบอักษรที่ดาวน์โหลดได้
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs ) val callback = object : FontsContract.FontRequestCallback() { override fun onTypefaceRetrieved(typeface: Typeface) { // Your code to use the font goes here. ... } override fun onTypefaceRequestFailed(reason: Int) { // Your code to deal with the failure goes here. ... } } FontsContract.requestFonts(context, request, handler, null, callback)
Java
FontRequest request = new FontRequest("com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs); FontsContract.FontRequestCallback callback = new FontsContract.FontRequestCallback() { @Override public void onTypefaceRetrieved(Typeface typeface) { // Your code to use the font goes here. ... } @Override public void onTypefaceRequestFailed(int reason) { // Your code to deal with the failure goes here. ... } }; FontsContract.requestFonts(context, request, handler, null, callback);
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีดาวน์โหลดแบบอักษรจากผู้ให้บริการแบบอักษรได้ที่ DownloadableFonts แอปตัวอย่าง
ใช้แบบอักษรที่ดาวน์โหลดได้ด้วย AndroidX Core
AndroidX Core ให้การสนับสนุนคุณลักษณะแบบอักษรที่ดาวน์โหลดได้ในอุปกรณ์ที่ใช้ Android
API เวอร์ชัน 14 ขึ้นไป
androidx.core.provider
แพ็กเกจมีคลาส FontsContractCompat
และ FontRequest
ที่จะใช้
การสนับสนุนคุณลักษณะแบบอักษรที่ดาวน์โหลดได้ ที่เข้ากันได้แบบย้อนหลัง คลาส AndroidX มีเมธอด
คล้ายกับวิธีการของเฟรมเวิร์ก และกระบวนการดาวน์โหลดแบบอักษรนั้นก็คล้ายกับวิธีการ
ซึ่งอธิบายไว้ในส่วนในหน้านี้เกี่ยวกับ
การใช้แบบอักษรที่ดาวน์โหลดได้แบบเป็นโปรแกรม
หากต้องการดาวน์โหลดแบบอักษรโดยใช้ AndroidX ให้นำเข้า FontsContractCompat
และ
FontRequest
ชั้นเรียนจากแพ็กเกจ androidx.core.provider
สร้าง
อินสแตนซ์ของคลาสเหล่านี้แทน
FontsContract
และ
android.graphics.fonts.FontRequest
คลาสเฟรมเวิร์ก
เพิ่มทรัพยากร Dependency ของ AndroidX Core
หากต้องการใช้คลาส FontsContractCompat
และ FontRequest
คุณต้องแก้ไข
ทรัพยากร Dependency ของคลาสพาธของโปรเจ็กต์แอปของคุณภายในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ของคุณ
หากต้องการเพิ่ม AndroidX Core ในโปรเจ็กต์แอปพลิเคชัน ให้เพิ่มทรัพยากร Dependency ต่อไปนี้ใน
build.gradle
ไฟล์:
ดึงดูด
dependencies { ... implementation "androidx.core:core-ktx:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
ใช้แบบอักษรที่ดาวน์โหลดได้เป็นทรัพยากรใน XML
Android 8.0 (API ระดับ 26) และ AndroidX Core มีวิธีประกาศ แบบอักษรที่กำหนดเองเป็นทรัพยากรในเค้าโครง XML ซึ่งหมายความว่าไม่จำเป็นต้องรวมกลุ่มแบบอักษรเป็น เนื้อหา คุณสามารถกำหนดแบบอักษรที่กำหนดเองสำหรับทั้งธีม ซึ่งจะช่วยเพิ่มความสามารถในการใช้งาน น้ำหนักและรูปแบบต่างๆ เช่น ตัวหนา ปานกลาง หรือสีอ่อน หากมีให้
- สร้างไฟล์ XML ใหม่ในโฟลเดอร์
res/font
- เพิ่มองค์ประกอบรูท
<font-family>
และตั้งค่าแอตทริบิวต์ที่เกี่ยวข้องกับแบบอักษรเป็น ที่แสดงในไฟล์ XML ตัวอย่างต่อไปนี้ - อ้างอิงไฟล์เป็น
@font/font_file_name
ในไฟล์ XML ของเลย์เอาต์ นอกจากนี้คุณยัง ให้ใช้getFont()
ในการเรียกไฟล์โดยใช้โปรแกรม เช่นgetFont(R.font.font_file_name)
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" android:fontProviderAuthority="com.example.fontprovider.authority" android:fontProviderPackage="com.example.fontprovider" android:fontProviderQuery="example font" android:fontProviderCerts="@array/certs"> </font-family>
ประกาศแบบอักษรล่วงหน้าในไฟล์ Manifest
การเพิ่มจำนวนเลย์เอาต์และการดึงข้อมูลทรัพยากรเป็นงานที่ต้องทำพร้อมกัน โดยค่าเริ่มต้น ความพยายามครั้งแรก เรียกแบบอักษรจะเรียกคำขอไปยังผู้ให้บริการแบบอักษร ซึ่งจะเพิ่มการออกแบบแรก คุณสามารถประกาศแบบอักษรที่ต้องดึงในไฟล์ Manifest ล่วงหน้าเพื่อหลีกเลี่ยงความล่าช้า หลังจากที่ระบบดึงแบบอักษรจากผู้ให้บริการแล้ว จะใช้ได้ทันที แบบอักษร การดึงข้อมูลใช้เวลานานกว่าที่คาดไว้ ระบบจะล้มเลิกกระบวนการดึงข้อมูลและใช้ค่าเริ่มต้น แบบอักษร
หากต้องการประกาศแบบอักษรล่วงหน้าในไฟล์ Manifest ให้ทำตามขั้นตอนต่อไปนี้
- สร้างอาร์เรย์ทรัพยากรใน
res/values/arrays.xml
และประกาศแบบอักษรที่คุณ ต้องการดึงข้อมูลล่วงหน้า - ใช้แท็ก
meta-data
เพื่อประกาศอาร์เรย์ทรัพยากรในไฟล์ Manifest
res/values/arrays.xml <?xml version="1.0" encoding="utf-8"?> <resources> <array name="preloaded_fonts"> <item>@font/font1</item> <item>@font/font2</item> </array> </resources>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
เพิ่มใบรับรอง
หากไม่ได้ติดตั้งผู้ให้บริการแบบอักษรไว้ล่วงหน้า หรือหากใช้ไลบรารี AndroidX Core ให้ประกาศ ใบรับรองที่ผู้ให้บริการแบบอักษรลงนามด้วย ระบบจะใช้ใบรับรองเพื่อยืนยัน ของผู้ให้บริการแบบอักษร
ทําตามขั้นตอนต่อไปนี้เพื่อเพิ่มใบรับรอง
- สร้างอาร์เรย์สตริงที่มีรายละเอียดใบรับรอง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับใบรับรอง โปรดดูรายละเอียดในเอกสารประกอบของผู้ให้บริการแบบอักษร
- ตั้งค่าแอตทริบิวต์
fontProviderCerts
เป็นอาร์เรย์
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
แบบอักษรที่ดาวน์โหลดได้ใน Compose
จะเริ่มต้นใน เขียน 1.2-alpha07 คุณสามารถใช้ Fonts API ที่ดาวน์โหลดได้ในแอป Compose เพื่อดาวน์โหลด Google Fonts แบบไม่พร้อมกันและใช้ในแอปของคุณ สำหรับ โปรดดูข้อมูลเพิ่มเติม เขียนเอกสารแบบอักษรที่ดาวน์โหลดได้