在ayah结尾的阿拉伯语unicode符号中写入一个数字

问题描述 投票:0回答:8

我正在开发 Android 应用程序,我正在尝试将 ayah 符号 (Ý) 的阿拉伯语末尾写入文本视图中。 我尝试写下 ayah 符号的末尾,然后写阿拉伯数字,没有任何空格,但它不起作用。我正在使用 utthmani 字体。

我想像这样显示它:

这是代码的一部分

    NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("AR"));
    temp+="  "+"\u06DD"+String.valueOf(nf.format(count))+" ";

“\u06DD”是java中(Ý)的编码。

结果变成了这样:

android ios unicode arabic
8个回答
8
投票

您可以将名为 me_quran 的字体与这些 unicode 一起使用 U+FD3E + 数字 + U+FD3F

﴿ ORNATE RIGHT PARENTHESIS Unicode: U+FD3F, UTF-8: EF B4 BF

﴾ ORNATE LEFT PARENTHESIS Unicode: U+FD3E, UTF-8: EF B4 BE

您可以从这里下载字体文件

使用示例:


6
投票

尝试这样的

﴾١٩٦﴿
,看起来像﴾١٩٦﴿


4
投票

我只是颠倒了格式,它就起作用了

NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("AR"));
textView.setText(String.valueOf(nf.format(285))+"\u06DD");

(字体为roboto)


4
投票

在 Flutter 中,您可以使用 quran 包。

getVerseEndSymbol(int verseNumber)
函数将返回带有给定诗节编号的aya结束符号。

示例:

Text(
      quran.getVerse(18, index + 1) + getVerseEndSymbol(index + 1),
      textAlign: TextAlign.right,
),

这将返回具有给定诗节编号的符号。


3
投票

如果您使用 uthmanic 字体 “KFGQPC Uthmanic Script HAFS Regular”,您只需输入一个阿拉伯数字,如“٤٤”,它将呈现为带有数字的结束诗句符号:


2
投票

为了快速使用此代码来添加古兰经 aya 结尾代码:

let arabicAyaStyle = "\u{FD3F}" + "\(getArabicDigitFor(value:verseObj.verseId))" + "\u{FD3E}"

将 arabicAyaStyle 附加到任何 aya 文本的末尾。

func getArabicDigitFor(value:Int) -> String
    {
        let numberToConvert = NSNumber(value: value)

        let formatter = NumberFormatter()

        let arLocale = Locale(identifier: "ar")
        formatter.locale = arLocale

        return formatter.string(from: numberToConvert)!

    }

1
投票

您可以使用 ReplacementSpan 来更改 aya 数字的呈现方式

例如我就是这样做的

public class EndOfAyaSpan extends ReplacementSpan
{

    public RoundedBackgroundSpan(Context context)
    {
        super();
    }

    @Override
    public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint)
    {
        float textSize = paint.getTextSize();
        canvas.drawText("\u06dd ", 0, 1, x - textSize / 5, (float) y, paint);
        paint.setTextSize(textSize - textSize / 3);
        canvas.drawText(text, start, end, x, y - textSize / 5, paint);
        paint.setTextSize(textSize);
    }

    @Override
    public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm)
    {
        return Math.round(paint.measureText(text, start, end));
    }

}

0
投票

如果您使用 Uthmani 字体,例如来自 quran.com 或来自 here,您可以使用从 U+0660

U+0669
阿拉伯数字
来在符号内呈现编号。其他字体或 unicode 字符范围都不起作用。例如,如果数字是
٢٣
(23),您将创建字符串
"\u0662\u0663"

在 Flutter 中,您可以使用 quran 包 来获取符号内的数字,但它仅适用于 Flutter 提供的默认字体。如果您使用任何其他字体,包括 Uthmani,该数字将不会在符号中呈现。

Chand 提供了一个很好的替代方案,但由于数字将在阿拉伯文本中呈现,从右到左,因此您必须翻转括号:

"\ufd3f<number in arabic>\ufd3e"

© www.soinside.com 2019 - 2024. All rights reserved.