Don't do numeric substitution in Arabic text by default. Bug 181711, r+sr=rbs, a=asa.

This commit is contained in:
smontagu%netscape.com 2003-05-08 18:38:19 +00:00
parent 0c6073c52d
commit 1d28d1dc0e
9 changed files with 31 additions and 10 deletions

View File

@ -75,6 +75,7 @@
* @param aBuffer is the string
* @param aSize is the size of aBuffer
* @param aNumFlag specifies the conversion to perform:
* IBMBIDI_NUMERAL_NOMINAL: don't do any conversion
* IBMBIDI_NUMERAL_HINDI: convert to Hindi forms (Unicode 0660-0669)
* IBMBIDI_NUMERAL_ARABIC: convert to Arabic forms (Unicode 0030-0039)
* IBMBIDI_NUMERAL_HINDICONTEXT: convert numbers in Arabic text to Hindi, otherwise to Arabic
@ -146,7 +147,8 @@
// Numeral Style
// ------------------
// bidi.numeral
#define IBMBIDI_NUMERAL_REGULAR 1 // 1 = regularcontextnumeralBidi *
#define IBMBIDI_NUMERAL_NOMINAL 0 // 0 = nominalnumeralBidi *
#define IBMBIDI_NUMERAL_REGULAR 1 // 1 = regularcontextnumeralBidi
#define IBMBIDI_NUMERAL_HINDICONTEXT 2 // 2 = hindicontextnumeralBidi
#define IBMBIDI_NUMERAL_ARABIC 3 // 3 = arabicnumeralBidi
#define IBMBIDI_NUMERAL_HINDI 4 // 4 = hindinumeralBidi
@ -169,7 +171,7 @@
(IBMBIDI_TEXTTYPE_CHARSET<<4) | \
(IBMBIDI_CONTROLSTEXTMODE_LOGICAL<<8) | \
(IBMBIDI_CLIPBOARDTEXTMODE_SOURCE<<12) | \
(IBMBIDI_NUMERAL_REGULAR<<16) | \
(IBMBIDI_NUMERAL_NOMINAL<<16) | \
(IBMBIDI_SUPPORTMODE_MOZILLA<<20) | \
(IBMBIDI_CHARSET_BIDI<<24))

View File

@ -495,7 +495,8 @@ nsresult Conv_06_FE_WithReverse(const nsString& aSrc,
nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32 aNumFlag)
{
PRUint32 i;
// IBMBIDI_NUMERAL_REGULAR *
// IBMBIDI_NUMERAL_NOMINAL *
// IBMBIDI_NUMERAL_REGULAR
// IBMBIDI_NUMERAL_HINDICONTEXT
// IBMBIDI_NUMERAL_ARABIC
// IBMBIDI_NUMERAL_HINDI
@ -509,13 +510,18 @@ nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32 aNumFlag)
for (i=0;i<aSize;i++)
aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]);
break;
default : // IBMBIDI_NUMERAL_REGULAR, IBMBIDI_NUMERAL_HINDICONTEXT for HandleNum() which is called for clipboard handling
case IBMBIDI_NUMERAL_REGULAR:
case IBMBIDI_NUMERAL_HINDICONTEXT:
// for clipboard handling
//XXX do we really want to convert numerals when copying text?
for (i=1;i<aSize;i++) {
if (IS_ARABIC_CHAR(aBuffer[i-1]))
aBuffer[i] = NUM_TO_HINDI(aBuffer[i]);
else
aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]);
}
case IBMBIDI_NUMERAL_NOMINAL:
default:
break;
}
return NS_OK;

View File

@ -900,6 +900,7 @@ nsBidiPresUtils::FormatUnicodeText(nsIPresContext* aPresContext,
HandleNumbers(aText,aTextLength,IBMBIDI_NUMERAL_ARABIC);
break;
case IBMBIDI_NUMERAL_NOMINAL:
default:
break;
}

View File

