如何在Android PDF文档中支持阿拉伯语?

马希拉贾齐

尝试使用阿拉伯语书写时,在Android中写PDF文档时遇到问题!

我的功能是这样的:

public void createPDF() {
    Document doc = new Document();
     try {
            FileOutputStream fOut = null;

            String Fnampdf="testfile"  + ".pdf";
            File sdCard = Environment.getExternalStorageDirectory();
            File directory = new File (sdCard.getAbsolutePath() + "/newfolder1");
            directory.mkdirs();
            File file = new File(directory, Fnampdf);

            fOut = new FileOutputStream(file);
            PdfWriter.getInstance(doc, fOut);

            //open the document
            doc.open();

            Paragraph p1 = new Paragraph("Hi! I am generating my first PDF using DroidText");
            Font paraFont= new Font(Font.COURIER);
            p1.setAlignment(Paragraph.ALIGN_CENTER);
            p1.setFont(paraFont);

             //add paragraph to document    
             doc.add(p1);

             Paragraph p2 = new Paragraph("This is an example of a simple paragraph");
             Font paraFont2= new Font(Font.COURIER,14.0f,Color.GREEN);
             p2.setAlignment(Paragraph.ALIGN_CENTER);
             p2.setFont(paraFont2);

             doc.add(p2);

             //set footer
             Phrase footerText = new Phrase("This is an example of a footer");
             HeaderFooter pdfFooter = new HeaderFooter(footerText, false);
             doc.setFooter(pdfFooter);


     } catch (DocumentException de) {
             Log.e("PDFCreator", "DocumentException:" + de);
     } catch (IOException e) {
             Log.e("PDFCreator", "ioException:" + e);
     } 
     finally {
             doc.close();
     }

}      

但是,当我尝试用阿拉伯语书写时,它对我不起作用,例如:

Paragraph p1 = new Paragraph("برنامج كشف حساب .. ");

如何在Pdf中支持阿拉伯语?

任何帮助将不胜感激 !谢谢,

用户名

您可以通过使用名为DynamicPDF.jar的jar文件来解决您的问题,您可以从以下链接下载该文件:https : //www.assembla.com/code/zapisyUG/subversion/nodes/zapisWAR/WebContent/WEB-INF/lib /DynamicPDF.jar?_format=raw&rev=133

下载并添加该库后,您需要使用其他类“ Farsi.java”,其中包含一个实用程序函数,该函数能够以正确的方式编码阿拉伯文句子。

但是,使用字体(.ttf)文件以正确的方式标识和映射阿拉伯字符很重要。因此,您需要下载所需的字体文件“ tahoma.ttf”,该文件可以在以下链接中找到并下载:http :
//www.fontsupply.com/fonts/T/Tahoma.html

总结起来,您需要执行以下操作:1-下载DynamicPDF.jar,然后将其添加到您的项目中。2-创建一个名为“ Farsi.java”的新Java文件,然后复制下面的代码。3-下载“ tahoma.ttf”字体文件,然后将其添加到“ / storage / sdcard0”(您的智能手机)上。4-最后,复制以下代码以在onCreate函数中运行。

我希望一切顺利。

public class DynamicPDFHelloWorld extends Activity {
    private static String FILE = Environment.getExternalStorageDirectory()
            + "/HelloWorld.pdf";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // Create a document and set it'ss properties
    Document objDocument = new Document();
    objDocument.setCreator("DynamicPDFHelloWorld.java");
    objDocument.setAuthor("Your Name");
    objDocument.setTitle("Hello World");


    String convertedText="";

    TrueTypeFont trueTypeFont = new TrueTypeFont(Environment.getExternalStorageDirectory()
            + "/tahoma.ttf" );

    // Create a page to add to the document
    Page objPage = new Page(PageSize.LETTER, PageOrientation.PORTRAIT,
            54.0f);

    convertedText=Farsi.Convert("برنامج كشف حساب .. ");
    // Create a Label to add to the page

    Label objLabel = new Label(convertedText, 0, 0, 504, 100,
            trueTypeFont, 18, TextAlign.RIGHT);
    objLabel.setRightToLeft(true);

    // Add label to page
    objPage.getElements().add(objLabel);

    // Add page to document
    objDocument.getPages().add(objPage);

