gpt4 book ai didi

android - 如何检测设备支持哪些语言字体?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:08 28 4
gpt4 key购买 nike

例如,我想以 native 脚本显示 10 种语言的列表,如果手机不支持该字体,它将回退到英文脚本。有什么方法可以检测特定设备支持哪些字体?换句话说,我只想检查“punjabi”是否可以显示为“ਪੰਜਾਬੀ”

最佳答案

为了安全起见,我会同时使用英文名称和本地名称(这是我实际所做的)。请怜悯可怜的家伙,看到所有这些فف赣语հայերենहिनবিষ্ণুপ্রিয়াবিষ্ণুপ্রিয়াবিষ্ণুপ্রিয়াעברমণিপুরীমণিপুরীমণিপুরীমণিপুরীתಕನ್ನಡಕನ್ನಡქართულიລາວລາວصصصصصصصصصىىىىىىىىىىىىىनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपनेपы。

您也可以尝试将文本绘制到位图中并检查生成的位图是否为空白。例如。 http://www.skoumal.net/en/android-how-draw-text-bitmapHow to check if a Bitmap is empty (blank) on Android(当然,假设不受支持的字母没有显示为黑色菱形或类似的东西)。

class Util {
private static final int WIDTH_PX = 200;
private static final int HEIGHT_PX = 80;

public static boolean isSupported(Context context, String text) {
int w = WIDTH_PX, h = HEIGHT_PX;
Resources resources = context.getResources();
float scale = resources.getDisplayMetrics().density;
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Bitmap orig = bitmap.copy(conf, false);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.rgb(0, 0, 0));
paint.setTextSize((int) (14 * scale));

// draw text to the Canvas center
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
int x = (bitmap.getWidth() - bounds.width()) / 2;
int y = (bitmap.getHeight() + bounds.height()) / 2;

canvas.drawText(text, x, y, paint);
boolean res = !orig.sameAs(bitmap);
orig.recycle();
bitmap.recycle();
return res;
}
}

测试代码:

    String s;
s="";Log.d("~~~","=="+s+"=="+Util.isSupported(this, s));
s="中文";Log.d("~~~","=="+s+"=="+Util.isSupported(this, s));
s="ਪੰਜਾਬੀ";Log.d("~~~","=="+s+"=="+Util.isSupported(this, s));
s="Հայերեն";Log.d("~~~","=="+s+"=="+Util.isSupported(this, s));

输出:

 ====false
==中文==true
==ਪੰਜਾਬੀ==false
==Հայերեն==true

PS 如果你想在同一个字符串中同时显示英文和本地名称,你可以在组合两个名称的字符串之前检查是否可以显示本地名称,或者删除拉丁字符:

public static String stripLatin(String s) {
String res = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) > 127) {
res += s.charAt(i);
}
}
return res;
}

测试代码:

s="Punjabi(ਪੰਜਾਬੀ)";Log.d("~~~","=="+s+"=="+Util.isSupported(this, Util.stripLatin(s)));

关于android - 如何检测设备支持哪些语言字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936070/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com