我有一个 TextView,中间有一个巨大的文字
我在 textview 中的部分文字:
Kolam 使用季节性消息,例如欢迎 (நல்வரவு)。有时会在奉献者的
我有一个 TextView,中间有一个巨大的文字
我在 textview 中的部分文字:
Kolam 使用季节性消息,例如欢迎 (நல்வரவு)。有时会在奉献者的
尝试通过 setTypeface 将此Akshar.ttf字体设置为您的 TextView,它支持英语和泰米尔语。
结果如下:
或者,寻找支持这两种语言的类似字体。
您的第二个解决方案是使用 SpannableStringBuilder为这个小的泰米尔语文本部分使用图像。
假设您在assets文件夹下的fonts文件夹中有Akshar.ttf字体:
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Akshar.ttf");
TextView tv = (TextView) findViewById(R.id.CustomFontText);
tv.setTypeface(tf);
tv.setText("Seasonal messages like welcome (நல்வரவு) is used in Kolam. Volunteering to draw kolam at temple is sometimes done when a devotee's");
如果您想在 TextView 中支持多种字体,但在单个 ttf 中不支持它们,还有另一种解决方案:
TextView txt = (TextView) findViewById(R.id.custom_fonts);
txt.setTextSize(30);
Typeface font = Typeface.createFromAsset(getAssets(), "Akshar.ttf");
Typeface font2 = Typeface.createFromAsset(getAssets(), "bangla.ttf");
SpannableStringBuilder SS = new SpannableStringBuilder("আমারநல்வரவு");
SS.setSpan (new CustomTypefaceSpan("", font2), 0, 4,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
SS.setSpan (new CustomTypefaceSpan("", font), 4, 11,Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
txt.setText(SS);
结果是:
package my.app;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.TypefaceSpan;
public class CustomTypefaceSpan extends TypefaceSpan {
private final Typeface newType;
public CustomTypefaceSpan(String family, Typeface type) {
super(family);
newType = type;
}
@Override
public void updateDrawState(TextPaint ds) {
applyCustomTypeFace(ds, newType);
}
@Override
public void updateMeasureState(TextPaint paint) {
applyCustomTypeFace(paint, newType);
}
private static void applyCustomTypeFace(Paint paint, Typeface tf) {
int oldStyle;
Typeface old = paint.getTypeface();
if (old == null) {
oldStyle = 0;
} else {
oldStyle = old.getStyle();
}
int fake = oldStyle & ~tf.getStyle();
if ((fake & Typeface.BOLD) != 0) {
paint.setFakeBoldText(true);
}
if ((fake & Typeface.ITALIC) != 0) {
paint.setTextSkewX(-0.25f);
}
paint.setTypeface(tf);
}
}
我在 Android 4.0 中遇到了这个问题。我发现这是由于 csc(国家代码)。如果是印度,那么泰米尔语可以正常工作,否则无法正常工作。我可以确认这一点。
在 ICS (4.0) 之前,Android 系统中没有可用的泰米尔语字体。即使在那时它也有错误,谷歌用 Jelly Bean (4.2) 修复了这一切。
现在,如果您想在应用程序中显示泰米尔语,您需要使用 TAB、TAM、BAMINI 或 TSCII 编码。
我编写了一个简单的库,可以动态地为您进行转换。您只需编写如下的简单代码即可。
// Initialise the Typeface (assumes TSCII, Bamini, Anjal, TAB or TAM font located inside assets/fonts folder)
Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/mylai.ttf");
// Initialises the TextView
TextView tv = (TextView)findViewById(R.id.textView1);
//Setting the Typeface
tv.setTypeface(tf);
//Magic happens here ;) encoding conversion
String TSCIIString = TamilUtil.convertToTamil(TamilUtil.TSCII, "வணக்கம் அன்ரொயிட்");
//Setting the new string to TextView
tv.setText(TSCIIString);