我正在开发 Android 应用程序,我正在尝试将 ayah 符号 (Ý) 的阿拉伯语末尾写入文本视图中。 我尝试写下 ayah 符号的末尾,然后写阿拉伯数字,没有任何空格,但它不起作用。我正在使用 utthmani 字体。
我想像这样显示它:
这是代码的一部分
NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("AR"));
temp+=" "+"\u06DD"+String.valueOf(nf.format(count))+" ";
“\u06DD”是java中(Ý)的编码。
结果变成了这样:
您可以将名为 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
尝试这样的
﴾١٩٦﴿
,看起来像﴾١٩٦﴿
我只是颠倒了格式,它就起作用了
NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("AR"));
textView.setText(String.valueOf(nf.format(285))+"\u06DD");
(字体为roboto)
在 Flutter 中,您可以使用 quran 包。
getVerseEndSymbol(int verseNumber)
函数将返回带有给定诗节编号的aya结束符号。
示例:
Text(
quran.getVerse(18, index + 1) + getVerseEndSymbol(index + 1),
textAlign: TextAlign.right,
),
这将返回具有给定诗节编号的符号。
如果您使用 uthmanic 字体 “KFGQPC Uthmanic Script HAFS Regular”,您只需输入一个阿拉伯数字,如“٤٤”,它将呈现为带有数字的结束诗句符号:
为了快速使用此代码来添加古兰经 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)!
}
您可以使用 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));
}
}
如果您使用 Uthmani 字体,例如来自 quran.com 或来自 here,您可以使用从 U+0660
到
U+0669
的 阿拉伯数字来在符号内呈现编号。其他字体或 unicode 字符范围都不起作用。例如,如果数字是
٢٣
(23),您将创建字符串 "\u0662\u0663"
。
在 Flutter 中,您可以使用 quran 包 来获取符号内的数字,但它仅适用于 Flutter 提供的默认字体。如果您使用任何其他字体,包括 Uthmani,该数字将不会在符号中呈现。
Chand 提供了一个很好的替代方案,但由于数字将在阿拉伯文本中呈现,从右到左,因此您必须翻转括号:
"\ufd3f<number in arabic>\ufd3e"
。