    try {
        // Outputs the document to file
        objDocument.draw(FILE);

        Toast.makeText(this, "File has been written to :" + FILE,
                Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        Toast.makeText(this,
                "Error, unable to write to file\n" + e.getMessage(),
                Toast.LENGTH_LONG).show();
    }
}

}

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

public final class Farsi {

    public static boolean isFarsiConversionNeeded = true;

    private final static String szLamAndAlef = Character
            .toString((char) 0xfedf)
            + Character.toString((char) 0xfe8e); // Lam + Alef

private final static String szLamStickAndAlef = Character
        .toString((char) 0xfee0)
        + Character.toString((char) 0xfe8e); // Lam (Sticky !!!)+
                                                // Alef

private final static String szLa = Character.toString((char) 0xfefb); // La
private final static String szLaStick = Character.toString((char) 0xfefc); // La
                                                                            // (Sticky!!!)

private final static String szLamAndAlefWoosim = Character
        .toString((char) 0xe1)
        + Character.toString((char) 0xbb); // Lam + Alef

private final static String szLamStickAndAlefWoosim = Character
        .toString((char) 0x90)
        + Character.toString((char) 0xbb); // Lam (Sticky !!!)+
                                            // Alef

private final static String szLaWoosim = Character.toString((char) 0xd9); // La
private final static String szLaStickWoosim = Character
        .toString((char) 0xd9); // La

// (Sticky!!!)

private static final class struc {
    public char character;
    public char endGlyph;
    public char iniGlyph;
    public char midGlyph;
    public char isoGlyph;

