Вопрос по android – Android тамильский шрифт между английским словом

12

У меня TextView с огромным текстом между ними, у меня есть тамильское слово, и я знаю, как встроить тамильский шрифт в отдельное текстовое представление. Но мне нужно тамильское слово между английским словом, пожалуйста, помогите заранее, спасибо

моя часть текста в textview:

Seasonal messages like welcome (நல்வரவு) is used in Kolam. Volunteering to draw kolam at temple is sometimes done when a devotee's

я не могу получить лицо тамильского шрифта из строки HTML Thiru VT
посмотри на этоstackoverflow.com/a/8471977/1012284 Padma Kumar
Привет. Я пытаюсь следовать вашему подходу, но все же, как вы могли видеть, слово «& apos; & # xBB5; & # xBC1;" " не отображается правильно. Не только это, но и есть другие слова, которые путаются. У вас есть идеи или как я могу отобразить это правильно. Andro Selva
эй, ты просто хочешь показать текст в textview только на ?? другие операции на нем не выполняются ??? user
да, я хочу отображать только текст, когда я пытаюсь разделить текст в разных текстовых представлениях, я не получаю представление прокрутки Thiru VT

Ваш Ответ

4   ответа
2

если вы хотите поддерживать несколько шрифтов в TextView, но они не поддерживаются в пределах одного ttf:

Use the following code:(I'm using Bangla and Tamil font)
  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);

Результат:

enter image description here

CustomTypefaceSpan Class:
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);
}
}

Ссылка

5

Akshar.ttf шрифт для вашего TextView через setTypeface, он поддерживает как английский, так и тамильский.

Вот результат:

enter image description here

Или найдите похожий шрифт, который поддерживает оба языка.

Ваше второе решение - использовать изображение для этой небольшой части текста на тамильском языке, используяSpannableStringBuilder.

Code for setting custom font to TextView:

Если у вас естьAkshar.ttf шрифт вfonts папка подassets папка:

 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");
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Thiru VT
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

ошибки, и 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);

Я написал больше об этомтема в этом ответе. Пожалуйста, проверьте это тоже.

2

Я обнаружил, что это связано с CSC (код страны). Если это Индия, то тамильский работает правильно, иначе не работает. Я могу это подтвердить.

Похожие вопросы