As the notion of initial/isolated/final forms are specific just to Perso-Arabic script (I'm not sure, maybe to some historically related scripts), they are not universal, so I don't know that there is a ready-to-use methods of doing what you want; I doubt it. (Please see:
http://en.wikipedia.org/wiki/Perso-Arabic_script[
^].) You can easily do it by yourself.
Something like this:
enum ArabicCharacterClass {
Digit,
Letter,
Punctuation,
Symbol,
}
enum ArabicContextualForm {
None,
End,
Middle,
Beginning,
Isolated
}
struct ArabicCharacterDescriptor {
public ArabicCharacterDescriptor(char codePoint) {
CodePoint = codePoint;
}
public char CodePoint { get; private set; }
public ArabicCharacterClass CharacterClass { get; private set; }
public ArabicContextualForm ContextualForm { get; private set; }
public string Name { get; private set; }
public string Din31635 { get; private set; }
public string IPA { get; private set; }
public override string ToString() {
return
}
}
Find out the Perso-Arabic subset of the of the Unicode code points (there are many, take patience):
http://unicode.org/[
^],
http://www.unicode.org/charts/PDF/U0750.pdf[
^],
http://www.unicode.org/charts/PDF/U08A0.pdf[
^],
http://www.unicode.org/charts/PDF/UFB50.pdf[
^],
http://www.unicode.org/charts/PDF/UFE70.pdf[
^].
Traverse all this data and create an instance of
ArabicCharacterDescriptor
of each character, classify them all and put some collection. Its the best to put then all in a collection based on key-value pair; for fast search. You many need to have two or more container with the same values (say, the values will be the instances of
ArabicCharacterDescriptor
), but indexed with different keys, for a fast search by code point, name, IPA or whatever else.
Please see:
http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx[
^].
The collections based on key-value pairs are:
http://msdn.microsoft.com/en-us/library/f7fta44c.aspx[
^],
http://msdn.microsoft.com/en-us/library/ms132319.aspx[
^],
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx[
^].
The one most usually used is
System.Collections.Generic.Dictionary<TKey, TValue>
.
Basically, that's it.
Good luck,
—SA