Index: Encoding.cpp
===================================================================
--- Encoding.cpp	(revision 18237)
+++ Encoding.cpp	(working copy)
@@ -42,7 +42,7 @@
 
 namespace {
 
-char_type arabic_table[50][4] = {
+char_type arabic_table[172][4] = {
 	{0xfe80, 0xfe80, 0xfe80, 0xfe80}, // 0x0621 = hamza
 	{0xfe81, 0xfe82, 0xfe81, 0xfe82}, // 0x0622 = ligature madda on alef
 	{0xfe83, 0xfe84, 0xfe83, 0xfe84}, // 0x0623 = ligature hamza on alef
@@ -96,11 +96,134 @@
 	{0x0650, 0x0650, 0x0650, 0x0650}, // 0x0650 = kasra
 	{0x0651, 0x0651, 0x0651, 0x0651}, // 0x0651 = shadda
 	{0x0652, 0x0652, 0x0652, 0x0652}, // 0x0652 = sukun
+
+	{0, 0, 0, 0}, // 0x0653
+	{0, 0, 0, 0}, // 0x0654
+	{0, 0, 0, 0}, // 0x0655
+	{0, 0, 0, 0}, // 0x0656
+	{0, 0, 0, 0}, // 0x0657
+	{0, 0, 0, 0}, // 0x0658
+	{0, 0, 0, 0}, // 0x0659
+	{0, 0, 0, 0}, // 0x065a
+	{0, 0, 0, 0}, // 0x065b
+	{0, 0, 0, 0}, // 0x065c
+	{0, 0, 0, 0}, // 0x065d
+	{0, 0, 0, 0}, // 0x065e
+	{0, 0, 0, 0}, // 0x065f
+	{0, 0, 0, 0}, // 0x0660
+	{0, 0, 0, 0}, // 0x0661
+	{0, 0, 0, 0}, // 0x0662
+	{0, 0, 0, 0}, // 0x0663
+	{0, 0, 0, 0}, // 0x0664
+	{0, 0, 0, 0}, // 0x0665
+	{0, 0, 0, 0}, // 0x0666
+	{0, 0, 0, 0}, // 0x0667
+	{0, 0, 0, 0}, // 0x0668
+	{0, 0, 0, 0}, // 0x0669
+	{0, 0, 0, 0}, // 0x066a
+	{0, 0, 0, 0}, // 0x066b
+	{0, 0, 0, 0}, // 0x066c
+	{0, 0, 0, 0}, // 0x066d
+	{0, 0, 0, 0}, // 0x066e
+	{0, 0, 0, 0}, // 0x066f
+	{0, 0, 0, 0}, // 0x0670
+	{0, 0, 0, 0}, // 0x0671
+	{0, 0, 0, 0}, // 0x0672
+	{0, 0, 0, 0}, // 0x0673
+	{0, 0, 0, 0}, // 0x0674
+	{0, 0, 0, 0}, // 0x0675
+	{0, 0, 0, 0}, // 0x0676
+	{0, 0, 0, 0}, // 0x0677
+	{0, 0, 0, 0}, // 0x0678
+	{0, 0, 0, 0}, // 0x0679
+	{0, 0, 0, 0}, // 0x067a
+	{0, 0, 0, 0}, // 0x067b
+	{0, 0, 0, 0}, // 0x067c
+	{0, 0, 0, 0}, // 0x067d
+	{0xfb56, 0xfb57, 0xfb58, 0xfb59}, // 0x067e = peh 
+	{0, 0, 0, 0}, // 0x067f
+	{0, 0, 0, 0}, // 0x0680
+	{0, 0, 0, 0}, // 0x0681
+	{0, 0, 0, 0}, // 0x0682
+	{0, 0, 0, 0}, // 0x0683
+	{0, 0, 0, 0}, // 0x0684
+	{0, 0, 0, 0}, // 0x0685
+	{0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d}, // 0x0686 = tcheh 
+	{0, 0, 0, 0}, // 0x0687
+	{0, 0, 0, 0}, // 0x0688
+	{0, 0, 0, 0}, // 0x0689
+	{0, 0, 0, 0}, // 0x068a
+	{0, 0, 0, 0}, // 0x068b
+	{0, 0, 0, 0}, // 0x068c
+	{0, 0, 0, 0}, // 0x068d
+	{0, 0, 0, 0}, // 0x068e
+	{0, 0, 0, 0}, // 0x068f
+	{0, 0, 0, 0}, // 0x0690
+	{0, 0, 0, 0}, // 0x0691
+	{0, 0, 0, 0}, // 0x0692
+	{0, 0, 0, 0}, // 0x0693
+	{0, 0, 0, 0}, // 0x0694
+	{0, 0, 0, 0}, // 0x0695
+	{0, 0, 0, 0}, // 0x0696
+	{0, 0, 0, 0}, // 0x0697
+	{0xfb8a, 0xfb8b, 0xfb8a, 0xfb8b}, // 0x0698 = jeh
+	{0, 0, 0, 0}, // 0x0699
+	{0, 0, 0, 0}, // 0x069a
+	{0, 0, 0, 0}, // 0x069b
+	{0, 0, 0, 0}, // 0x069c
+	{0, 0, 0, 0}, // 0x069d
+	{0, 0, 0, 0}, // 0x069e
+	{0, 0, 0, 0}, // 0x069f
+	{0, 0, 0, 0}, // 0x06a0
+	{0, 0, 0, 0}, // 0x06a1
+	{0, 0, 0, 0}, // 0x06a2
+	{0, 0, 0, 0}, // 0x06a3
+	{0, 0, 0, 0}, // 0x06a4
+	{0, 0, 0, 0}, // 0x06a5
+	{0, 0, 0, 0}, // 0x06a6
+	{0, 0, 0, 0}, // 0x06a7
+	{0, 0, 0, 0}, // 0x06a8
+	{0xfb8e, 0xfb8f, 0xfb90, 0xfb91}, // 0x06a9 = farsi kaf 
+	{0, 0, 0, 0}, // 0x06aa
+	{0, 0, 0, 0}, // 0x06ab
+	{0, 0, 0, 0}, // 0x06ac
+	{0, 0, 0, 0}, // 0x06ad
+	{0, 0, 0, 0}, // 0x06ae
+	{0xfb92, 0xfb93, 0xfb94, 0xfb95}, // 0x06af = gaf 
+	{0, 0, 0, 0}, // 0x06b0
+	{0, 0, 0, 0}, // 0x06b1
+	{0, 0, 0, 0}, // 0x06b2
+	{0, 0, 0, 0}, // 0x06b3
+	{0, 0, 0, 0}, // 0x06b4
+	{0, 0, 0, 0}, // 0x06b5
+	{0, 0, 0, 0}, // 0x06b6
+	{0, 0, 0, 0}, // 0x06b7
+	{0, 0, 0, 0}, // 0x06b8
+	{0, 0, 0, 0}, // 0x06b9
+	{0, 0, 0, 0}, // 0x06ba
+	{0, 0, 0, 0}, // 0x06bb
+	{0, 0, 0, 0}, // 0x06bc
+	{0, 0, 0, 0}, // 0x06bd
+	{0, 0, 0, 0}, // 0x06be
+	{0, 0, 0, 0}, // 0x06bf
+	{0, 0, 0, 0}, // 0x06c0
+	{0, 0, 0, 0}, // 0x06c1
+	{0, 0, 0, 0}, // 0x06c2
+	{0, 0, 0, 0}, // 0x06c3
+	{0, 0, 0, 0}, // 0x06c4
+	{0, 0, 0, 0}, // 0x06c5
+	{0, 0, 0, 0}, // 0x06c6
+	{0, 0, 0, 0}, // 0x06c7
+	{0, 0, 0, 0}, // 0x06c8
+	{0, 0, 0, 0}, // 0x06c9
+	{0, 0, 0, 0}, // 0x06ca
+	{0, 0, 0, 0}, // 0x06cb
+	{0xfbfc, 0xfbfd, 0xfbfe, 0xfbff} // 0x06cc = farsi yeh 
 };
 
 
 char_type const arabic_start = 0x0621;
-char_type const arabic_end = 0x0652;
+char_type const arabic_end = 0x06cc;
 
 
 /// Information about a single UCS4 character
@@ -244,7 +367,7 @@
 	        c == 0x0627 || c == 0x0629  ||
 	        c == 0x062f || c == 0x0648  ||
 	       (c >= 0x0630 && c <= 0x0632) ||
-	        c == 0x0649;
+	        c == 0x0649 || c == 0x0698;
 }
 
 
