วิธีตั้งค่าตระกูลฟอนต์เริ่มต้นสำหรับแอพ Android ทั้งหมด


282

ฉันใช้แบบอักษรอ่อนของ Roboto ในแอพของฉัน หากต้องการตั้งค่าแบบอักษรฉันต้องเพิ่มในandroid:fontFamily="sans-serif-light"ทุกมุมมอง มีวิธีใดบ้างที่จะประกาศแบบอักษร Roboto เป็นตระกูลตัวอักษรเริ่มต้นให้กับทั้งแอพ ฉันเคยลองแบบนี้มาแล้ว แต่ดูเหมือนจะไม่ทำงาน

<style name="AppBaseTheme" parent="android:Theme.Light"></style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

2
สิ่งนี้อาจช่วยคุณได้: stackoverflow.com/a/16883281/1329733
Jacob R

2
ตอนนี้คุณสามารถระบุแบบอักษรที่กำหนดเองได้จาก XML ใน android studio 3.0 developer.android.com/guide/topics/ui/look-and-feel/?hl=th
7

คำตอบ:


289

คำตอบคือใช่

ไฟ Roboto ระดับโลกสำหรับTextViewและButtonคลาส:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
    <item name="android:buttonStyle">@style/RobotoButtonStyle</item>
</style>

<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
    <item name="android:fontFamily">sans-serif-light</item>
</style>

เพียงเลือกสไตล์ที่คุณต้องการจากรายการthemes.xmlจากนั้นสร้างสไตล์ที่คุณกำหนดเองตามสไตล์ดั้งเดิม ในตอนท้ายให้ใช้สไตล์เป็นธีมของแอปพลิเคชัน

<application
    android:theme="@style/AppTheme" >
</application>

มันจะใช้งานได้เฉพาะกับแบบอักษรในตัวเช่น Roboto แต่นั่นเป็นคำถาม สำหรับฟอนต์ที่กำหนดเอง (โหลดจากสินทรัพย์เป็นต้น) วิธีนี้จะใช้ไม่ได้

แก้ไข 08/13/58

หากคุณใช้ธีม AppCompat อย่าลืมลบandroid:คำนำหน้า ตัวอย่างเช่น:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
    <item name="buttonStyle">@style/RobotoButtonStyle</item>
</style>

สังเกตว่าbuttonStyleไม่มีandroid:คำนำหน้า แต่textViewStyleต้องมีคำนำหน้า


4
คุณได้รับsans-serif-lightค่าจากที่ไหน มีรายการของค่าที่ถูกต้องสำหรับfontFamilyบางแห่งหรือไม่? ฉันได้ดูเอกสารต่างๆรวมถึงไฟล์ธีมและสไตล์ในแหล่ง Android และไม่พบสิ่งใดเลย
Christopher Perry

34
เป็นไปได้เฉพาะสำหรับ API ระดับ 16 .. ชื่อ "android: fontFamily" มีอยู่เฉพาะในระดับ 16 หรือสูงกว่า .. มีวิธีในการทำเช่นนั้นเช่น API 14 หรือไม่
Lorenzo Barbagli

3
@LorenzoBarbagli คุณสามารถตรวจสอบการประดิษฐ์ตัวอักษร
Brais Gabin

10
ฉันจะทำอย่างไรถ้าฉันมีแบบอักษรที่กำหนดเอง?
Rohit Tigga

2
ใช่ฉันต้องการเพิ่มแบบอักษรที่กำหนดเองลงในแอพทั้งหมดด้วย ฉันจะทำสิ่งนั้นได้อย่างไร. ฉันจำเป็นต้องแทนที่ TextView และแทนที่ TextView ทั้งหมดตามที่แนะนำในคำตอบแรกหรือไม่
John

144

