ใช้แบบอักษรที่ดาวน์โหลดได้

ลองใช้วิธีการเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีใช้ข้อความในการเขียน

ฟีเจอร์แบบอักษรที่ดาวน์โหลดได้ช่วยให้ API ขอแบบอักษรจากแอปพลิเคชันของผู้ให้บริการแทน จัดกลุ่มไฟล์ลงในแอป หรือให้แอปดาวน์โหลดแบบอักษร แบบอักษรที่ดาวน์โหลดได้มีให้ใช้งานใน อุปกรณ์ที่ใช้ Android API เวอร์ชัน 14 ขึ้นไปผ่านไลบรารี AndroidX Core

แบบอักษรที่ดาวน์โหลดได้มีประโยชน์ดังต่อไปนี้

  • ลดขนาดแอปลง ดังนั้นจึงเพิ่มอัตราความสำเร็จในการติดตั้งแอป
  • ปรับปรุงประสิทธิภาพโดยรวมของระบบ เนื่องจากแอปหลายรายการสามารถใช้แบบอักษรเดียวกันได้ วิธีนี้ช่วยประหยัดอินเทอร์เน็ตมือถือ หน่วยความจำโทรศัพท์ และพื้นที่ในดิสก์ของผู้ใช้ ในโมเดลนี้ พารามิเตอร์ ระบบจะดึงข้อมูลแบบอักษรผ่านเครือข่ายเมื่อจำเป็น
สำหรับประสบการณ์ตรงเกี่ยวกับแบบอักษรที่ดาวน์โหลดได้ โปรดดูที่ ดาวน์โหลดแบบอักษรได้ แอปตัวอย่าง

แบบอักษรที่ดาวน์โหลดได้ทำงานอย่างไร

ผู้ให้บริการแบบอักษรคือแอปพลิเคชันที่ดึงแบบอักษรและแคชแบบอักษรดังกล่าวไว้ในเครื่องเพื่อให้แอปอื่นๆ สามารถ ขอและแชร์แบบอักษร รูปต่อไปนี้จะแสดงขั้นตอนดังกล่าว

วันที่ รูปภาพแสดงองค์ประกอบหลักในกระบวนการจับคู่อีโมจิ
รูปที่ 1 กระบวนการแบบอักษรที่ดาวน์โหลดได้

ข้อมูลเบื้องต้น

คุณสามารถใช้คุณลักษณะแบบอักษรที่ดาวน์โหลดได้ด้วยวิธีต่อไปนี้ ซึ่งจะกล่าวถึงโดยละเอียด ในหัวข้อหลังจากนี้:

ใช้แบบอักษรที่ดาวน์โหลดได้กับ Android Studio และบริการ Google Play

คุณตั้งค่าแอปพลิเคชันให้ดาวน์โหลดแบบอักษรโดยใช้ Android Studio 3.0 ขึ้นไปได้ เพื่อช่วยคุณ ให้เริ่มใช้งานฟีเจอร์แบบอักษรที่ดาวน์โหลดได้ คุณสามารถใช้ผู้ให้บริการแบบอักษรจาก Google Play บริการต่างๆ

  1. ในตัวแก้ไขเลย์เอาต์ ให้เลือก TextView จากนั้นในส่วนแอตทริบิวต์ เลือก fontFamily > แบบอักษรเพิ่มเติม
    วันที่ รูปภาพแสดงเครื่องมือแก้ไขเลย์เอาต์ของ Android Studio
    รูปที่ 2 การใช้เครื่องมือแก้ไขการออกแบบ
    หน้าต่างทรัพยากรจะปรากฏขึ้น
  2. ในเมนูแหล่งที่มา ให้เลือก Google Fonts
  3. ในช่องแบบอักษร ให้เลือกแบบอักษรใต้ "ดาวน์โหลดได้" ของคุณ
  4. เลือกสร้างแบบอักษรที่ดาวน์โหลดได้ แล้วคลิกตกลง
    วันที่ รูปภาพแสดงวิธีเลือกแบบอักษรจากหน้าต่างทรัพยากร
    รูปที่ 3 การเลือกแบบอักษรจากหน้าต่างทรัพยากร
  5. Android Studio จะสร้างไฟล์ XML ที่เกี่ยวข้องซึ่งจำเป็นต้องใช้ในการแสดงผลแบบอักษรโดยอัตโนมัติ ในแอปของคุณได้อย่างถูกต้อง

    วันที่ รูปภาพแสดงวิธีแสดงตัวอย่างแบบอักษร
    รูปที่ 4 กำลังแสดงตัวอย่างไฟล์แบบอักษร

ใช้แบบอักษรที่ดาวน์โหลดได้แบบเป็นโปรแกรม

สำหรับ Android 8.0 (API ระดับ 26) AndroidX Core จะรองรับแบบอักษรที่ดาวน์โหลดได้อย่างเต็มรูปแบบ สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับการใช้ไลบรารี AndroidX Core โปรดดู ส่วนไลบรารี Fonts AndroidX Core ที่ดาวน์โหลดได้ในหน้านี้

หากต้องการใช้ฟีเจอร์แบบอักษรที่ดาวน์โหลดได้แบบเป็นโปรแกรม ให้โต้ตอบกับคลาสหลัก 2 คลาสดังนี้

  • android.graphics.fonts.FontRequest: ชั้นเรียนนี้จะให้คุณสร้างคำขอแบบอักษรได้
  • FontsContractCompat: ชั้นเรียนนี้จะช่วยให้คุณสร้าง Typeface ออบเจ็กต์อิงตาม คำขอแบบอักษร

