12

タミル語があり、別のテキストビューにタミル語フォントを埋め込む方法を知っています.しかし、英語の単語の間にタミル語が必要です事前に感謝してください

textview のテキストの私の部分:

ウェルカム (நல்வரவு) のような季節のメッセージは、コーラムで使用されます。寺院でコーラムを描くボランティアは、信者の場合に行われることがあります。

4

4 に答える 4

5

setTypeface を使用して、このAkshar.ttfフォントを TextView に設定してみてください。英語とタミル語の両方をサポートしています。


結果は次のとおりです。

ここに画像の説明を入力

または、両方の言語をサポートする同様のフォントを探します。


2 番目の解決策は、 SpannableStringBuilderを使用して、この小さなタミル語テキスト部分に画像を使用すること です。


カスタム フォントを TextView に設定するコード:

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");
于 2012-05-17T14:27:23.763 に答える
2

Android 4.0でこの問題が発生しました。これはcsc(国コード)によるものであることがわかりました。それがインドの場合、タミル語は正常に機能し、そうでない場合は機能しません。これは確認できます。

于 2012-06-30T09:28:46.657 に答える
2

ICS (4.0) まで、Android システムで使用できるタミル語フォントはありませんでした。それでもバグがあり、Google は 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);

このトピックについては、この回答で詳しく説明しています。こちらも是非チェックしてみてください。

于 2013-03-21T09:07:28.323 に答える
2

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);

結果は次のとおりです。

ここに画像の説明を入力


CustomTypefaceSpan クラス:

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);
}
}

参照

于 2012-05-24T15:45:45.247 に答える