ด้วยการเปิดตัว Android Oreo คุณสามารถใช้ห้องสมุดสนับสนุนเพื่อบรรลุเป้าหมายนี้

  1. ตรวจสอบในแอปbuild.gradle ของคุณหากคุณมีห้องสมุดสนับสนุน> = 26.0.0
  2. เพิ่มโฟลเดอร์ " font " ไปยังโฟลเดอร์ทรัพยากรของคุณและเพิ่มแบบอักษรของคุณที่นั่น
  3. อ้างอิงตระกูลฟอนต์เริ่มต้นของคุณในสไตล์หลักของแอปของคุณ:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
       <item name="android:fontFamily">@font/your_font</item>
       <item name="fontFamily">@font/your_font</item> <!-- target android sdk versions < 26 and > 14 if theme other than AppCompat -->
    </style>

ตรวจสอบhttps://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.htmlสำหรับข้อมูลรายละเอียดเพิ่มเติม


9
เมื่อกำหนดเป้าหมาย API 26+ นี่ควรเป็นวิธีที่ยอมรับได้ เมื่อใช้Support Libraryเพียงนำandroid:คำนำหน้าออก
webo80

2
หากคุณใช้รุ่นที่ไม่มีการรีบูตเท่านั้นก็ถือว่าใช้ได้ คำนำหน้าจะถูกละเว้นใน API <26
webo80

2
นี่ไม่ได้ตั้งค่าแบบอักษรทุกที่ ... เช่นถ้าคุณมีสไตล์ที่ได้มาBase.TextAppearance.AppCompatก็ไม่ได้ใช้
Ixx

3
@Ixx วิธีการแทนที่สไตล์เหล่านั้นด้วยหรือไม่
Primož Kralj

2
อย่าลืมใช้ AppCompatTextView เมื่อกำหนดเป้าหมาย api <26
Codelicious

37

หากต้องการเปลี่ยนแบบอักษรของแอปให้ทำตามขั้นตอนต่อไปนี้:

  1. ภายในไดเรกทอรีสร้างไดเรกทอรีใหม่และเรียกมันว่าresfont
  2. แทรกแบบอักษรของคุณ. ttf / .otf ภายในโฟลเดอร์แบบอักษรตรวจสอบให้แน่ใจว่าชื่อแบบอักษรเป็นตัวอักษรตัวพิมพ์เล็กและขีดล่างเท่านั้น
  3. ภายในres-> values-> styles.xmlภายใน<resources>-> เพิ่มแบบอักษรของคุณ<style><item name="android:fontFamily">@font/font_name</item>

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ข้อความแอปทั้งหมดของคุณจะอยู่ในน้ำพุที่คุณเพิ่ม


8
ในขณะที่ใช้แบบอักษรที่กำหนดเองฉันจะเพิ่มแบบอักษรหนาพร้อมกับแบบอักษรปกติได้อย่างไร
Rajbir Shienh

สิ่งนี้ใช้ได้กับ API ระดับ 26 ขึ้นไปเท่านั้น API 21 และต่ำกว่าคืออะไร
zulkarnain shah

34

อ่านการปรับปรุงด้านล่าง

ฉันมีปัญหาเดียวกันกับการฝังแบบอักษรใหม่และในที่สุดก็สามารถใช้งานได้กับการขยาย TextView และตั้งค่า typefont ภายใน

public class YourTextView extends TextView {

    public YourTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public YourTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public YourTextView(Context context) {
        super(context);
        init();
    }

    private void init() {
        Typeface tf = Typeface.createFromAsset(context.getAssets(),
            "fonts/helveticaneue.ttf");
        setTypeface(tf);
    }
}

คุณต้องเปลี่ยนองค์ประกอบ TextView ในภายหลังเป็นจากในทุกองค์ประกอบ และถ้าคุณใช้ UI-Creator ใน Eclipse บางครั้งเขาจะไม่แสดง TextViews ทันที เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉัน ...

UPDATE

ทุกวันนี้ฉันใช้การไตร่ตรองเพื่อเปลี่ยนรูปแบบอักษรในแอปพลิเคชันทั้งหมดโดยไม่ขยาย TextViews ลองดูโพสต์ SO นี้

อัพเดท 2