แอปของคุณดึงแบบอักษรจากผู้ให้บริการแบบอักษรโดยใช้ FontsContract API ชิ้น มีข้อจำกัดของตนเองเกี่ยวกับเวอร์ชัน Android และภาษาที่ใช้ค้นหาที่รองรับ สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชัน Android และรูปแบบการค้นหา โปรดดูข้อมูลจากผู้ให้บริการ เอกสารประกอบ

หากต้องการดาวน์โหลดแบบอักษร ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอินสแตนซ์ของคลาส 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);
    
  2. สร้างอินสแตนซ์ของ FontsContract.FontRequestCallback
  3. ลบล้าง onTypefaceRetrieved() เพื่อระบุว่าคำขอแบบอักษรเสร็จสมบูรณ์แล้ว ระบุแบบอักษรที่ดึงมาเป็นพารามิเตอร์ คุณสามารถใช้วิธีนี้เพื่อตั้งค่าแบบอักษรตามต้องการ เช่น คุณสามารถตั้งค่าแบบอักษรใน TextView
  4. ลบล้าง onTypefaceRequestFailed() ในการรับข้อมูลเกี่ยวกับข้อผิดพลาดในกระบวนการขอแบบอักษร หากต้องการดูข้อมูลเพิ่มเติม เกี่ยวกับรหัสข้อผิดพลาด โปรดดู ค่าคงที่ของรหัสข้อผิดพลาด
  5. เรียกใช้เมธอด 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 ซึ่งหมายความว่าไม่จำเป็นต้องรวมกลุ่มแบบอักษรเป็น เนื้อหา คุณสามารถกำหนดแบบอักษรที่กำหนดเองสำหรับทั้งธีม ซึ่งจะช่วยเพิ่มความสามารถในการใช้งาน น้ำหนักและรูปแบบต่างๆ เช่น ตัวหนา ปานกลาง หรือสีอ่อน หากมีให้

  1. สร้างไฟล์ XML ใหม่ในโฟลเดอร์ res/font
  2. เพิ่มองค์ประกอบรูท <font-family> และตั้งค่าแอตทริบิวต์ที่เกี่ยวข้องกับแบบอักษรเป็น ที่แสดงในไฟล์ XML ตัวอย่างต่อไปนี้
  3. <?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>
    
  4. อ้างอิงไฟล์เป็น @font/font_file_name ในไฟล์ XML ของเลย์เอาต์ นอกจากนี้คุณยัง ให้ใช้ getFont() ในการเรียกไฟล์โดยใช้โปรแกรม เช่น getFont(R.font.font_file_name)

ประกาศแบบอักษรล่วงหน้าในไฟล์ Manifest

การเพิ่มจำนวนเลย์เอาต์และการดึงข้อมูลทรัพยากรเป็นงานที่ต้องทำพร้อมกัน โดยค่าเริ่มต้น ความพยายามครั้งแรก เรียกแบบอักษรจะเรียกคำขอไปยังผู้ให้บริการแบบอักษร ซึ่งจะเพิ่มการออกแบบแรก คุณสามารถประกาศแบบอักษรที่ต้องดึงในไฟล์ Manifest ล่วงหน้าเพื่อหลีกเลี่ยงความล่าช้า หลังจากที่ระบบดึงแบบอักษรจากผู้ให้บริการแล้ว จะใช้ได้ทันที แบบอักษร การดึงข้อมูลใช้เวลานานกว่าที่คาดไว้ ระบบจะล้มเลิกกระบวนการดึงข้อมูลและใช้ค่าเริ่มต้น แบบอักษร

หากต้องการประกาศแบบอักษรล่วงหน้าในไฟล์ Manifest ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอาร์เรย์ทรัพยากรใน res/values/arrays.xml และประกาศแบบอักษรที่คุณ ต้องการดึงข้อมูลล่วงหน้า
  2. 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>
    
  3. ใช้แท็ก meta-data เพื่อประกาศอาร์เรย์ทรัพยากรในไฟล์ Manifest
  4. <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
    

เพิ่มใบรับรอง

หากไม่ได้ติดตั้งผู้ให้บริการแบบอักษรไว้ล่วงหน้า หรือหากใช้ไลบรารี AndroidX Core ให้ประกาศ ใบรับรองที่ผู้ให้บริการแบบอักษรลงนามด้วย ระบบจะใช้ใบรับรองเพื่อยืนยัน ของผู้ให้บริการแบบอักษร

ทําตามขั้นตอนต่อไปนี้เพื่อเพิ่มใบรับรอง

  1. สร้างอาร์เรย์สตริงที่มีรายละเอียดใบรับรอง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับใบรับรอง โปรดดูรายละเอียดในเอกสารประกอบของผู้ให้บริการแบบอักษร
  2. <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="certs">
           <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
        </string-array>
    </resources>
    
  3. ตั้งค่าแอตทริบิวต์ fontProviderCerts เป็นอาร์เรย์
  4. android:fontProviderCerts="@array/certs"
    

แบบอักษรที่ดาวน์โหลดได้ใน Compose

จะเริ่มต้นใน เขียน 1.2-alpha07 คุณสามารถใช้ Fonts API ที่ดาวน์โหลดได้ในแอป Compose เพื่อดาวน์โหลด Google Fonts แบบไม่พร้อมกันและใช้ในแอปของคุณ สำหรับ โปรดดูข้อมูลเพิ่มเติม เขียนเอกสารแบบอักษรที่ดาวน์โหลดได้