    public struc(char Character, char EndGlyph, char IniGlyph,
            char MidGlyph, char IsoGlyph) {
        character = Character;
        endGlyph = EndGlyph;
        iniGlyph = IniGlyph;
        midGlyph = MidGlyph;
        isoGlyph = IsoGlyph;
    }
}

static struc[] arrStruc = {
        new struc((char) 0x630, (char) 0xfeac, (char) 0xfeab,
                (char) 0xfeac, (char) 0xfeab),
        new struc((char) 0x62f, (char) 0xfeaa, (char) 0xfea9,
                (char) 0xfeaa, (char) 0xfea9),
        new struc((char) 0x62c, (char) 0xfe9e, (char) 0xfe9f,
                (char) 0xfea0, (char) 0xfe9d),
        new struc((char) 0x62d, (char) 0xfea2, (char) 0xfea3,
                (char) 0xfea4, (char) 0xfea1),
        new struc((char) 0x62e, (char) 0xfea6, (char) 0xfea7,
                (char) 0xfea8, (char) 0xfea5),
        new struc((char) 0x647, (char) 0xfeea, (char) 0xfeeb,
                (char) 0xfeec, (char) 0xfee9),
        new struc((char) 0x639, (char) 0xfeca, (char) 0xfecb,
                (char) 0xfecc, (char) 0xfec9),
        new struc((char) 0x63a, (char) 0xfece, (char) 0xfecf,
                (char) 0xfed0, (char) 0xfecd),
        new struc((char) 0x641, (char) 0xfed2, (char) 0xfed3,
                (char) 0xfed4, (char) 0xfed1),
        new struc((char) 0x642, (char) 0xfed6, (char) 0xfed7,
                (char) 0xfed8, (char) 0xfed5),
        new struc((char) 0x62b, (char) 0xfe9a, (char) 0xfe9b,
                (char) 0xfe9c, (char) 0xfe99),
        new struc((char) 0x635, (char) 0xfeba, (char) 0xfebb,
                (char) 0xfebc, (char) 0xfeb9),
        new struc((char) 0x636, (char) 0xfebe, (char) 0xfebf,
                (char) 0xfec0, (char) 0xfebd),
        new struc((char) 0x637, (char) 0xfec2, (char) 0xfec3,
                (char) 0xfec4, (char) 0xfec1),
        new struc((char) 0x643, (char) 0xfeda, (char) 0xfedb,
                (char) 0xfedc, (char) 0xfed9),
        new struc((char) 0x645, (char) 0xfee2, (char) 0xfee3,
                (char) 0xfee4, (char) 0xfee1),
        new struc((char) 0x646, (char) 0xfee6, (char) 0xfee7,
                (char) 0xfee8, (char) 0xfee5),
        new struc((char) 0x62a, (char) 0xfe96, (char) 0xfe97,
                (char) 0xfe98, (char) 0xfe95),
        new struc((char) 0x627, (char) 0xfe8e, (char) 0xfe8d,
                (char) 0xfe8e, (char) 0xfe8d),
        new struc((char) 0x644, (char) 0xfede, (char) 0xfedf,
                (char) 0xfee0, (char) 0xfedd),
        new struc((char) 0x628, (char) 0xfe90, (char) 0xfe91,
                (char) 0xfe92, (char) 0xfe8f),
        new struc((char) 0x64a, (char) 0xfef2, (char) 0xfef3,
                (char) 0xfef4, (char) 0xfef1),
        new struc((char) 0x633, (char) 0xfeb2, (char) 0xfeb3,
                (char) 0xfeb4, (char) 0xfeb1),
        new struc((char) 0x634, (char) 0xfeb6, (char) 0xfeb7,
                (char) 0xfeb8, (char) 0xfeb5),
        new struc((char) 0x638, (char) 0xfec6, (char) 0xfec7,
                (char) 0xfec8, (char) 0xfec5),
        new struc((char) 0x632, (char) 0xfeb0, (char) 0xfeaf,
                (char) 0xfeb0, (char) 0xfeaf),
        new struc((char) 0x648, (char) 0xfeee, (char) 0xfeed,
                (char) 0xfeee, (char) 0xfeed),
        new struc((char) 0x629, (char) 0xfe94, (char) 0xfe93,
                (char) 0xfe93, (char) 0xfe93),
        new struc((char) 0x649, (char) 0xfef0, (char) 0xfeef,
                (char) 0xfef0, (char) 0xfeef),
        new struc((char) 0x631, (char) 0xfeae, (char) 0xfead,
                (char) 0xfeae, (char) 0xfead),
        new struc((char) 0x624, (char) 0xfe86, (char) 0xfe85,
                (char) 0xfe86, (char) 0xfe85),
        new struc((char) 0x621, (char) 0xfe80, (char) 0xfe80,
                (char) 0xfe80, (char) 0xfe80),
        new struc((char) 0x626, (char) 0xfe8a, (char) 0xfe8b,
                (char) 0xfe8c, (char) 0xfe89),
        new struc((char) 0x623, (char) 0xfe84, (char) 0xfe83,
                (char) 0xfe84, (char) 0xfe83),
        new struc((char) 0x622, (char) 0xfe82, (char) 0xfe81,
                (char) 0xfe82, (char) 0xfe81),
        new struc((char) 0x625, (char) 0xfe88, (char) 0xfe87,
                (char) 0xfe88, (char) 0xfe87),
        new struc((char) 0x67e, (char) 0xfb57, (char) 0xfb58,
                (char) 0xfb59, (char) 0xfb56), // peh
        new struc((char) 0x686, (char) 0xfb7b, (char) 0xfb7c,
                (char) 0xfb7d, (char) 0xfb7a), // cheh
        new struc((char) 0x698, (char) 0xfb8b, (char) 0xfb8a,
                (char) 0xfb8b, (char) 0xfb8a), // jeh
        new struc((char) 0x6a9, (char) 0xfb8f, (char) 0xfb90,
                (char) 0xfb91, (char) 0xfb8e), // keheh
        new struc((char) 0x6af, (char) 0xfb93, (char) 0xfb94,
                (char) 0xfb95, (char) 0xfb92), // gaf
        // new struc((char) 0x6cc, (char) 0xfbfd, (char) 0xfbfe,
        // (char) 0xfbff, (char) 0xfbfc), // Farsi yeh
        new struc((char) 0x6cc, (char) 0xfbfd, (char) 0xfef3,
                (char) 0xfef4, (char) 0xfbfc), // Arabic yeh
        new struc((char) 0x6c0, (char) 0xfba5, (char) 0xfba4,
                (char) 0xfba5, (char) 0xfba4) // heh with yeh
};

static struc[] arrStrucWoosim = {
        new struc((char) 0x630, (char) 0xb5, (char) 0x82, (char) 0xb5,
                (char) 0x82),
        new struc((char) 0x62f, (char) 0xb4, (char) 0x81, (char) 0xb4,
                (char) 0x81),
        new struc((char) 0x62c, (char) 0x9b, (char) 0xb1, (char) 0xf9,
                (char) 0xbf),
        new struc((char) 0x62d, (char) 0x9c, (char) 0xb2, (char) 0xfa,
                (char) 0xc0),
        new struc((char) 0x62e, (char) 0x9d, (char) 0xb3, (char) 0xfe,
                (char) 0xc1),
        new struc((char) 0x647, (char) 0xac, (char) 0xe4, (char) 0x93,
                (char) 0xd5),
        new struc((char) 0x639, (char) 0xc9, (char) 0xd3, (char) 0x8b,
                (char) 0xa4),
        new struc((char) 0x63a, (char) 0xca, (char) 0xdd, (char) 0x8c,
                (char) 0xa5),
        new struc((char) 0x641, (char) 0xa6, (char) 0xde, (char) 0x8d,
                (char) 0xcc),
        new struc((char) 0x642, (char) 0xa7, (char) 0xdf, (char) 0x8e,
                (char) 0xce),
        new struc((char) 0x62b, (char) 0xbd, (char) 0xaf, (char) 0xea,
                (char) 0x99),
        new struc((char) 0x635, (char) 0xc4, (char) 0xc8, (char) 0x87,
                (char) 0xa0),
        new struc((char) 0x636, (char) 0xc5, (char) 0xcb, (char) 0x88,
                (char) 0xa1),
        new struc((char) 0x637, (char) 0xc6, (char) 0xcd, (char) 0xcd,
                (char) 0xa2),
        new struc((char) 0x643, (char) 0xcf, (char) 0xe0, (char) 0x8f,
                (char) 0xa8),
        new struc((char) 0x645, (char) 0xd2, (char) 0xe2, (char) 0x91,
                (char) 0xaa),
        new struc((char) 0x646, (char) 0xd4, (char) 0xe3, (char) 0x92,
                (char) 0xab),
        new struc((char) 0x62a, (char) 0xbd, (char) 0xaf, (char) 0xea,
                (char) 0x99),
        new struc((char) 0x627, (char) 0xbb, (char) 0x80, (char) 0xbb,
                (char) 0x80),
        new struc((char) 0x644, (char) 0xd1, (char) 0xe1, (char) 0x90,
                (char) 0xa9),
        new struc((char) 0x628, (char) 0xbc, (char) 0xae, (char) 0xe9,
                (char) 0x98),
        new struc((char) 0x64a, (char) 0xdc, (char) 0xe6, (char) 0x95,
                (char) 0xdc),
        new struc((char) 0x633, (char) 0xc2, (char) 0xb8, (char) 0xb8,
                (char) 0x9e),
        new struc((char) 0x634, (char) 0xc3, (char) 0xb9, (char) 0xb9,
                (char) 0x9f),
        new struc((char) 0x638, (char) 0xc7, (char) 0xcd, (char) 0xcd,
                (char) 0xc7),
        new struc((char) 0x632, (char) 0xb7, (char) 0xb7, (char) 0xb7,
                (char) 0xb7),
        new struc((char) 0x648, (char) 0x94, (char) 0x94, (char) 0x94,
                (char) 0x94),
        new struc((char) 0x629, (char) 0xda, (char) 0xda, (char) 0xda,
                (char) 0xda),
        new struc((char) 0x649, (char) 0xdc, (char) 0xe6, (char) 0x95,
                (char) 0xdc),
        new struc((char) 0x631, (char) 0xb6, (char) 0xb6, (char) 0xb6,
                (char) 0xb6),
        new struc((char) 0x624, (char) 0xe7, (char) 0xe7, (char) 0xe7,
                (char) 0xe7),
        new struc((char) 0x621, (char) 0xba, (char) 0xba, (char) 0xba,
                (char) 0xba),
        new struc((char) 0x626, (char) 0xd7, (char) 0xe8, (char) 0x97,
                (char) 0xd7),
        new struc((char) 0x623, (char) 0x80, (char) 0x80, (char) 0x80,
                (char) 0x80),
        new struc((char) 0x622, (char) 0x80, (char) 0x80, (char) 0x80,
                (char) 0x80),
        new struc((char) 0x625, (char) 0x80, (char) 0x80, (char) 0x80,
                (char) 0x80),
        new struc((char) 0x67e, (char) 0xbc, (char) 0xae, (char) 0xe9,
                (char) 0x98), // peh
        new struc((char) 0x686, (char) 0x9b, (char) 0xb1, (char) 0xf9,
                (char) 0xbf), // cheh
        new struc((char) 0x698, (char) 0xb7, (char) 0xb7, (char) 0xb7,
                (char) 0xb7), // jeh
        new struc((char) 0x6a9, (char) 0xcf, (char) 0xe0, (char) 0x8f,
                (char) 0xa8), // keheh
        new struc((char) 0x6af, (char) 0xcf, (char) 0xe0, (char) 0x8f,
                (char) 0xa8), // gaf
        new struc((char) 0x6cc, (char) 0xdc, (char) 0xe6, (char) 0x95,
                (char) 0xdc), // yeh
        new struc((char) 0x6c0, (char) 0xac, (char) 0xe4, (char) 0x93,
                (char) 0xd5) // heh with yeh
};

private static final int N_DISTINCT_CHARACTERS = 43;

private static final String ArabicReverse(String s) {
    try {
        String Out = "", rev;
        s = MakeReverse(s);
        char[] chs = new char[s.length()];
        chs = s.toCharArray();
        int i = 0;
        while (i < s.length()) {
            if ((chs[i] >= '0' && chs[i] <= '9')) // isDigit(s[i]) ?
            {
                rev = "";
                while (i < s.length()
                        && ((chs[i] >= '0' && chs[i] <= '9') || chs[i] == '/')) // isDigit(s[i])
                                                                                // ?
                {
                    rev = rev + chs[i];
                    ++i;
                }
                rev = MakeReverse(rev);
                Out = Out + rev;
            } else {
                Out = Out + chs[i];
                ++i;
            }
        }
        s = Out;
    } catch (Exception ex) {
        // throw new Exception(
        // "An exception has occurred in ArabicReverse function.\\n"
        // + ex.getMessage());
    }
    return s;
}

private static final boolean isFromTheSet1(/* WCHAR */char ch) {
    char[] theSet1 = new char[] { (char) 0x62c, (char) 0x62d, (char) 0x62e,
            (char) 0x647, (char) 0x639, (char) 0x63a, (char) 0x641,
            (char) 0x642, (char) 0x62b, (char) 0x635, (char) 0x636,
            (char) 0x637, (char) 0x643, (char) 0x645, (char) 0x646,
            (char) 0x62a, (char) 0x644, (char) 0x628, (char) 0x64a,
            (char) 0x633, (char) 0x634, (char) 0x638, (char) 0x67e,
            (char) 0x686, (char) 0x6a9, (char) 0x6af, (char) 0x6cc,
            (char) 0x626 };
    int i = 0;
    while (i < 28) {
        if (ch == theSet1[i])
            return true;
        ++i;
    }
    return false;
}

private static final boolean isFromTheSet2(/* WCHAR */char ch) {
    char[] theSet2 = new char[] { (char) 0x627, (char) 0x623, (char) 0x625,
            (char) 0x622, (char) 0x62f, (char) 0x630, (char) 0x631,
            (char) 0x632, (char) 0x648, (char) 0x624, (char) 0x629,
            (char) 0x649, (char) 0x698, (char) 0x6c0 };
    int i = 0;
    while (i < 14) {
        if (ch == theSet2[i])
            return true;
        ++i;
    }
    return false;
}

private static final String MakeReverse(String text) {
    String Result = "";
    char[] Ctext = new char[text.length()];
    Ctext = text.toCharArray();
    for (int i = (text.length()) - 1; i >= 0; i--) {
        Result += Ctext[i];
    }
    return Result;
}

public static final String ConvertBackToRealFarsi(String In) {

    if (!isFarsiConversionNeeded) {
        return In;
    }

    String strOut = "";
    StringBuilder strBuilder = new StringBuilder("");
    int i = 0;
    int j = 0;
    char[] chIn = new char[In.length()];
    chIn = In.toCharArray();

    for (i = 0; i < In.length(); i++) {
        boolean found = false;
        for (j = 0; j < arrStruc.length; j++) {
            if (chIn[i] == arrStruc[j].midGlyph ||
                    chIn[i] == arrStruc[j].iniGlyph ||
                    chIn[i] == arrStruc[j].endGlyph ||
                    chIn[i] == arrStruc[j].isoGlyph) {
                strBuilder.append(arrStruc[j].character);
                found = true;
                break;
            }
        }
        if (!found)
            strBuilder.append(chIn[i]);
    }

    strOut = strBuilder.toString();
strOut = strOut.replace(szLa, "لا");
strOut = strOut.replace(szLaStick, "لا");

    return strOut;
}

public static final String Convert(String In) {

    if (!isFarsiConversionNeeded) {
        return In;
    }

    if (In == null) {
        return "";
    }

    boolean linkBefore, linkAfter;
    String Out = In;
    char[] chOut = new char[Out.length()];
    chOut = Out.toCharArray();
    char[] chIn = new char[In.length()];
    chIn = In.toCharArray();

    for (int i = 0; i < In.length(); i++) {
        /* WCHAR */
        char ch = chIn[i];
        if ((ch >= (char) 0x0621 && ch <= (char) 0x064a)
                || (ch == (char) 0x067e) || (ch == (char) 0x0686)
                || (ch == (char) 0x0698) || (ch == (char) 0x06a9)
                || (ch == (char) 0x06af) || (ch == (char) 0x06cc)
                || (ch == (char) 0x06c0)) // is a Farsi character?
        {
            int idx = 0;
            while (idx < N_DISTINCT_CHARACTERS) {
                if (arrStruc[idx].character == chIn[i])
                    break;
                ++idx;
            }

            if (i == In.length() - 1)
                linkAfter = false;
            else
                linkAfter = (isFromTheSet1(chIn[i + 1]) || isFromTheSet2(chIn[i + 1]));
            if (i == 0)
                linkBefore = false;
            else
                linkBefore = isFromTheSet1(chIn[i - 1]);
            if (idx < N_DISTINCT_CHARACTERS) {
                if (linkBefore && linkAfter)
                    chOut[i] = arrStruc[idx].midGlyph;
                if (linkBefore && !linkAfter)
                    chOut[i] = arrStruc[idx].endGlyph;
                if (!linkBefore && linkAfter)
                    chOut[i] = arrStruc[idx].iniGlyph;
                if (!linkBefore && !linkAfter)
                    chOut[i] = arrStruc[idx].isoGlyph;
            } else {
                chOut[i] = chIn[i];
            }
        } else {
            chOut[i] = chIn[i];
        }
    }
    Out = "";
    for (int j = 0; j < chOut.length; j++)
        Out += chOut[j];
    // Out = ArabicReverse(Out);

    Out = Out.replace((char) 0x200c, ' '); // Change NO SPACE to SPACE

    Out = Out.replace(szLamAndAlef, szLa); // Join 'Lam' and 'Alef' and
                                            // make 'La'
    Out = Out.replace(szLamStickAndAlef, szLaStick); // Join 'Lam Stick'
                                                        // and 'Alef'
                                                        // and make 'La
                                                        // Stick'

    return reorderWords(Out);

}

private final static String reorderWords(String strIn)
{

    final int ST_RTL = 0;
    final int ST_LTR = 1;

    String strOut = "";
    String prevWord = "";
    int state = ST_RTL;
    char[] arr = strIn.toCharArray();
    int i = 0;
    while (i < arr.length) {
        if (charIsLTR(arr[i]) && state != ST_LTR)
        {
            // state changed to LTR
            state = ST_LTR;
            strOut = prevWord + strOut;
            prevWord = "";
            prevWord += arr[i];
        }
        else if (charIsRTL(arr[i]) && state != ST_RTL)
        {
            // state changed to RTL
            state = ST_RTL;
            strOut = prevWord + strOut;
            prevWord = "";
            prevWord += arr[i];
        }
        else
        {
            // state is not changed
            prevWord += arr[i];
        }
        i++;
    }

    strOut = prevWord + strOut;

    return strOut;

}

private final static boolean charIsLTR(char ch)
{
    return (ch >= (char) 65 & ch <= (char) 122)
            |
            Character.isDigit(ch);
}

private final static boolean charIsRTL(char ch)
{
    return ch >= (char) 0x0621;
}   

private static Typeface typeface;

public static final Typeface GetFarsiFont(Context context) {
    if (typeface == null) {
        typeface = Typeface.createFromAsset(context.getAssets(),
                // "DroidSansFallback.ttf");
                "TAHOMA.TTF");
    }
    return typeface;
}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android sqlite不支持阿拉伯语

来自分类Dev

如何使lubuntu(LXDE)终端支持阿拉伯语或波斯语?

来自分类Dev

如何在波斯/阿拉伯语支持下安装telegram-cli

来自分类Dev

如何在使用iText创建的PDF中显示阿拉伯语

来自分类Dev

如何在日食中用阿拉伯语读写

来自分类Dev

如何在arraylist中用阿拉伯语写

来自分类Dev

android-阿拉伯语语音识别

来自分类Dev

Android阿拉伯语光标拆分

来自分类Dev

阿拉伯语单词如何与“ tashkel”匹配?

来自分类Dev

如何用html写阿拉伯语段落?

来自分类Dev

阿拉伯语单词如何与“ tashkel”匹配?

来自分类Dev

如何用html写阿拉伯语段落?

来自分类Dev

如何使Ubuntu与阿拉伯语兼容

来自分类Dev

android选择语言(阿拉伯语为阿拉伯语,英语为英语,法语为法语)

来自分类Dev

RTL(波斯语-阿拉伯语)字母被android studio编辑器弄乱了

来自分类Dev

如何在SQL Server中存储阿拉伯语?

来自分类Dev

如何在codeigniter中添加阿拉伯语和英语?

来自分类Dev

如何在键盘中输入阿拉伯语上标和下标字母?

来自分类Dev

如何在Java服务器页面中显示阿拉伯语单词?

来自分类Dev

如何在MYSQL中选择阿拉伯语数据?

来自分类Dev

如何在键盘中输入阿拉伯语上标和下标字母?

来自分类Dev

如何在QString中使用语言(如阿拉伯语或中文)?

来自分类Dev

如何在oracle中选择数字并将数字从英语转换为阿拉伯语

来自分类Dev

如何在视图中显示用阿拉伯语编写的模型验证

来自分类Dev

如何防止希伯来语和阿拉伯语从右向左自动显示文字方向?

来自分类Dev

如何找到阿拉伯语和波斯语中的mist漏?

来自分类Dev

如何从右到左更改特定列表项文本(例如阿拉伯语/希伯来语)?

来自分类Dev

如何解决带有阿拉伯语单词的链接变成没有阿拉伯语单词的链接

来自分类Dev

将Android应用的语言更改为阿拉伯语时,如何在左侧显示复选框?

Related 相关文章