เริ่มต้นด้วย API ระดับ 26 และพร้อมใช้งานใน 'ไลบรารีสนับสนุน' ที่คุณสามารถใช้ได้

android:fontFamily="@font/embeddedfont"

ข้อมูลเพิ่มเติม: แบบอักษรใน XML


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

2
... ดีมีฟังก์ชั่นค้นหาและแทนที่ซึ่งทำงานได้ดีจริงๆในกรณีนี้
longi

1
สิ่งนี้จะไม่ทำงาน คุณไม่สามารถเรียกgetContext()เมื่อตัวแปรคงที่ คุณควรใช้มันในแบบเดียวอย่างอื่นรหัสปัจจุบันจะไม่ได้รวบรวม
tomrozb

1
ฉันย้อนการกระทำครั้งสุดท้าย
longi

1
@ Tomrozb: D ฉันเพิ่งตระหนักว่าการเปลี่ยนแปลงอย่างรวดเร็วครั้งสุดท้ายที่ฉันทำเป็นเพราะความคิดเห็นของคุณ! ในขณะที่คุณมีคะแนนมากพอคุณสามารถปรับตัวอย่างโค้ดให้เหมาะที่สุดได้ มิฉะนั้นเราจะยังคงพูดคุยเกี่ยวกับหัวข้อในไม่กี่ปีที่ผ่านมาเมื่อไม่มีใครสนใจสมาร์ทโฟนอีกต่อไป;)
longi

8

เพิ่มบรรทัดของรหัสนี้ใน res / value / styles.xml ของคุณ

<item name="android:fontFamily">@font/circular_medium</item>

สไตล์ทั้งหมดจะเป็นแบบนั้น

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:fontFamily">@font/circular_medium</item>
</style>

เปลี่ยน "circular_medium" เป็นชื่อแบบอักษรของคุณเอง ..


6

ไม่พูดเกี่ยวกับประสิทธิภาพสำหรับฟอนต์ที่กำหนดเองคุณสามารถมีวนวนซ้ำแบบวนซ้ำผ่านมุมมองทั้งหมดและตั้งค่าแบบอักษรหากเป็น TextView:

public class Font {
    public static void setAllTextView(ViewGroup parent) {
        for (int i = parent.getChildCount() - 1; i >= 0; i--) {
            final View child = parent.getChildAt(i);
            if (child instanceof ViewGroup) {
                setAllTextView((ViewGroup) child);
            } else if (child instanceof TextView) {
                ((TextView) child).setTypeface(getFont());
            }
        }
    }

    public static Typeface getFont() {
        return Typeface.createFromAsset(YourApplicationContext.getInstance().getAssets(), "fonts/whateverfont.ttf");
    }
}

ในทุกกิจกรรมของคุณให้ส่ง ViewGroup ปัจจุบันไปยังกลุ่มนั้นหลังจาก setContentView และดำเนินการดังนี้

ViewGroup group = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);
Font.setAllTextView(group);

สำหรับส่วนคุณสามารถทำสิ่งที่คล้ายกัน


1
ฟังดูดี แต่สงสัยว่าจะทำให้มันทำงานในเนื้อหา recyclerView ได้อย่างไร?
Srujan Barai

ฉันแค่ลองสิ่งนี้ หนักเกินไปที่จะแสดงผล recyclerViewช้าลงเหมือนนรก
Srujan Barai

ไม่แนะนำอย่างสมบูรณ์สำหรับมุมมองรายการใด ๆ เคล็ดลับนี้เป็นเพียงเพื่อประหยัดเวลาในการโค้ดมุมมองแบบคงที่
อัลเลน Chan

5

อีกวิธีหนึ่งในการทำเช่นนี้กับแอพทั้งหมดคือการใช้การสะท้อนตามคำตอบนี้