@ -495,7 +495,8 @@ nsresult Conv_06_FE_WithReverse(const nsString& aSrc,
nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32 aNumFlag)
{
PRUint32 i;
// IBMBIDI_NUMERAL_REGULAR *
// IBMBIDI_NUMERAL_NOMINAL *
// IBMBIDI_NUMERAL_REGULAR
// IBMBIDI_NUMERAL_HINDICONTEXT
// IBMBIDI_NUMERAL_ARABIC
// IBMBIDI_NUMERAL_HINDI
@ -509,13 +510,18 @@ nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32 aNumFlag)
for (i=0;i<aSize;i++)
aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]);
break;
default : // IBMBIDI_NUMERAL_REGULAR, IBMBIDI_NUMERAL_HINDICONTEXT for HandleNum() which is called for clipboard handling
case IBMBIDI_NUMERAL_REGULAR:
case IBMBIDI_NUMERAL_HINDICONTEXT:
// for clipboard handling
//XXX do we really want to convert numerals when copying text?
for (i=1;i<aSize;i++) {
if (IS_ARABIC_CHAR(aBuffer[i-1]))
aBuffer[i] = NUM_TO_HINDI(aBuffer[i]);
else
aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]);
}
case IBMBIDI_NUMERAL_NOMINAL:
default:
break;
}
return NS_OK;

View File

@ -75,6 +75,7 @@
* @param aBuffer is the string
* @param aSize is the size of aBuffer
* @param aNumFlag specifies the conversion to perform:
* IBMBIDI_NUMERAL_NOMINAL: don't do any conversion
* IBMBIDI_NUMERAL_HINDI: convert to Hindi forms (Unicode 0660-0669)
* IBMBIDI_NUMERAL_ARABIC: convert to Arabic forms (Unicode 0030-0039)
* IBMBIDI_NUMERAL_HINDICONTEXT: convert numbers in Arabic text to Hindi, otherwise to Arabic
@ -146,7 +147,8 @@
// Numeral Style
// ------------------
// bidi.numeral
#define IBMBIDI_NUMERAL_REGULAR 1 // 1 = regularcontextnumeralBidi *
#define IBMBIDI_NUMERAL_NOMINAL 0 // 0 = nominalnumeralBidi *
#define IBMBIDI_NUMERAL_REGULAR 1 // 1 = regularcontextnumeralBidi
#define IBMBIDI_NUMERAL_HINDICONTEXT 2 // 2 = hindicontextnumeralBidi
#define IBMBIDI_NUMERAL_ARABIC 3 // 3 = arabicnumeralBidi
#define IBMBIDI_NUMERAL_HINDI 4 // 4 = hindinumeralBidi
@ -169,7 +171,7 @@
(IBMBIDI_TEXTTYPE_CHARSET<<4) | \
(IBMBIDI_CONTROLSTEXTMODE_LOGICAL<<8) | \
(IBMBIDI_CLIPBOARDTEXTMODE_SOURCE<<12) | \
(IBMBIDI_NUMERAL_REGULAR<<16) | \
(IBMBIDI_NUMERAL_NOMINAL<<16) | \
(IBMBIDI_SUPPORTMODE_MOZILLA<<20) | \
(IBMBIDI_CHARSET_BIDI<<24))

View File

@ -900,6 +900,7 @@ nsBidiPresUtils::FormatUnicodeText(nsIPresContext* aPresContext,
HandleNumbers(aText,aTextLength,IBMBIDI_NUMERAL_ARABIC);
break;
case IBMBIDI_NUMERAL_NOMINAL:
default:
break;
}

View File

@ -1551,6 +1551,7 @@ nsTextTransformer::DoNumericShaping(PRUnichar* aText,
HandleNumbers(aText, aTextLength, IBMBIDI_NUMERAL_ARABIC);
break;
case IBMBIDI_NUMERAL_NOMINAL:
default:
break;
}

View File

@ -1551,6 +1551,7 @@ nsTextTransformer::DoNumericShaping(PRUnichar* aText,
HandleNumbers(aText, aTextLength, IBMBIDI_NUMERAL_ARABIC);
break;
case IBMBIDI_NUMERAL_NOMINAL:
default:
break;
}

View File

@ -804,11 +804,12 @@ pref("bidi.clipboardtextmode", 3);
// ------------------
// Numeral Style
// ------------------
// 1 = regularcontextnumeralBidi *
// 0 = nominalnumeralBidi *
// 1 = regularcontextnumeralBidi
// 2 = hindicontextnumeralBidi
// 3 = arabicnumeralBidi
// 4 = hindinumeralBidi
pref("bidi.numeral", 1);
pref("bidi.numeral", 0);
// ------------------
// Support Mode
// ------------------