  1. 1

    Android sqlite不支持阿拉伯语

  2. 2

    如何使lubuntu(LXDE)终端支持阿拉伯语或波斯语?

  3. 3

    如何在波斯/阿拉伯语支持下安装telegram-cli

  4. 4

    如何在使用iText创建的PDF中显示阿拉伯语

  5. 5

    如何在日食中用阿拉伯语读写

  6. 6

    如何在arraylist中用阿拉伯语写

  7. 7

    android-阿拉伯语语音识别

  8. 8

    Android阿拉伯语光标拆分

  9. 9

    阿拉伯语单词如何与“ tashkel”匹配?

  10. 10

    如何用html写阿拉伯语段落?

  11. 11

    阿拉伯语单词如何与“ tashkel”匹配?

  12. 12

    如何用html写阿拉伯语段落?

  13. 13

    如何使Ubuntu与阿拉伯语兼容

  14. 14

    android选择语言(阿拉伯语为阿拉伯语,英语为英语,法语为法语)

  15. 15

    RTL(波斯语-阿拉伯语)字母被android studio编辑器弄乱了

  16. 16

    如何在SQL Server中存储阿拉伯语?

  17. 17

    如何在codeigniter中添加阿拉伯语和英语?

  18. 18

    如何在键盘中输入阿拉伯语上标和下标字母?

  19. 19

    如何在Java服务器页面中显示阿拉伯语单词?

  20. 20

    如何在MYSQL中选择阿拉伯语数据?

  21. 21

    如何在键盘中输入阿拉伯语上标和下标字母?

  22. 22

    如何在QString中使用语言(如阿拉伯语或中文)?

  23. 23

    如何在oracle中选择数字并将数字从英语转换为阿拉伯语

  24. 24

    如何在视图中显示用阿拉伯语编写的模型验证

  25. 25

    如何防止希伯来语和阿拉伯语从右向左自动显示文字方向?

  26. 26

    如何找到阿拉伯语和波斯语中的mist漏?

  27. 27

    如何从右到左更改特定列表项文本(例如阿拉伯语/希伯来语)?

  28. 28

    如何解决带有阿拉伯语单词的链接变成没有阿拉伯语单词的链接

  29. 29

    将Android应用的语言更改为阿拉伯语时,如何在左侧显示复选框?

热门标签

归档