public class TypefaceUtil {
    /**
     * Using reflection to override default typefaces
     * NOTICE: DO NOT FORGET TO SET TYPEFACE FOR APP THEME AS DEFAULT TYPEFACE WHICH WILL BE
     * OVERRIDDEN
     *
     * @param typefaces map of fonts to replace
     */
    public static void overrideFonts(Map<String, Typeface> typefaces) {
        try {
            final Field field = Typeface.class.getDeclaredField("sSystemFontMap");
            field.setAccessible(true);
            Map<String, Typeface> oldFonts = (Map<String, Typeface>) field.get(null);
            if (oldFonts != null) {
                oldFonts.putAll(typefaces);
            } else {
                oldFonts = typefaces;
            }
            field.set(null, oldFonts);
            field.setAccessible(false);
        } catch (Exception e) {
            Log.e("TypefaceUtil", "Can not set custom fonts");
        }
    }

    public static Typeface getTypeface(int fontType, Context context) {
        // here you can load the Typeface from asset or use default ones
        switch (fontType) {
            case BOLD:
                return Typeface.create(SANS_SERIF, Typeface.BOLD);
            case ITALIC:
                return Typeface.create(SANS_SERIF, Typeface.ITALIC);
            case BOLD_ITALIC:
                return Typeface.create(SANS_SERIF, Typeface.BOLD_ITALIC);
            case LIGHT:
                return Typeface.create(SANS_SERIF_LIGHT, Typeface.NORMAL);
            case CONDENSED:
                return Typeface.create(SANS_SERIF_CONDENSED, Typeface.NORMAL);
            case THIN:
                return Typeface.create(SANS_SERIF_MEDIUM, Typeface.NORMAL);
            case MEDIUM:
                return Typeface.create(SANS_SERIF_THIN, Typeface.NORMAL);
            case REGULAR:
            default:
                return Typeface.create(SANS_SERIF, Typeface.NORMAL);
        }
    }
}

จากนั้นเมื่อใดก็ตามที่คุณต้องการแทนที่แบบอักษรที่คุณสามารถเรียกวิธีการและให้แผนที่ของ typefaces ดังนี้

Typeface regular = TypefaceUtil.getTypeface(REGULAR, context);
Typeface light = TypefaceUtil.getTypeface(REGULAR, context);
Typeface condensed = TypefaceUtil.getTypeface(CONDENSED, context);
Typeface thin = TypefaceUtil.getTypeface(THIN, context);
Typeface medium = TypefaceUtil.getTypeface(MEDIUM, context);
Map<String, Typeface> fonts = new HashMap<>();
fonts.put("sans-serif", regular);
fonts.put("sans-serif-light", light);
fonts.put("sans-serif-condensed", condensed);
fonts.put("sans-serif-thin", thin);
fonts.put("sans-serif-medium", medium);
TypefaceUtil.overrideFonts(fonts);

สำหรับการตรวจสอบตัวอย่างเต็มรูปแบบ

ใช้งานได้กับ Android SDK 21 ขึ้นไปสำหรับรุ่นก่อนหน้าตรวจสอบตัวอย่างทั้งหมด


5

เพียงใช้ lib นี้รวบรวมไว้ในไฟล์เกรดของคุณ

complie'me.anwarshahriar:calligrapher:1.0'

และใช้ในวิธีการ onCreate ในกิจกรรมหลัก

Calligrapher calligrapher = new Calligrapher(this);
calligrapher.setFont(this, "yourCustomFontHere.ttf", true);

นี่เป็นวิธีที่เร็วที่สุดในการทำเช่นนั้น


2

สิ่งนี้ใช้ได้กับโครงการของฉันที่มาhttps://gist.github.com/artem-zinnatullin/7749076

สร้างไดเรกทอรีแบบอักษรในโฟลเดอร์สินทรัพย์แล้วคัดลอกแบบอักษรที่กำหนดเองของคุณไปยังไดเรกทอรีแบบอักษรตัวอย่างเช่นฉันใช้ trebuchet.ttf;

สร้างคลาส TypefaceUtil.java

import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;

import java.lang.reflect.Field;
public class TypefaceUtil {

    public static void overrideFont(Context context, String defaultFontNameToOverride, String customFontFileNameInAssets) {
        try {
            final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(), customFontFileNameInAssets);

            final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride);
            defaultFontTypefaceField.setAccessible(true);
            defaultFontTypefaceField.set(null, customFontTypeface);
        } catch (Exception e) {

        }
    }
}

แก้ไขธีมใน styles.xml เพิ่มด้านล่าง

<item name="android:typeface">serif</item>

ตัวอย่างใน My styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:typeface">serif</item><!-- Add here -->
    </style>


    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:windowFullscreen">true</item>
    </style>
</resources>

ในที่สุดในกิจกรรมหรือส่วนบนโทรสร้าง TypefaceUtil.java

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TypefaceUtil.overrideFont(getContext(), "SERIF", "fonts/trebuchet.ttf");
    }

0

Android ไม่ได้ให้การสนับสนุนในการใช้แบบอักษรกับแอพทั้งหมด (ดูปัญหานี้) คุณมี 4 ตัวเลือกในการตั้งค่าแบบอักษรสำหรับแอพทั้งหมด:

  • ตัวเลือก 1: ใช้การสะท้อนเพื่อเปลี่ยนแบบอักษรของระบบ
  • ตัวเลือกที่ 2: สร้างและคลาสย่อยมุมมองกำหนดเองสำหรับแต่ละมุมมองที่ต้องการแบบอักษรที่กำหนดเอง
  • ตัวเลือกที่ 3: ใช้ตัวรวบรวมมุมมองซึ่งสำรวจลำดับชั้นการดูสำหรับหน้าจอปัจจุบัน
  • ตัวเลือก 4: ใช้ไลบรารีบุคคลที่สาม

รายละเอียดของตัวเลือกเหล่านี้สามารถพบได้ที่นี่


0

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

public static void setFont(ViewGroup layout)
{
    final int childcount = layout.getChildCount();
    for (int i = 0; i < childcount; i++)
    {
        // Get the view
        View v = layout.getChildAt(i);

        // Apply the font to a possible TextView
        try {
            ((TextView) v).setTypeface(MY_CUSTOM_FONT);
            continue;
        }
        catch (Exception e) { }

        // Apply the font to a possible EditText
        try {
            ((TextView) v).setTypeface(MY_CUSTOM_FONT);
            continue;
        }
        catch (Exception e) { }

        // Recursively cicle into a possible child layout
        try {
            ViewGroup vg = (ViewGroup) v;
            Utility.setFont(vg);
            continue;
        }
        catch (Exception e) { }
    }
}

0

เพื่ออักษรชุดเพียงของแอปพลิเคnormal, sans, serifหรือmonospace(เพื่อไม่ให้ตัวอักษรที่กำหนดเอง!) คุณสามารถทำเช่นนี้

กำหนดธีมและตั้งค่าandroid:typefaceแอตทริบิวต์เป็นแบบอักษรที่คุณต้องการใช้ในstyles.xml:

<resources>

    <!-- custom normal activity theme -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- other elements -->
        <item name="android:typeface">monospace</item>
    </style>

</resources>

ใช้ชุดรูปแบบกับแอพทั้งหมดในAndroidManifest.xmlไฟล์:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application
        android:theme="@style/AppTheme" >
    </application>
</manifest>

อ้างอิง android


คุณแน่ใจเหรอ ตามเอกสาร Android: "ต้องเป็นหนึ่งในค่าคงที่ต่อไปนี้: ปกติ, Sans, serif, monospace"
tomrozb

1
โอ้ฉันเห็นแล้ว ... คุณพูดถูก ... ฉันไม่เข้าใจคำถามทั้งหมด: x ฉันแค่ต้องการให้แอพทั้งหมดของฉันใช้แบบอักษร monospace (ไม่ใช่แบบกำหนดเอง) และฉันเห็นมันใช้งานได้ดังนั้นฉันจึงโพสต์สิ่งนี้ ที่นี่ ......... ฉันคิดว่าคำตอบของฉันยังคงมีประโยชน์สำหรับคนอื่นที่ต้องการทำสิ่งที่คล้ายกัน .... ดังนั้นฉันจะแก้ไขและปล่อยไว้ที่นี่ ..... ฉันโอเคใช่ไหม สะสมคะแนนลง ขอบคุณสำหรับการชี้ให้เห็น
Eric

เฮ้ @Dave Cruise มันใช้งานได้กับอวกาศหรือไม่? ฉันได้ทดสอบมันเพียงอย่างเดียวสำหรับการบินในอวกาศ ... และไม่มีอะไรอื่น .... ดังนั้นฉันไม่แน่ใจ ... แต่ตามเอกสารประกอบมันควรใช้กับ "ปกติ", "sans" และ "serif" ด้วย .. . ฉันคิดว่าแบบอักษรนั้นกว้างกว่าแบบอักษรดังนั้นเราจึงไม่สามารถใช้มันเพื่อตั้งค่าแบบอักษรของแอพเป็นแบบอักษรเฉพาะเช่น "consolas" หรือบางอย่าง
เอริค

@Eric ใช่ ฉันก็ไม่รู้เหมือนกัน การทำงานในอวกาศนั้นมีเสน่ห์เหมือนกัน แต่ไม่มีโชคสำหรับคนปกติ sans หรือ serif
Dave Cruise

0

ลองใช้ไลบรารี่นี้ซึ่งมีน้ำหนักเบาและใช้งานง่าย

https://github.com/sunnag7/FontStyler

<com.sunnag.fontstyler.FontStylerView
              android:textStyle="bold"
              android:text="@string/about_us"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:paddingTop="8dp"
              app:fontName="Lato-Bold"
              android:textSize="18sp"
              android:id="@+id/textView64" />

-7

คำตอบคือไม่คุณไม่สามารถ ดูเป็นไปได้ไหมที่จะตั้งค่าแบบอักษรที่กำหนดเองสำหรับแอปพลิเคชันทั้งหมด สำหรับข้อมูลเพิ่มเติม.

มีวิธีการแก้ปัญหามี แต่ไม่มีอะไรในสายของ "เส้นหนึ่งเดียวของรหัสที่นี่และแบบอักษรทั้งหมดของฉันจะเป็นนี้แทนว่า "

(ฉันขอบคุณ Google - และ Apple - สำหรับเรื่องนั้น) แบบอักษรที่กำหนดเองมีสถานที่ แต่ทำให้ง่ายต่อการแทนที่แอพกว้างจะสร้างโลกทั้งใบของComic Sans )


41
ไม่เห็นด้วยกับความเห็นของคุณโดยสิ้นเชิง การตั้งค่าแบบอักษรทั่วโลกควรเป็นเรื่องเล็กน้อยที่จะทำไม่ใช่สิ่งที่ต้องใช้วิธีแก้ไขเฉพาะหน้า ขึ้นอยู่กับนักพัฒนา / นักออกแบบของโลกที่จะหลีกเลี่ยงแอปพลิเคชั่น "Comic Sans" ไม่ใช่ Google / Apple ที่จะบังคับใช้
LocalPCGuy

4
ความสอดคล้อง> การออกแบบแฟนซี
Martin Marconcini

14
อย่างไรก็ตามความสอดคล้อง <ฟังก์ชั่น เราพัฒนาแอพที่แสดงพระคัมภีร์ภาษาฮีบรู แบบอักษรหุ้นทั้งหมดที่พบในอุปกรณ์ Android (รวมถึงแบบอักษร Android L ล่าสุด) ทำหน้าที่อย่างสุดซึ้งของการแสดงเครื่องหมาย cantillation (และพวกเขาทำงานปานกลางในเครื่องหมายสระสำหรับเรื่องนั้นแม้ว่าพวกเขาจะดีขึ้น) เราจำเป็นต้องใช้แบบอักษรที่กำหนดเองตลอดทั้งแอปของเราและเราต้องเขียนโค้ดมากเกินไปเพื่อให้ได้มุมมองที่จำเป็นทั้งหมดที่ใช้
Ted Hopp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.