summaryrefslogtreecommitdiff
path: root/indexing/xindy
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /indexing/xindy
Initial commit
Diffstat (limited to 'indexing/xindy')
-rw-r--r--indexing/xindy/contrib/xindy-persian/README36
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy10
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy92
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in82
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy589
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy10
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy92
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in82
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy590
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy10
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy92
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in82
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy589
13 files changed, 2356 insertions, 0 deletions
diff --git a/indexing/xindy/contrib/xindy-persian/README b/indexing/xindy/contrib/xindy-persian/README
new file mode 100644
index 0000000000..a22b487133
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/README
@@ -0,0 +1,36 @@
+________________________
+The “xindy-persian” package
+v0.7b
+
+The “xindy-persian” package is the Persian language
+support for xindy program.
+
+Three Variants are provided:
+
+ * Variant One: Sorts آ under ا
+ * Variant Two: Sorts آ as a separate letter
+ * Variant Three: Sorts both آ and ا under الف
+
+If you want to report any bugs or typos and corrections in the documentation,
+or ask for any new features, or suggest any improvements, or ask any questions
+about the package, then please do not send any direct emails to us; we will not
+answer any direct emails. Instead please use the issue tracker:
+ <https://github.com/persian-tex/xindy-persian>
+In doing so, please always explain your issue well enough, always include
+a minimal working examples showing the issue, and always choose the appropriate
+label for your query (i.e. if you are reporting any bugs, choose `bug' label).
+
+Current version release date: 2015/12/20
+_________________
+Vafa Khalighi
+persian-tex@tug.org
+
+Copyright © 2011–2015 Vafa Khalighi
+Distributed under the LaTeX Project Public License
+It may be distributed and/or modified under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is “maintained” (as per LPPL maintenance status)
+by Vafa Khalighi.
+
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy b/indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy
new file mode 100644
index 0000000000..94e9bed54a
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy
@@ -0,0 +1,10 @@
+(require "lang/persian/variant1-utf8.xdy")
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("pe-alphabetize" "pe-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("pe-resolve-diacritics" "pe-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("pe-resolve-case" "pe-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("pe-resolve-special"))
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy b/indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy
new file mode 100644
index 0000000000..19c4790669
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy
@@ -0,0 +1,92 @@
+(require "lang/persian/variant1-utf8.xdy")
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("pe-alphabetize" "pe-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("pe-resolve-diacritics" "pe-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("pe-resolve-case" "pe-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("pe-resolve-special"))
+
+;; define other stuff
+(define-attributes ("default"))
+
+;; The description of the location-classes.
+;; Add more location classes as needed.
+
+(define-location-class "arabic-page-numbers" ("arabic-numbers"))
+(define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
+(define-location-class "alpha-page-numbers" ("alpha"))
+(define-location-class "Alpha-page-numbers" ("ALPHA"))
+
+;; The most frequently used cross reference class "see". Add more, if
+;; necessary.
+
+(define-crossref-class "see")
+(markup-crossref-list :open "\see{" :close "}{}" :class "see")
+
+;; In makeindex: page_precedence <string> "rnaRA"
+;; List all location classes appearing in your document.
+
+(define-location-class-order ("roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "see"))
+
+
+;; preamble <string> "\\begin{theindex}\n"
+;; postamble <string> "\n\n\\end{theindex}\n"
+
+(markup-index :open "\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+;; These specifiers are not directly supported via a command-line
+;; switch as in makeindex. Add the appropriate markup-commands into
+;; the preamble.
+
+;; setpage_prefix <string> "~n \setcounter{page}{"
+;; setpage_suffix <string> "}~n"
+
+;; group_skip <string> "~n~n \indexspace~n"
+
+(markup-letter-group-list :sep "~n~n \indexspace~n")
+
+;; even though we comment out (%) the letter-group heading,
+;; the following is useful if you want to check the .ind-file
+(markup-letter-group :open-head "~n % ")
+
+;; The indexentries (item_<..> specifiers)
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+;; Location-references
+
+;; delim_0 <string> ", "
+;; delim_1 <string> ", "
+;; delim_2 <string> ", "
+
+(markup-locclass-list :open ", " :sep ", ")
+
+;; delim_n <string> ", "
+
+(markup-locref-list :sep ", ")
+
+;; delim_r <string> "--"
+
+(markup-range :sep "--")
+
+;; That's all ;-)
+
+
+;; End
+
+;; Local Variables:
+;; mode: lisp
+;; End:
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in
new file mode 100644
index 0000000000..9d14f9f37c
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "One";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['ا',['آ']],
+['ا',['أ']],
+['ا',['ا']],
+['ب',['ب']],
+['پ',['پ']],
+['ت',['ت']],
+['ث',['ث']],
+['ج',['ج']],
+['چ',['چ']],
+['ح',['ح']],
+['خ',['خ']],
+['د',['د']],
+['ذ',['ذ']],
+['ر',['ر']],
+['ز',['ز']],
+['ژ',['ژ']],
+['س',['س']],
+['ش',['ش']],
+['ص',['ص']],
+['ض',['ض']],
+['ط',['ط']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['ف',['ف']],
+['ق',['ق']],
+['ک',['ک']],
+['گ',['گ']],
+['ل',['ل']],
+['م',['م']],
+['ن',['ن']],
+['و',['ؤ','و']],
+['ه',['ه']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+['B', ['b','B']],
+['C', ['c','C'],['ç','Ç']],
+['D', ['d','D'],['ð','Ð']],
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+['H', ['h','H']],
+['I', ['i','I'],['ï','Ï']],
+['J', ['j','J']],
+['K', ['k','K']],
+['L', ['l','L']],
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+['P', ['p','P']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+['S', ['s','S']],
+['T', ['t','T']],
+['U', ['u','U']],
+['V', ['v','V']],
+['W', ['w','W']],
+['X', ['x','X']],
+['Y', ['y','Y']],
+['Z', ['z','Z']],
+['Þ', ['þ','Þ']],
+];
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['œ','Œ'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}','ّ','َ','ِ','ُ','ً','ٍ','ٌ','ْ','ٔ','ء','‌','«','»','ـ');
+
+do 'make-rules.pl';
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy b/indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy
new file mode 100644
index 0000000000..8654e2b473
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy
@@ -0,0 +1,589 @@
+;; Rules for xindy; generated by make-rules.pl
+;; language: Persian
+
+(define-letter-group "ا" :prefixes ("" "" ""))
+(define-letter-group "ب" :after "ا" :prefixes (""))
+(define-letter-group "پ" :after "ب" :prefixes (""))
+(define-letter-group "ت" :after "پ" :prefixes (""))
+(define-letter-group "ث" :after "ت" :prefixes (""))
+(define-letter-group "ج" :after "ث" :prefixes (""))
+(define-letter-group "چ" :after "ج" :prefixes (""))
+(define-letter-group "ح" :after "چ" :prefixes (""))
+(define-letter-group "خ" :after "ح" :prefixes (""))
+(define-letter-group "د" :after "خ" :prefixes (""))
+(define-letter-group "ذ" :after "د" :prefixes (""))
+(define-letter-group "ر" :after "ذ" :prefixes (""))
+(define-letter-group "ز" :after "ر" :prefixes (""))
+(define-letter-group "ژ" :after "ز" :prefixes (""))
+(define-letter-group "س" :after "ژ" :prefixes (""))
+(define-letter-group "ش" :after "س" :prefixes (""))
+(define-letter-group "ص" :after "ش" :prefixes (""))
+(define-letter-group "ض" :after "ص" :prefixes (""))
+(define-letter-group "ط" :after "ض" :prefixes (""))
+(define-letter-group "ظ" :after "ط" :prefixes (""))
+(define-letter-group "ع" :after "ظ" :prefixes (""))
+(define-letter-group "غ" :after "ع" :prefixes (""))
+(define-letter-group "ف" :after "غ" :prefixes (""))
+(define-letter-group "ق" :after "ف" :prefixes (""))
+(define-letter-group "ک" :after "ق" :prefixes (""))
+(define-letter-group "گ" :after "ک" :prefixes (""))
+(define-letter-group "ل" :after "گ" :prefixes (""))
+(define-letter-group "م" :after "ل" :prefixes (""))
+(define-letter-group "ن" :after "م" :prefixes (""))
+(define-letter-group "و" :after "ن" :prefixes (""))
+(define-letter-group "ه" :after "و" :prefixes (""))
+(define-letter-group "ی" :after "ه" :prefixes (""))
+(define-letter-group "A" :after "ی" :prefixes (""))
+(define-letter-group "B" :after "A" :prefixes (""))
+(define-letter-group "C" :after "B" :prefixes (""))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes (""))
+(define-letter-group "F" :after "E" :prefixes (""))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes (""))
+(define-letter-group "I" :after "H" :prefixes (""))
+(define-letter-group "J" :after "I" :prefixes (""))
+(define-letter-group "K" :after "J" :prefixes (""))
+(define-letter-group "L" :after "K" :prefixes (""))
+(define-letter-group "M" :after "L" :prefixes (""))
+(define-letter-group "N" :after "M" :prefixes (""))
+(define-letter-group "O" :after "N" :prefixes (""))
+(define-letter-group "P" :after "O" :prefixes (""))
+(define-letter-group "Q" :after "P" :prefixes (""))
+(define-letter-group "R" :after "Q" :prefixes (""))
+(define-letter-group "S" :after "R" :prefixes (""))
+(define-letter-group "T" :after "S" :prefixes (""))
+(define-letter-group "U" :after "T" :prefixes (""))
+(define-letter-group "V" :after "U" :prefixes (""))
+(define-letter-group "W" :after "V" :prefixes (""))
+(define-letter-group "X" :after "W" :prefixes (""))
+(define-letter-group "Y" :after "X" :prefixes (""))
+(define-letter-group "Z" :after "Y" :prefixes (""))
+(define-letter-group "Þ" :after "Z" :prefixes (""))
+
+(define-rule-set "pe-alphabetize"
+
+ :rules (("آ" "" :string)
+ ("أ" "" :string)
+ ("ا" "" :string)
+ ("ب" "" :string)
+ ("پ" "" :string)
+ ("ت" "" :string)
+ ("ث" "" :string)
+ ("ج" "" :string)
+ ("چ" "" :string)
+ ("ح" "" :string)
+ ("خ" "" :string)
+ ("د" "" :string)
+ ("ذ" "" :string)
+ ("ر" "" :string)
+ ("ز" "" :string)
+ ("ژ" "" :string)
+ ("س" "" :string)
+ ("ش" "" :string)
+ ("ص" "" :string)
+ ("ض" "" :string)
+ ("ط" "" :string)
+ ("ظ" "" :string)
+ ("ع" "" :string)
+ ("غ" "" :string)
+ ("ف" "" :string)
+ ("ق" "" :string)
+ ("ک" "" :string)
+ ("گ" "" :string)
+ ("ل" "" :string)
+ ("م" "" :string)
+ ("ن" "" :string)
+ ("ؤ" "" :string)
+ ("و" "" :string)
+ ("ه" "" :string)
+ ("ی" "" :string)
+ ("ئ" "" :string)
+ ("à" "" :string)
+ ("À" "" :string)
+ ("Æ" "" :string)
+ ("æ" "" :string)
+ ("ç" "" :string)
+ ("Ç" "" :string)
+ ("Ð" "" :string)
+ ("ð" "" :string)
+ ("È" "" :string)
+ ("ë" "" :string)
+ ("ê" "" :string)
+ ("é" "" :string)
+ ("É" "" :string)
+ ("è" "" :string)
+ ("Ê" "" :string)
+ ("Ë" "" :string)
+ ("Ï" "" :string)
+ ("ï" "" :string)
+ ("ñ" "" :string)
+ ("Ñ" "" :string)
+ ("Ô" "" :string)
+ ("Ö" "" :string)
+ ("ö" "" :string)
+ ("ô" "" :string)
+ ("Œ" "" :string)
+ ("œ" "" :string)
+ ("þ" "" :string)
+ ("Þ" "" :string)
+ ("A" "" :string)
+ ("a" "" :string)
+ ("B" "" :string)
+ ("b" "" :string)
+ ("c" "" :string)
+ ("C" "" :string)
+ ("D" "" :string)
+ ("d" "" :string)
+ ("E" "" :string)
+ ("e" "" :string)
+ ("F" "" :string)
+ ("f" "" :string)
+ ("G" "" :string)
+ ("g" "" :string)
+ ("H" "" :string)
+ ("h" "" :string)
+ ("I" "" :string)
+ ("i" "" :string)
+ ("J" "" :string)
+ ("j" "" :string)
+ ("K" "" :string)
+ ("k" "" :string)
+ ("L" "" :string)
+ ("l" "" :string)
+ ("M" "" :string)
+ ("m" "" :string)
+ ("n" "" :string)
+ ("N" "" :string)
+ ("O" "" :string)
+ ("o" "" :string)
+ ("P" "" :string)
+ ("p" "" :string)
+ ("Q" "" :string)
+ ("q" "" :string)
+ ("R" "" :string)
+ ("r" "" :string)
+ ("S" "" :string)
+ ("s" "" :string)
+ ("T" "" :string)
+ ("t" "" :string)
+ ("U" "" :string)
+ ("u" "" :string)
+ ("v" "" :string)
+ ("V" "" :string)
+ ("w" "" :string)
+ ("W" "" :string)
+ ("x" "" :string)
+ ("X" "" :string)
+ ("Y" "" :string)
+ ("y" "" :string)
+ ("Z" "" :string)
+ ("z" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-diacritics"
+
+ :rules (("پ" "" :string)
+ ("س" "" :string)
+ ("ه" "" :string)
+ ("ذ" "" :string)
+ ("ظ" "" :string)
+ ("غ" "" :string)
+ ("ف" "" :string)
+ ("خ" "" :string)
+ ("ع" "" :string)
+ ("ب" "" :string)
+ ("ز" "" :string)
+ ("ث" "" :string)
+ ("چ" "" :string)
+ ("ص" "" :string)
+ ("ر" "" :string)
+ ("أ" "" :string)
+ ("ش" "" :string)
+ ("ؤ" "" :string)
+ ("ق" "" :string)
+ ("ئ" "" :string)
+ ("ت" "" :string)
+ ("ژ" "" :string)
+ ("و" "" :string)
+ ("گ" "" :string)
+ ("ل" "" :string)
+ ("ج" "" :string)
+ ("ا" "" :string)
+ ("þ" "" :string)
+ ("ن" "" :string)
+ ("د" "" :string)
+ ("ط" "" :string)
+ ("م" "" :string)
+ ("ح" "" :string)
+ ("ک" "" :string)
+ ("ض" "" :string)
+ ("آ" "" :string)
+ ("ی" "" :string)
+ ("Þ" "" :string)
+ ("ï" "" :string)
+ ("À" "" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("Ñ" "" :string)
+ ("É" "" :string)
+ ("à" "" :string)
+ ("ñ" "" :string)
+ ("Ï" "" :string)
+ ("é" "" :string)
+ ("Ç" "" :string)
+ ("Ö" "" :string)
+ ("ç" "" :string)
+ ("ö" "" :string)
+ ("è" "" :string)
+ ("ô" "" :string)
+ ("Ô" "" :string)
+ ("È" "" :string)
+ ("Ë" "" :string)
+ ("ë" "" :string)
+ ("Ê" "" :string)
+ ("ê" "" :string)
+ ("æ" "" :string)
+ ("Æ" "" :string)
+ ("Œ" "" :string)
+ ("œ" "" :string)
+ ("z" "" :string)
+ ("C" "" :string)
+ ("r" "" :string)
+ ("R" "" :string)
+ ("Z" "" :string)
+ ("p" "" :string)
+ ("X" "" :string)
+ ("b" "" :string)
+ ("s" "" :string)
+ ("e" "" :string)
+ ("j" "" :string)
+ ("a" "" :string)
+ ("P" "" :string)
+ ("T" "" :string)
+ ("i" "" :string)
+ ("d" "" :string)
+ ("x" "" :string)
+ ("h" "" :string)
+ ("J" "" :string)
+ ("V" "" :string)
+ ("m" "" :string)
+ ("q" "" :string)
+ ("Q" "" :string)
+ ("y" "" :string)
+ ("u" "" :string)
+ ("g" "" :string)
+ ("t" "" :string)
+ ("o" "" :string)
+ ("N" "" :string)
+ ("M" "" :string)
+ ("l" "" :string)
+ ("D" "" :string)
+ ("c" "" :string)
+ ("A" "" :string)
+ ("H" "" :string)
+ ("U" "" :string)
+ ("S" "" :string)
+ ("v" "" :string)
+ ("f" "" :string)
+ ("B" "" :string)
+ ("W" "" :string)
+ ("n" "" :string)
+ ("L" "" :string)
+ ("I" "" :string)
+ ("F" "" :string)
+ ("E" "" :string)
+ ("K" "" :string)
+ ("O" "" :string)
+ ("G" "" :string)
+ ("w" "" :string)
+ ("Y" "" :string)
+ ("k" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-case"
+
+ :rules (("Þ" "8" :string)
+ ("ی" "8" :string)
+ ("È" "8" :string)
+ ("Ô" "8" :string)
+ ("Ö" "8" :string)
+ ("Ï" "8" :string)
+ ("Ç" "8" :string)
+ ("و" "8" :string)
+ ("Ñ" "8" :string)
+ ("É" "8" :string)
+ ("Ð" "8" :string)
+ ("Ê" "8" :string)
+ ("Ë" "8" :string)
+ ("À" "8" :string)
+ ("Œ" "89" :string)
+ ("Æ" "89" :string)
+ ("ö" "9" :string)
+ ("م" "9" :string)
+ ("آ" "9" :string)
+ ("ض" "9" :string)
+ ("ک" "9" :string)
+ ("ح" "9" :string)
+ ("ç" "9" :string)
+ ("د" "9" :string)
+ ("ط" "9" :string)
+ ("ا" "9" :string)
+ ("ن" "9" :string)
+ ("þ" "9" :string)
+ ("ل" "9" :string)
+ ("گ" "9" :string)
+ ("ج" "9" :string)
+ ("ô" "9" :string)
+ ("é" "9" :string)
+ ("ئ" "9" :string)
+ ("ژ" "9" :string)
+ ("ê" "9" :string)
+ ("ت" "9" :string)
+ ("à" "9" :string)
+ ("ñ" "9" :string)
+ ("ش" "9" :string)
+ ("ë" "9" :string)
+ ("ق" "9" :string)
+ ("ؤ" "9" :string)
+ ("ر" "9" :string)
+ ("أ" "9" :string)
+ ("ص" "9" :string)
+ ("چ" "9" :string)
+ ("ث" "9" :string)
+ ("ð" "9" :string)
+ ("ع" "9" :string)
+ ("ز" "9" :string)
+ ("ب" "9" :string)
+ ("ف" "9" :string)
+ ("خ" "9" :string)
+ ("ï" "9" :string)
+ ("ذ" "9" :string)
+ ("غ" "9" :string)
+ ("ظ" "9" :string)
+ ("س" "9" :string)
+ ("è" "9" :string)
+ ("پ" "9" :string)
+ ("ه" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("Y" "8" :string)
+ ("G" "8" :string)
+ ("O" "8" :string)
+ ("F" "8" :string)
+ ("K" "8" :string)
+ ("E" "8" :string)
+ ("L" "8" :string)
+ ("I" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("H" "8" :string)
+ ("A" "8" :string)
+ ("S" "8" :string)
+ ("U" "8" :string)
+ ("M" "8" :string)
+ ("D" "8" :string)
+ ("N" "8" :string)
+ ("J" "8" :string)
+ ("V" "8" :string)
+ ("Q" "8" :string)
+ ("T" "8" :string)
+ ("P" "8" :string)
+ ("X" "8" :string)
+ ("R" "8" :string)
+ ("Z" "8" :string)
+ ("C" "8" :string)
+ ("k" "9" :string)
+ ("w" "9" :string)
+ ("n" "9" :string)
+ ("f" "9" :string)
+ ("v" "9" :string)
+ ("l" "9" :string)
+ ("c" "9" :string)
+ ("y" "9" :string)
+ ("o" "9" :string)
+ ("t" "9" :string)
+ ("u" "9" :string)
+ ("g" "9" :string)
+ ("h" "9" :string)
+ ("m" "9" :string)
+ ("q" "9" :string)
+ ("d" "9" :string)
+ ("x" "9" :string)
+ ("a" "9" :string)
+ ("i" "9" :string)
+ ("e" "9" :string)
+ ("j" "9" :string)
+ ("s" "9" :string)
+ ("b" "9" :string)
+ ("p" "9" :string)
+ ("z" "9" :string)
+ ("r" "9" :string)
+ ))
+
+(define-rule-set "pe-ignore-special"
+
+ :rules (("‌" "" :string)
+ ("ُ" "" :string)
+ ("َ" "" :string)
+ ("ً" "" :string)
+ ("ٌ" "" :string)
+ ("ٍ" "" :string)
+ ("ـ" "" :string)
+ ("ء" "" :string)
+ ("»" "" :string)
+ ("ْ" "" :string)
+ ("ٔ" "" :string)
+ ("«" "" :string)
+ ("ِ" "" :string)
+ ("ّ" "" :string)
+ ("-" "" :string)
+ ("!" "" :string)
+ ("." "" :string)
+ ("'" "" :string)
+ ("{" "" :string)
+ ("?" "" :string)
+ ("}" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-special"
+
+ :rules (("‌" "" :string)
+ ("ش" "" :string)
+ ("ë" "" :string)
+ ("à" "" :string)
+ ("ؤ" "" :string)
+ ("ر" "" :string)
+ ("ô" "" :string)
+ ("ئ" "" :string)
+ ("ژ" "" :string)
+ ("Ç" "" :string)
+ ("د" "" :string)
+ ("ط" "" :string)
+ ("Ô" "" :string)
+ ("ا" "" :string)
+ ("Ö" "" :string)
+ ("þ" "" :string)
+ ("ی" "" :string)
+ ("Þ" "" :string)
+ ("ö" "" :string)
+ ("آ" "" :string)
+ ("ک" "" :string)
+ ("ï" "" :string)
+ ("ذ" "" :string)
+ ("ظ" "" :string)
+ ("è" "" :string)
+ ("ه" "" :string)
+ ("ð" "" :string)
+ ("ع" "" :string)
+ ("ز" "" :string)
+ ("ب" "" :string)
+ ("Ë" "" :string)
+ ("خ" "" :string)
+ ("ص" "" :string)
+ ("چ" "" :string)
+ ("ñ" "" :string)
+ ("ق" "" :string)
+ ("أ" "" :string)
+ ("ل" "" :string)
+ ("گ" "" :string)
+ ("ج" "" :string)
+ ("é" "" :string)
+ ("Ï" "" :string)
+ ("و" "" :string)
+ ("ت" "" :string)
+ ("ê" "" :string)
+ ("ç" "" :string)
+ ("ن" "" :string)
+ ("È" "" :string)
+ ("م" "" :string)
+ ("ض" "" :string)
+ ("ح" "" :string)
+ ("غ" "" :string)
+ ("پ" "" :string)
+ ("س" "" :string)
+ ("Ê" "" :string)
+ ("ف" "" :string)
+ ("À" "" :string)
+ ("Ñ" "" :string)
+ ("É" "" :string)
+ ("ث" "" :string)
+ ("Ð" "" :string)
+ ("œ" "" :string)
+ ("Æ" "" :string)
+ ("Œ" "" :string)
+ ("æ" "" :string)
+ ("ّ" "" :string)
+ ("َ" "" :string)
+ ("ِ" "" :string)
+ ("ُ" "" :string)
+ ("ً" "" :string)
+ ("ٍ" "" :string)
+ ("ٌ" "" :string)
+ ("ْ" "" :string)
+ ("ٔ" "" :string)
+ ("ء" "" :string)
+ ("«" "" :string)
+ ("»" "" :string)
+ ("ـ" "" :string)
+ ("?" "" :string)
+ ("!" "" :string)
+ ("." "" :string)
+ ("H" "" :string)
+ ("S" "" :string)
+ ("l" "" :string)
+ ("M" "" :string)
+ ("B" "" :string)
+ ("W" "" :string)
+ ("v" "" :string)
+ ("F" "" :string)
+ ("K" "" :string)
+ ("I" "" :string)
+ ("R" "" :string)
+ ("Z" "" :string)
+ ("C" "" :string)
+ ("r" "" :string)
+ ("s" "" :string)
+ ("d" "" :string)
+ ("x" "" :string)
+ ("T" "" :string)
+ ("P" "" :string)
+ ("i" "" :string)
+ ("y" "" :string)
+ ("J" "" :string)
+ ("q" "" :string)
+ ("m" "" :string)
+ ("A" "" :string)
+ ("U" "" :string)
+ ("N" "" :string)
+ ("D" "" :string)
+ ("c" "" :string)
+ ("f" "" :string)
+ ("E" "" :string)
+ ("L" "" :string)
+ ("n" "" :string)
+ ("k" "" :string)
+ ("Y" "" :string)
+ ("G" "" :string)
+ ("O" "" :string)
+ ("w" "" :string)
+ ("z" "" :string)
+ ("e" "" :string)
+ ("j" "" :string)
+ ("b" "" :string)
+ ("p" "" :string)
+ ("X" "" :string)
+ ("a" "" :string)
+ ("t" "" :string)
+ ("o" "" :string)
+ ("u" "" :string)
+ ("g" "" :string)
+ ("h" "" :string)
+ ("V" "" :string)
+ ("Q" "" :string)
+ ("-" "" :string)
+ ("'" "" :string)
+ ("{" "" :string)
+ ("}" "" :string)
+ ))
+
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy b/indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy
new file mode 100644
index 0000000000..54153d737f
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy
@@ -0,0 +1,10 @@
+(require "lang/persian/variant2-utf8.xdy")
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("pe-alphabetize" "pe-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("pe-resolve-diacritics" "pe-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("pe-resolve-case" "pe-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("pe-resolve-special"))
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy b/indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy
new file mode 100644
index 0000000000..d6d1878f59
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy
@@ -0,0 +1,92 @@
+(require "lang/persian/variant2-utf8.xdy")
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("pe-alphabetize" "pe-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("pe-resolve-diacritics" "pe-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("pe-resolve-case" "pe-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("pe-resolve-special"))
+
+;; define other stuff
+(define-attributes ("default"))
+
+;; The description of the location-classes.
+;; Add more location classes as needed.
+
+(define-location-class "arabic-page-numbers" ("arabic-numbers"))
+(define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
+(define-location-class "alpha-page-numbers" ("alpha"))
+(define-location-class "Alpha-page-numbers" ("ALPHA"))
+
+;; The most frequently used cross reference class "see". Add more, if
+;; necessary.
+
+(define-crossref-class "see")
+(markup-crossref-list :open "\see{" :close "}{}" :class "see")
+
+;; In makeindex: page_precedence <string> "rnaRA"
+;; List all location classes appearing in your document.
+
+(define-location-class-order ("roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "see"))
+
+
+;; preamble <string> "\\begin{theindex}\n"
+;; postamble <string> "\n\n\\end{theindex}\n"
+
+(markup-index :open "\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+;; These specifiers are not directly supported via a command-line
+;; switch as in makeindex. Add the appropriate markup-commands into
+;; the preamble.
+
+;; setpage_prefix <string> "~n \setcounter{page}{"
+;; setpage_suffix <string> "}~n"
+
+;; group_skip <string> "~n~n \indexspace~n"
+
+(markup-letter-group-list :sep "~n~n \indexspace~n")
+
+;; even though we comment out (%) the letter-group heading,
+;; the following is useful if you want to check the .ind-file
+(markup-letter-group :open-head "~n % ")
+
+;; The indexentries (item_<..> specifiers)
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+;; Location-references
+
+;; delim_0 <string> ", "
+;; delim_1 <string> ", "
+;; delim_2 <string> ", "
+
+(markup-locclass-list :open ", " :sep ", ")
+
+;; delim_n <string> ", "
+
+(markup-locref-list :sep ", ")
+
+;; delim_r <string> "--"
+
+(markup-range :sep "--")
+
+;; That's all ;-)
+
+
+;; End
+
+;; Local Variables:
+;; mode: lisp
+;; End:
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in
new file mode 100644
index 0000000000..9c7fdfaa29
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "Two";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['آ',['آ']],
+['ا',['أ']],
+['ا',['ا']],
+['ب',['ب']],
+['پ',['پ']],
+['ت',['ت']],
+['ث',['ث']],
+['ج',['ج']],
+['چ',['چ']],
+['ح',['ح']],
+['خ',['خ']],
+['د',['د']],
+['ذ',['ذ']],
+['ر',['ر']],
+['ز',['ز']],
+['ژ',['ژ']],
+['س',['س']],
+['ش',['ش']],
+['ص',['ص']],
+['ض',['ض']],
+['ط',['ط']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['ف',['ف']],
+['ق',['ق']],
+['ک',['ک']],
+['گ',['گ']],
+['ل',['ل']],
+['م',['م']],
+['ن',['ن']],
+['و',['ؤ','و']],
+['ه',['ه']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+['B', ['b','B']],
+['C', ['c','C'],['ç','Ç']],
+['D', ['d','D'],['ð','Ð']],
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+['H', ['h','H']],
+['I', ['i','I'],['ï','Ï']],
+['J', ['j','J']],
+['K', ['k','K']],
+['L', ['l','L']],
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+['P', ['p','P']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+['S', ['s','S']],
+['T', ['t','T']],
+['U', ['u','U']],
+['V', ['v','V']],
+['W', ['w','W']],
+['X', ['x','X']],
+['Y', ['y','Y']],
+['Z', ['z','Z']],
+['Þ', ['þ','Þ']],
+];
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['œ','Œ'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}','ّ','َ','ِ','ُ','ً','ٍ','ٌ','ْ','ٔ','ء','‌','«','»','ـ');
+
+do 'make-rules.pl';
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy b/indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy
new file mode 100644
index 0000000000..e0e73044c4
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy
@@ -0,0 +1,590 @@
+;; Rules for xindy; generated by make-rules.pl
+;; language: Persian
+
+(define-letter-group "آ" :prefixes (""))
+(define-letter-group "ا" :after "آ" :prefixes ("" ""))
+(define-letter-group "ب" :after "ا" :prefixes (""))
+(define-letter-group "پ" :after "ب" :prefixes (""))
+(define-letter-group "ت" :after "پ" :prefixes (""))
+(define-letter-group "ث" :after "ت" :prefixes (""))
+(define-letter-group "ج" :after "ث" :prefixes (""))
+(define-letter-group "چ" :after "ج" :prefixes (""))
+(define-letter-group "ح" :after "چ" :prefixes (""))
+(define-letter-group "خ" :after "ح" :prefixes (""))
+(define-letter-group "د" :after "خ" :prefixes (""))
+(define-letter-group "ذ" :after "د" :prefixes (""))
+(define-letter-group "ر" :after "ذ" :prefixes (""))
+(define-letter-group "ز" :after "ر" :prefixes (""))
+(define-letter-group "ژ" :after "ز" :prefixes (""))
+(define-letter-group "س" :after "ژ" :prefixes (""))
+(define-letter-group "ش" :after "س" :prefixes (""))
+(define-letter-group "ص" :after "ش" :prefixes (""))
+(define-letter-group "ض" :after "ص" :prefixes (""))
+(define-letter-group "ط" :after "ض" :prefixes (""))
+(define-letter-group "ظ" :after "ط" :prefixes (""))
+(define-letter-group "ع" :after "ظ" :prefixes (""))
+(define-letter-group "غ" :after "ع" :prefixes (""))
+(define-letter-group "ف" :after "غ" :prefixes (""))
+(define-letter-group "ق" :after "ف" :prefixes (""))
+(define-letter-group "ک" :after "ق" :prefixes (""))
+(define-letter-group "گ" :after "ک" :prefixes (""))
+(define-letter-group "ل" :after "گ" :prefixes (""))
+(define-letter-group "م" :after "ل" :prefixes (""))
+(define-letter-group "ن" :after "م" :prefixes (""))
+(define-letter-group "و" :after "ن" :prefixes (""))
+(define-letter-group "ه" :after "و" :prefixes (""))
+(define-letter-group "ی" :after "ه" :prefixes (""))
+(define-letter-group "A" :after "ی" :prefixes (""))
+(define-letter-group "B" :after "A" :prefixes (""))
+(define-letter-group "C" :after "B" :prefixes (""))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes (""))
+(define-letter-group "F" :after "E" :prefixes (""))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes (""))
+(define-letter-group "I" :after "H" :prefixes (""))
+(define-letter-group "J" :after "I" :prefixes (""))
+(define-letter-group "K" :after "J" :prefixes (""))
+(define-letter-group "L" :after "K" :prefixes (""))
+(define-letter-group "M" :after "L" :prefixes (""))
+(define-letter-group "N" :after "M" :prefixes (""))
+(define-letter-group "O" :after "N" :prefixes (""))
+(define-letter-group "P" :after "O" :prefixes (""))
+(define-letter-group "Q" :after "P" :prefixes (""))
+(define-letter-group "R" :after "Q" :prefixes (""))
+(define-letter-group "S" :after "R" :prefixes (""))
+(define-letter-group "T" :after "S" :prefixes (""))
+(define-letter-group "U" :after "T" :prefixes (""))
+(define-letter-group "V" :after "U" :prefixes (""))
+(define-letter-group "W" :after "V" :prefixes (""))
+(define-letter-group "X" :after "W" :prefixes (""))
+(define-letter-group "Y" :after "X" :prefixes (""))
+(define-letter-group "Z" :after "Y" :prefixes (""))
+(define-letter-group "Þ" :after "Z" :prefixes (""))
+
+(define-rule-set "pe-alphabetize"
+
+ :rules (("آ" "" :string)
+ ("أ" "" :string)
+ ("ا" "" :string)
+ ("ب" "" :string)
+ ("پ" "" :string)
+ ("ت" "" :string)
+ ("ث" "" :string)
+ ("ج" "" :string)
+ ("چ" "" :string)
+ ("ح" "" :string)
+ ("خ" "" :string)
+ ("د" "" :string)
+ ("ذ" "" :string)
+ ("ر" "" :string)
+ ("ز" "" :string)
+ ("ژ" "" :string)
+ ("س" "" :string)
+ ("ش" "" :string)
+ ("ص" "" :string)
+ ("ض" "" :string)
+ ("ط" "" :string)
+ ("ظ" "" :string)
+ ("ع" "" :string)
+ ("غ" "" :string)
+ ("ف" "" :string)
+ ("ق" "" :string)
+ ("ک" "" :string)
+ ("گ" "" :string)
+ ("ل" "" :string)
+ ("م" "" :string)
+ ("ن" "" :string)
+ ("ؤ" "" :string)
+ ("و" "" :string)
+ ("ه" "" :string)
+ ("ئ" "" :string)
+ ("ی" "" :string)
+ ("À" "" :string)
+ ("à" "" :string)
+ ("Æ" "" :string)
+ ("æ" "" :string)
+ ("Ç" "" :string)
+ ("ç" "" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("è" "" :string)
+ ("Ë" "" :string)
+ ("É" "" :string)
+ ("ë" "" :string)
+ ("È" "" :string)
+ ("Ê" "" :string)
+ ("ê" "" :string)
+ ("é" "" :string)
+ ("ï" "" :string)
+ ("Ï" "" :string)
+ ("Ñ" "" :string)
+ ("ñ" "" :string)
+ ("ô" "" :string)
+ ("ö" "" :string)
+ ("Ö" "" :string)
+ ("Ô" "" :string)
+ ("œ" "" :string)
+ ("Œ" "" :string)
+ ("Þ" "" :string)
+ ("þ" "" :string)
+ ("a" "" :string)
+ ("A" "" :string)
+ ("b" "" :string)
+ ("B" "" :string)
+ ("C" "" :string)
+ ("c" "" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("e" "" :string)
+ ("E" "" :string)
+ ("F" "" :string)
+ ("f" "" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("H" "" :string)
+ ("h" "" :string)
+ ("i" "" :string)
+ ("I" "" :string)
+ ("J" "" :string)
+ ("j" "" :string)
+ ("K" "" :string)
+ ("k" "" :string)
+ ("l" "" :string)
+ ("L" "" :string)
+ ("m" "" :string)
+ ("M" "" :string)
+ ("n" "" :string)
+ ("N" "" :string)
+ ("O" "" :string)
+ ("o" "" :string)
+ ("P" "" :string)
+ ("p" "" :string)
+ ("q" "" :string)
+ ("Q" "" :string)
+ ("R" "" :string)
+ ("r" "" :string)
+ ("s" "" :string)
+ ("S" "" :string)
+ ("T" "" :string)
+ ("t" "" :string)
+ ("u" "" :string)
+ ("U" "" :string)
+ ("V" "" :string)
+ ("v" "" :string)
+ ("w" "" :string)
+ ("W" "" :string)
+ ("X" "" :string)
+ ("x" "" :string)
+ ("Y" "" :string)
+ ("y" "" :string)
+ ("Z" "" :string)
+ ("z" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-diacritics"
+
+ :rules (("Þ" "" :string)
+ ("ؤ" "" :string)
+ ("ل" "" :string)
+ ("ع" "" :string)
+ ("ر" "" :string)
+ ("ط" "" :string)
+ ("ض" "" :string)
+ ("ت" "" :string)
+ ("ق" "" :string)
+ ("پ" "" :string)
+ ("ح" "" :string)
+ ("ئ" "" :string)
+ ("آ" "" :string)
+ ("ف" "" :string)
+ ("د" "" :string)
+ ("چ" "" :string)
+ ("خ" "" :string)
+ ("ش" "" :string)
+ ("گ" "" :string)
+ ("ج" "" :string)
+ ("ن" "" :string)
+ ("ظ" "" :string)
+ ("م" "" :string)
+ ("ز" "" :string)
+ ("ژ" "" :string)
+ ("ه" "" :string)
+ ("ب" "" :string)
+ ("و" "" :string)
+ ("غ" "" :string)
+ ("ص" "" :string)
+ ("ذ" "" :string)
+ ("ث" "" :string)
+ ("أ" "" :string)
+ ("ک" "" :string)
+ ("ا" "" :string)
+ ("ی" "" :string)
+ ("س" "" :string)
+ ("þ" "" :string)
+ ("ö" "" :string)
+ ("É" "" :string)
+ ("à" "" :string)
+ ("Ñ" "" :string)
+ ("À" "" :string)
+ ("ï" "" :string)
+ ("é" "" :string)
+ ("Ð" "" :string)
+ ("ç" "" :string)
+ ("Ç" "" :string)
+ ("Ï" "" :string)
+ ("ð" "" :string)
+ ("Ö" "" :string)
+ ("ñ" "" :string)
+ ("ô" "" :string)
+ ("È" "" :string)
+ ("è" "" :string)
+ ("Ô" "" :string)
+ ("ë" "" :string)
+ ("Ë" "" :string)
+ ("ê" "" :string)
+ ("Ê" "" :string)
+ ("Æ" "" :string)
+ ("œ" "" :string)
+ ("æ" "" :string)
+ ("Œ" "" :string)
+ ("d" "" :string)
+ ("i" "" :string)
+ ("K" "" :string)
+ ("I" "" :string)
+ ("l" "" :string)
+ ("M" "" :string)
+ ("D" "" :string)
+ ("O" "" :string)
+ ("a" "" :string)
+ ("J" "" :string)
+ ("U" "" :string)
+ ("H" "" :string)
+ ("F" "" :string)
+ ("V" "" :string)
+ ("v" "" :string)
+ ("T" "" :string)
+ ("q" "" :string)
+ ("u" "" :string)
+ ("y" "" :string)
+ ("m" "" :string)
+ ("s" "" :string)
+ ("n" "" :string)
+ ("Y" "" :string)
+ ("e" "" :string)
+ ("p" "" :string)
+ ("W" "" :string)
+ ("B" "" :string)
+ ("c" "" :string)
+ ("z" "" :string)
+ ("Q" "" :string)
+ ("h" "" :string)
+ ("r" "" :string)
+ ("C" "" :string)
+ ("A" "" :string)
+ ("x" "" :string)
+ ("G" "" :string)
+ ("o" "" :string)
+ ("S" "" :string)
+ ("k" "" :string)
+ ("t" "" :string)
+ ("w" "" :string)
+ ("E" "" :string)
+ ("f" "" :string)
+ ("g" "" :string)
+ ("L" "" :string)
+ ("N" "" :string)
+ ("R" "" :string)
+ ("j" "" :string)
+ ("X" "" :string)
+ ("Z" "" :string)
+ ("b" "" :string)
+ ("P" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-case"
+
+ :rules (("À" "8" :string)
+ ("Ë" "8" :string)
+ ("È" "8" :string)
+ ("Ñ" "8" :string)
+ ("É" "8" :string)
+ ("Þ" "8" :string)
+ ("Ê" "8" :string)
+ ("Ö" "8" :string)
+ ("ی" "8" :string)
+ ("Ï" "8" :string)
+ ("و" "8" :string)
+ ("Ç" "8" :string)
+ ("Ð" "8" :string)
+ ("Ô" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ش" "9" :string)
+ ("خ" "9" :string)
+ ("چ" "9" :string)
+ ("ظ" "9" :string)
+ ("è" "9" :string)
+ ("ج" "9" :string)
+ ("ن" "9" :string)
+ ("گ" "9" :string)
+ ("آ" "9" :string)
+ ("د" "9" :string)
+ ("ف" "9" :string)
+ ("ئ" "9" :string)
+ ("ï" "9" :string)
+ ("ح" "9" :string)
+ ("پ" "9" :string)
+ ("ق" "9" :string)
+ ("ô" "9" :string)
+ ("ë" "9" :string)
+ ("ط" "9" :string)
+ ("à" "9" :string)
+ ("ض" "9" :string)
+ ("ت" "9" :string)
+ ("ع" "9" :string)
+ ("ل" "9" :string)
+ ("ر" "9" :string)
+ ("ö" "9" :string)
+ ("ؤ" "9" :string)
+ ("ê" "9" :string)
+ ("س" "9" :string)
+ ("ñ" "9" :string)
+ ("þ" "9" :string)
+ ("ا" "9" :string)
+ ("أ" "9" :string)
+ ("ک" "9" :string)
+ ("ث" "9" :string)
+ ("ð" "9" :string)
+ ("ص" "9" :string)
+ ("غ" "9" :string)
+ ("ذ" "9" :string)
+ ("ب" "9" :string)
+ ("ç" "9" :string)
+ ("ز" "9" :string)
+ ("ژ" "9" :string)
+ ("م" "9" :string)
+ ("ه" "9" :string)
+ ("é" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("Y" "8" :string)
+ ("V" "8" :string)
+ ("F" "8" :string)
+ ("T" "8" :string)
+ ("O" "8" :string)
+ ("H" "8" :string)
+ ("U" "8" :string)
+ ("J" "8" :string)
+ ("M" "8" :string)
+ ("I" "8" :string)
+ ("K" "8" :string)
+ ("D" "8" :string)
+ ("R" "8" :string)
+ ("P" "8" :string)
+ ("Z" "8" :string)
+ ("X" "8" :string)
+ ("N" "8" :string)
+ ("L" "8" :string)
+ ("E" "8" :string)
+ ("G" "8" :string)
+ ("A" "8" :string)
+ ("S" "8" :string)
+ ("C" "8" :string)
+ ("Q" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("e" "9" :string)
+ ("n" "9" :string)
+ ("s" "9" :string)
+ ("y" "9" :string)
+ ("m" "9" :string)
+ ("u" "9" :string)
+ ("q" "9" :string)
+ ("v" "9" :string)
+ ("a" "9" :string)
+ ("l" "9" :string)
+ ("d" "9" :string)
+ ("i" "9" :string)
+ ("j" "9" :string)
+ ("b" "9" :string)
+ ("g" "9" :string)
+ ("w" "9" :string)
+ ("t" "9" :string)
+ ("f" "9" :string)
+ ("x" "9" :string)
+ ("k" "9" :string)
+ ("o" "9" :string)
+ ("r" "9" :string)
+ ("h" "9" :string)
+ ("c" "9" :string)
+ ("z" "9" :string)
+ ("p" "9" :string)
+ ))
+
+(define-rule-set "pe-ignore-special"
+
+ :rules (("‌" "" :string)
+ ("ِ" "" :string)
+ ("ـ" "" :string)
+ ("َ" "" :string)
+ ("ٌ" "" :string)
+ ("ّ" "" :string)
+ ("ٍ" "" :string)
+ ("ُ" "" :string)
+ ("ْ" "" :string)
+ ("ء" "" :string)
+ ("»" "" :string)
+ ("ٔ" "" :string)
+ ("ً" "" :string)
+ ("«" "" :string)
+ ("{" "" :string)
+ ("." "" :string)
+ ("?" "" :string)
+ ("-" "" :string)
+ ("!" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-special"
+
+ :rules (("‌" "" :string)
+ ("Ô" "" :string)
+ ("Ð" "" :string)
+ ("ç" "" :string)
+ ("ز" "" :string)
+ ("ه" "" :string)
+ ("Ç" "" :string)
+ ("غ" "" :string)
+ ("ص" "" :string)
+ ("ذ" "" :string)
+ ("ث" "" :string)
+ ("ð" "" :string)
+ ("Ö" "" :string)
+ ("س" "" :string)
+ ("þ" "" :string)
+ ("ê" "" :string)
+ ("Ê" "" :string)
+ ("ع" "" :string)
+ ("ö" "" :string)
+ ("ë" "" :string)
+ ("É" "" :string)
+ ("à" "" :string)
+ ("ت" "" :string)
+ ("È" "" :string)
+ ("ô" "" :string)
+ ("پ" "" :string)
+ ("Ë" "" :string)
+ ("ئ" "" :string)
+ ("آ" "" :string)
+ ("د" "" :string)
+ ("ف" "" :string)
+ ("ش" "" :string)
+ ("چ" "" :string)
+ ("خ" "" :string)
+ ("ج" "" :string)
+ ("ن" "" :string)
+ ("é" "" :string)
+ ("م" "" :string)
+ ("ژ" "" :string)
+ ("ب" "" :string)
+ ("و" "" :string)
+ ("Ï" "" :string)
+ ("ا" "" :string)
+ ("ک" "" :string)
+ ("أ" "" :string)
+ ("ی" "" :string)
+ ("ñ" "" :string)
+ ("ؤ" "" :string)
+ ("Þ" "" :string)
+ ("ل" "" :string)
+ ("ر" "" :string)
+ ("Ñ" "" :string)
+ ("ط" "" :string)
+ ("ض" "" :string)
+ ("ق" "" :string)
+ ("À" "" :string)
+ ("ح" "" :string)
+ ("ï" "" :string)
+ ("ظ" "" :string)
+ ("è" "" :string)
+ ("گ" "" :string)
+ ("Œ" "" :string)
+ ("œ" "" :string)
+ ("æ" "" :string)
+ ("Æ" "" :string)
+ ("ّ" "" :string)
+ ("َ" "" :string)
+ ("ِ" "" :string)
+ ("ُ" "" :string)
+ ("ً" "" :string)
+ ("ٍ" "" :string)
+ ("ٌ" "" :string)
+ ("ْ" "" :string)
+ ("ٔ" "" :string)
+ ("ء" "" :string)
+ ("«" "" :string)
+ ("»" "" :string)
+ ("ـ" "" :string)
+ ("?" "" :string)
+ ("!" "" :string)
+ ("." "" :string)
+ ("c" "" :string)
+ ("p" "" :string)
+ ("Q" "" :string)
+ ("C" "" :string)
+ ("r" "" :string)
+ ("x" "" :string)
+ ("k" "" :string)
+ ("o" "" :string)
+ ("w" "" :string)
+ ("t" "" :string)
+ ("N" "" :string)
+ ("R" "" :string)
+ ("j" "" :string)
+ ("Z" "" :string)
+ ("P" "" :string)
+ ("d" "" :string)
+ ("I" "" :string)
+ ("M" "" :string)
+ ("l" "" :string)
+ ("a" "" :string)
+ ("U" "" :string)
+ ("F" "" :string)
+ ("v" "" :string)
+ ("T" "" :string)
+ ("Y" "" :string)
+ ("z" "" :string)
+ ("B" "" :string)
+ ("W" "" :string)
+ ("h" "" :string)
+ ("A" "" :string)
+ ("G" "" :string)
+ ("S" "" :string)
+ ("f" "" :string)
+ ("E" "" :string)
+ ("g" "" :string)
+ ("L" "" :string)
+ ("b" "" :string)
+ ("X" "" :string)
+ ("i" "" :string)
+ ("K" "" :string)
+ ("D" "" :string)
+ ("O" "" :string)
+ ("H" "" :string)
+ ("J" "" :string)
+ ("V" "" :string)
+ ("q" "" :string)
+ ("u" "" :string)
+ ("y" "" :string)
+ ("m" "" :string)
+ ("s" "" :string)
+ ("n" "" :string)
+ ("e" "" :string)
+ ("-" "" :string)
+ ("'" "" :string)
+ ("{" "" :string)
+ ("}" "" :string)
+ ))
+
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy b/indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy
new file mode 100644
index 0000000000..7f44812017
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy
@@ -0,0 +1,10 @@
+(require "lang/persian/variant3-utf8.xdy")
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("pe-alphabetize" "pe-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("pe-resolve-diacritics" "pe-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("pe-resolve-case" "pe-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("pe-resolve-special"))
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy b/indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy
new file mode 100644
index 0000000000..ad7cbf91dd
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy
@@ -0,0 +1,92 @@
+(require "lang/persian/variant3-utf8.xdy")
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("pe-alphabetize" "pe-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("pe-resolve-diacritics" "pe-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("pe-resolve-case" "pe-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("pe-resolve-special"))
+
+;; define other stuff
+(define-attributes ("default"))
+
+;; The description of the location-classes.
+;; Add more location classes as needed.
+
+(define-location-class "arabic-page-numbers" ("arabic-numbers"))
+(define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
+(define-location-class "alpha-page-numbers" ("alpha"))
+(define-location-class "Alpha-page-numbers" ("ALPHA"))
+
+;; The most frequently used cross reference class "see". Add more, if
+;; necessary.
+
+(define-crossref-class "see")
+(markup-crossref-list :open "\see{" :close "}{}" :class "see")
+
+;; In makeindex: page_precedence <string> "rnaRA"
+;; List all location classes appearing in your document.
+
+(define-location-class-order ("roman-page-numbers"
+ "arabic-page-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "see"))
+
+
+;; preamble <string> "\\begin{theindex}\n"
+;; postamble <string> "\n\n\\end{theindex}\n"
+
+(markup-index :open "\begin{theindex}~n"
+ :close "~n~n\end{theindex}~n"
+ :tree)
+
+;; These specifiers are not directly supported via a command-line
+;; switch as in makeindex. Add the appropriate markup-commands into
+;; the preamble.
+
+;; setpage_prefix <string> "~n \setcounter{page}{"
+;; setpage_suffix <string> "}~n"
+
+;; group_skip <string> "~n~n \indexspace~n"
+
+(markup-letter-group-list :sep "~n~n \indexspace~n")
+
+;; even though we comment out (%) the letter-group heading,
+;; the following is useful if you want to check the .ind-file
+(markup-letter-group :open-head "~n % ")
+
+;; The indexentries (item_<..> specifiers)
+
+(markup-indexentry :open "~n \item " :depth 0)
+(markup-indexentry :open "~n \subitem " :depth 1)
+(markup-indexentry :open "~n \subsubitem " :depth 2)
+
+;; Location-references
+
+;; delim_0 <string> ", "
+;; delim_1 <string> ", "
+;; delim_2 <string> ", "
+
+(markup-locclass-list :open ", " :sep ", ")
+
+;; delim_n <string> ", "
+
+(markup-locref-list :sep ", ")
+
+;; delim_r <string> "--"
+
+(markup-range :sep "--")
+
+;; That's all ;-)
+
+
+;; End
+
+;; Local Variables:
+;; mode: lisp
+;; End:
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in
new file mode 100644
index 0000000000..4f4d091451
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "Three";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['الف',['آ']],
+['الف',['أ']],
+['الف',['ا']],
+['ب',['ب']],
+['پ',['پ']],
+['ت',['ت']],
+['ث',['ث']],
+['ج',['ج']],
+['چ',['چ']],
+['ح',['ح']],
+['خ',['خ']],
+['د',['د']],
+['ذ',['ذ']],
+['ر',['ر']],
+['ز',['ز']],
+['ژ',['ژ']],
+['س',['س']],
+['ش',['ش']],
+['ص',['ص']],
+['ض',['ض']],
+['ط',['ط']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['ف',['ف']],
+['ق',['ق']],
+['ک',['ک']],
+['گ',['گ']],
+['ل',['ل']],
+['م',['م']],
+['ن',['ن']],
+['و',['ؤ','و']],
+['ه',['ه']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+['B', ['b','B']],
+['C', ['c','C'],['ç','Ç']],
+['D', ['d','D'],['ð','Ð']],
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+['F', ['f','F']],
+['G', ['g','G']],
+['H', ['h','H']],
+['I', ['i','I'],['ï','Ï']],
+['J', ['j','J']],
+['K', ['k','K']],
+['L', ['l','L']],
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+['P', ['p','P']],
+['Q', ['q','Q']],
+['R', ['r','R']],
+['S', ['s','S']],
+['T', ['t','T']],
+['U', ['u','U']],
+['V', ['v','V']],
+['W', ['w','W']],
+['X', ['x','X']],
+['Y', ['y','Y']],
+['Z', ['z','Z']],
+['Þ', ['þ','Þ']],
+];
+
+$sortcase = "Aa";
+#$sortcase = "aA";
+
+$ligatures = [
+[['æ','Æ'], 'after', [['a','e'], ['A','e']]],
+[['œ','Œ'], 'after', [['o','e'], ['O','e']]]
+];
+
+@special = ('?', '!', '.', 'letters', '-', '\'', '{', '}','ّ','َ','ِ','ُ','ً','ٍ','ٌ','ْ','ٔ','ء','‌','«','»','ـ');
+
+do 'make-rules.pl';
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy b/indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy
new file mode 100644
index 0000000000..b611539a13
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy
@@ -0,0 +1,589 @@
+;; Rules for xindy; generated by make-rules.pl
+;; language: Persian
+
+(define-letter-group "الف" :prefixes ("" "" ""))
+(define-letter-group "ب" :after "الف" :prefixes (""))
+(define-letter-group "پ" :after "ب" :prefixes (""))
+(define-letter-group "ت" :after "پ" :prefixes (""))
+(define-letter-group "ث" :after "ت" :prefixes (""))
+(define-letter-group "ج" :after "ث" :prefixes (""))
+(define-letter-group "چ" :after "ج" :prefixes (""))
+(define-letter-group "ح" :after "چ" :prefixes (""))
+(define-letter-group "خ" :after "ح" :prefixes (""))
+(define-letter-group "د" :after "خ" :prefixes (""))
+(define-letter-group "ذ" :after "د" :prefixes (""))
+(define-letter-group "ر" :after "ذ" :prefixes (""))
+(define-letter-group "ز" :after "ر" :prefixes (""))
+(define-letter-group "ژ" :after "ز" :prefixes (""))
+(define-letter-group "س" :after "ژ" :prefixes (""))
+(define-letter-group "ش" :after "س" :prefixes (""))
+(define-letter-group "ص" :after "ش" :prefixes (""))
+(define-letter-group "ض" :after "ص" :prefixes (""))
+(define-letter-group "ط" :after "ض" :prefixes (""))
+(define-letter-group "ظ" :after "ط" :prefixes (""))
+(define-letter-group "ع" :after "ظ" :prefixes (""))
+(define-letter-group "غ" :after "ع" :prefixes (""))
+(define-letter-group "ف" :after "غ" :prefixes (""))
+(define-letter-group "ق" :after "ف" :prefixes (""))
+(define-letter-group "ک" :after "ق" :prefixes (""))
+(define-letter-group "گ" :after "ک" :prefixes (""))
+(define-letter-group "ل" :after "گ" :prefixes (""))
+(define-letter-group "م" :after "ل" :prefixes (""))
+(define-letter-group "ن" :after "م" :prefixes (""))
+(define-letter-group "و" :after "ن" :prefixes (""))
+(define-letter-group "ه" :after "و" :prefixes (""))
+(define-letter-group "ی" :after "ه" :prefixes (""))
+(define-letter-group "A" :after "ی" :prefixes (""))
+(define-letter-group "B" :after "A" :prefixes (""))
+(define-letter-group "C" :after "B" :prefixes (""))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes (""))
+(define-letter-group "F" :after "E" :prefixes (""))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes (""))
+(define-letter-group "I" :after "H" :prefixes (""))
+(define-letter-group "J" :after "I" :prefixes (""))
+(define-letter-group "K" :after "J" :prefixes (""))
+(define-letter-group "L" :after "K" :prefixes (""))
+(define-letter-group "M" :after "L" :prefixes (""))
+(define-letter-group "N" :after "M" :prefixes (""))
+(define-letter-group "O" :after "N" :prefixes (""))
+(define-letter-group "P" :after "O" :prefixes (""))
+(define-letter-group "Q" :after "P" :prefixes (""))
+(define-letter-group "R" :after "Q" :prefixes (""))
+(define-letter-group "S" :after "R" :prefixes (""))
+(define-letter-group "T" :after "S" :prefixes (""))
+(define-letter-group "U" :after "T" :prefixes (""))
+(define-letter-group "V" :after "U" :prefixes (""))
+(define-letter-group "W" :after "V" :prefixes (""))
+(define-letter-group "X" :after "W" :prefixes (""))
+(define-letter-group "Y" :after "X" :prefixes (""))
+(define-letter-group "Z" :after "Y" :prefixes (""))
+(define-letter-group "Þ" :after "Z" :prefixes (""))
+
+(define-rule-set "pe-alphabetize"
+
+ :rules (("آ" "" :string)
+ ("أ" "" :string)
+ ("ا" "" :string)
+ ("ب" "" :string)
+ ("پ" "" :string)
+ ("ت" "" :string)
+ ("ث" "" :string)
+ ("ج" "" :string)
+ ("چ" "" :string)
+ ("ح" "" :string)
+ ("خ" "" :string)
+ ("د" "" :string)
+ ("ذ" "" :string)
+ ("ر" "" :string)
+ ("ز" "" :string)
+ ("ژ" "" :string)
+ ("س" "" :string)
+ ("ش" "" :string)
+ ("ص" "" :string)
+ ("ض" "" :string)
+ ("ط" "" :string)
+ ("ظ" "" :string)
+ ("ع" "" :string)
+ ("غ" "" :string)
+ ("ف" "" :string)
+ ("ق" "" :string)
+ ("ک" "" :string)
+ ("گ" "" :string)
+ ("ل" "" :string)
+ ("م" "" :string)
+ ("ن" "" :string)
+ ("و" "" :string)
+ ("ؤ" "" :string)
+ ("ه" "" :string)
+ ("ئ" "" :string)
+ ("ی" "" :string)
+ ("à" "" :string)
+ ("À" "" :string)
+ ("æ" "" :string)
+ ("Æ" "" :string)
+ ("ç" "" :string)
+ ("Ç" "" :string)
+ ("Ð" "" :string)
+ ("ð" "" :string)
+ ("ê" "" :string)
+ ("è" "" :string)
+ ("ë" "" :string)
+ ("É" "" :string)
+ ("é" "" :string)
+ ("Ë" "" :string)
+ ("È" "" :string)
+ ("Ê" "" :string)
+ ("ï" "" :string)
+ ("Ï" "" :string)
+ ("ñ" "" :string)
+ ("Ñ" "" :string)
+ ("Ô" "" :string)
+ ("ô" "" :string)
+ ("ö" "" :string)
+ ("Ö" "" :string)
+ ("Œ" "" :string)
+ ("œ" "" :string)
+ ("Þ" "" :string)
+ ("þ" "" :string)
+ ("A" "" :string)
+ ("a" "" :string)
+ ("b" "" :string)
+ ("B" "" :string)
+ ("c" "" :string)
+ ("C" "" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("e" "" :string)
+ ("E" "" :string)
+ ("F" "" :string)
+ ("f" "" :string)
+ ("G" "" :string)
+ ("g" "" :string)
+ ("h" "" :string)
+ ("H" "" :string)
+ ("I" "" :string)
+ ("i" "" :string)
+ ("J" "" :string)
+ ("j" "" :string)
+ ("K" "" :string)
+ ("k" "" :string)
+ ("L" "" :string)
+ ("l" "" :string)
+ ("M" "" :string)
+ ("m" "" :string)
+ ("n" "" :string)
+ ("N" "" :string)
+ ("O" "" :string)
+ ("o" "" :string)
+ ("P" "" :string)
+ ("p" "" :string)
+ ("Q" "" :string)
+ ("q" "" :string)
+ ("r" "" :string)
+ ("R" "" :string)
+ ("s" "" :string)
+ ("S" "" :string)
+ ("t" "" :string)
+ ("T" "" :string)
+ ("u" "" :string)
+ ("U" "" :string)
+ ("V" "" :string)
+ ("v" "" :string)
+ ("w" "" :string)
+ ("W" "" :string)
+ ("X" "" :string)
+ ("x" "" :string)
+ ("y" "" :string)
+ ("Y" "" :string)
+ ("Z" "" :string)
+ ("z" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-diacritics"
+
+ :rules (("پ" "" :string)
+ ("آ" "" :string)
+ ("ئ" "" :string)
+ ("ی" "" :string)
+ ("ه" "" :string)
+ ("و" "" :string)
+ ("ل" "" :string)
+ ("م" "" :string)
+ ("ن" "" :string)
+ ("ؤ" "" :string)
+ ("د" "" :string)
+ ("ظ" "" :string)
+ ("ض" "" :string)
+ ("ث" "" :string)
+ ("ق" "" :string)
+ ("ذ" "" :string)
+ ("س" "" :string)
+ ("ج" "" :string)
+ ("ع" "" :string)
+ ("ژ" "" :string)
+ ("خ" "" :string)
+ ("گ" "" :string)
+ ("þ" "" :string)
+ ("ر" "" :string)
+ ("ا" "" :string)
+ ("ح" "" :string)
+ ("ب" "" :string)
+ ("ز" "" :string)
+ ("ش" "" :string)
+ ("غ" "" :string)
+ ("أ" "" :string)
+ ("چ" "" :string)
+ ("ک" "" :string)
+ ("ف" "" :string)
+ ("ط" "" :string)
+ ("ت" "" :string)
+ ("Þ" "" :string)
+ ("ص" "" :string)
+ ("ð" "" :string)
+ ("Ï" "" :string)
+ ("Ð" "" :string)
+ ("Ñ" "" :string)
+ ("Ö" "" :string)
+ ("ï" "" :string)
+ ("é" "" :string)
+ ("ö" "" :string)
+ ("Ç" "" :string)
+ ("à" "" :string)
+ ("ç" "" :string)
+ ("É" "" :string)
+ ("À" "" :string)
+ ("ñ" "" :string)
+ ("È" "" :string)
+ ("è" "" :string)
+ ("ô" "" :string)
+ ("Ô" "" :string)
+ ("Ë" "" :string)
+ ("ë" "" :string)
+ ("Ê" "" :string)
+ ("ê" "" :string)
+ ("œ" "" :string)
+ ("Æ" "" :string)
+ ("æ" "" :string)
+ ("Œ" "" :string)
+ ("k" "" :string)
+ ("R" "" :string)
+ ("T" "" :string)
+ ("o" "" :string)
+ ("U" "" :string)
+ ("D" "" :string)
+ ("j" "" :string)
+ ("z" "" :string)
+ ("a" "" :string)
+ ("p" "" :string)
+ ("B" "" :string)
+ ("f" "" :string)
+ ("E" "" :string)
+ ("g" "" :string)
+ ("S" "" :string)
+ ("K" "" :string)
+ ("l" "" :string)
+ ("v" "" :string)
+ ("u" "" :string)
+ ("i" "" :string)
+ ("t" "" :string)
+ ("O" "" :string)
+ ("P" "" :string)
+ ("s" "" :string)
+ ("Y" "" :string)
+ ("Z" "" :string)
+ ("d" "" :string)
+ ("q" "" :string)
+ ("c" "" :string)
+ ("J" "" :string)
+ ("C" "" :string)
+ ("m" "" :string)
+ ("A" "" :string)
+ ("F" "" :string)
+ ("Q" "" :string)
+ ("y" "" :string)
+ ("r" "" :string)
+ ("n" "" :string)
+ ("M" "" :string)
+ ("W" "" :string)
+ ("x" "" :string)
+ ("G" "" :string)
+ ("N" "" :string)
+ ("X" "" :string)
+ ("w" "" :string)
+ ("e" "" :string)
+ ("L" "" :string)
+ ("h" "" :string)
+ ("b" "" :string)
+ ("H" "" :string)
+ ("I" "" :string)
+ ("V" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-case"
+
+ :rules (("ی" "8" :string)
+ ("Ï" "8" :string)
+ ("Ë" "8" :string)
+ ("È" "8" :string)
+ ("Ð" "8" :string)
+ ("و" "8" :string)
+ ("Ñ" "8" :string)
+ ("Ö" "8" :string)
+ ("Ê" "8" :string)
+ ("É" "8" :string)
+ ("À" "8" :string)
+ ("Ç" "8" :string)
+ ("Ô" "8" :string)
+ ("Þ" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ئ" "9" :string)
+ ("ه" "9" :string)
+ ("ð" "9" :string)
+ ("پ" "9" :string)
+ ("آ" "9" :string)
+ ("د" "9" :string)
+ ("ظ" "9" :string)
+ ("ض" "9" :string)
+ ("ث" "9" :string)
+ ("é" "9" :string)
+ ("ق" "9" :string)
+ ("ذ" "9" :string)
+ ("ö" "9" :string)
+ ("س" "9" :string)
+ ("ل" "9" :string)
+ ("ï" "9" :string)
+ ("م" "9" :string)
+ ("ن" "9" :string)
+ ("ؤ" "9" :string)
+ ("à" "9" :string)
+ ("ا" "9" :string)
+ ("ر" "9" :string)
+ ("ح" "9" :string)
+ ("ç" "9" :string)
+ ("ب" "9" :string)
+ ("ز" "9" :string)
+ ("ش" "9" :string)
+ ("غ" "9" :string)
+ ("ج" "9" :string)
+ ("ع" "9" :string)
+ ("ژ" "9" :string)
+ ("خ" "9" :string)
+ ("گ" "9" :string)
+ ("þ" "9" :string)
+ ("ط" "9" :string)
+ ("ñ" "9" :string)
+ ("ت" "9" :string)
+ ("ص" "9" :string)
+ ("أ" "9" :string)
+ ("چ" "9" :string)
+ ("ê" "9" :string)
+ ("è" "9" :string)
+ ("ô" "9" :string)
+ ("ک" "9" :string)
+ ("ف" "9" :string)
+ ("ë" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("D" "8" :string)
+ ("B" "8" :string)
+ ("E" "8" :string)
+ ("R" "8" :string)
+ ("T" "8" :string)
+ ("U" "8" :string)
+ ("O" "8" :string)
+ ("P" "8" :string)
+ ("S" "8" :string)
+ ("K" "8" :string)
+ ("J" "8" :string)
+ ("C" "8" :string)
+ ("A" "8" :string)
+ ("Z" "8" :string)
+ ("Y" "8" :string)
+ ("X" "8" :string)
+ ("L" "8" :string)
+ ("H" "8" :string)
+ ("I" "8" :string)
+ ("V" "8" :string)
+ ("F" "8" :string)
+ ("Q" "8" :string)
+ ("M" "8" :string)
+ ("W" "8" :string)
+ ("G" "8" :string)
+ ("N" "8" :string)
+ ("j" "9" :string)
+ ("z" "9" :string)
+ ("a" "9" :string)
+ ("p" "9" :string)
+ ("f" "9" :string)
+ ("k" "9" :string)
+ ("o" "9" :string)
+ ("l" "9" :string)
+ ("v" "9" :string)
+ ("u" "9" :string)
+ ("t" "9" :string)
+ ("i" "9" :string)
+ ("s" "9" :string)
+ ("g" "9" :string)
+ ("q" "9" :string)
+ ("c" "9" :string)
+ ("m" "9" :string)
+ ("d" "9" :string)
+ ("w" "9" :string)
+ ("e" "9" :string)
+ ("h" "9" :string)
+ ("b" "9" :string)
+ ("y" "9" :string)
+ ("r" "9" :string)
+ ("n" "9" :string)
+ ("x" "9" :string)
+ ))
+
+(define-rule-set "pe-ignore-special"
+
+ :rules (("‌" "" :string)
+ ("ٔ" "" :string)
+ ("ء" "" :string)
+ ("ُ" "" :string)
+ ("ٍ" "" :string)
+ ("ْ" "" :string)
+ ("ّ" "" :string)
+ ("«" "" :string)
+ ("ً" "" :string)
+ ("ٌ" "" :string)
+ ("َ" "" :string)
+ ("ـ" "" :string)
+ ("»" "" :string)
+ ("ِ" "" :string)
+ ("{" "" :string)
+ ("." "" :string)
+ ("-" "" :string)
+ ("!" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ("?" "" :string)
+ ))
+
+(define-rule-set "pe-resolve-special"
+
+ :rules (("‌" "" :string)
+ ("س" "" :string)
+ ("é" "" :string)
+ ("Ë" "" :string)
+ ("ن" "" :string)
+ ("م" "" :string)
+ ("ï" "" :string)
+ ("È" "" :string)
+ ("ئ" "" :string)
+ ("Ï" "" :string)
+ ("آ" "" :string)
+ ("پ" "" :string)
+ ("ص" "" :string)
+ ("ت" "" :string)
+ ("ñ" "" :string)
+ ("Ô" "" :string)
+ ("ë" "" :string)
+ ("ف" "" :string)
+ ("è" "" :string)
+ ("ô" "" :string)
+ ("ک" "" :string)
+ ("أ" "" :string)
+ ("ش" "" :string)
+ ("ز" "" :string)
+ ("ح" "" :string)
+ ("ç" "" :string)
+ ("É" "" :string)
+ ("گ" "" :string)
+ ("þ" "" :string)
+ ("خ" "" :string)
+ ("Ç" "" :string)
+ ("ج" "" :string)
+ ("ق" "" :string)
+ ("ذ" "" :string)
+ ("ö" "" :string)
+ ("ث" "" :string)
+ ("د" "" :string)
+ ("ظ" "" :string)
+ ("ض" "" :string)
+ ("Ê" "" :string)
+ ("ؤ" "" :string)
+ ("Ñ" "" :string)
+ ("Ö" "" :string)
+ ("Ð" "" :string)
+ ("و" "" :string)
+ ("ل" "" :string)
+ ("ه" "" :string)
+ ("ی" "" :string)
+ ("ð" "" :string)
+ ("Þ" "" :string)
+ ("ط" "" :string)
+ ("ê" "" :string)
+ ("چ" "" :string)
+ ("غ" "" :string)
+ ("ب" "" :string)
+ ("À" "" :string)
+ ("à" "" :string)
+ ("ر" "" :string)
+ ("ا" "" :string)
+ ("ع" "" :string)
+ ("ژ" "" :string)
+ ("Œ" "" :string)
+ ("æ" "" :string)
+ ("Æ" "" :string)
+ ("œ" "" :string)
+ ("ّ" "" :string)
+ ("َ" "" :string)
+ ("ِ" "" :string)
+ ("ُ" "" :string)
+ ("ً" "" :string)
+ ("ٍ" "" :string)
+ ("ٌ" "" :string)
+ ("ْ" "" :string)
+ ("ٔ" "" :string)
+ ("ء" "" :string)
+ ("«" "" :string)
+ ("»" "" :string)
+ ("ـ" "" :string)
+ ("?" "" :string)
+ ("!" "" :string)
+ ("." "" :string)
+ ("P" "" :string)
+ ("t" "" :string)
+ ("v" "" :string)
+ ("u" "" :string)
+ ("l" "" :string)
+ ("K" "" :string)
+ ("S" "" :string)
+ ("B" "" :string)
+ ("f" "" :string)
+ ("p" "" :string)
+ ("D" "" :string)
+ ("j" "" :string)
+ ("a" "" :string)
+ ("o" "" :string)
+ ("k" "" :string)
+ ("I" "" :string)
+ ("H" "" :string)
+ ("e" "" :string)
+ ("X" "" :string)
+ ("G" "" :string)
+ ("N" "" :string)
+ ("x" "" :string)
+ ("y" "" :string)
+ ("n" "" :string)
+ ("M" "" :string)
+ ("F" "" :string)
+ ("C" "" :string)
+ ("q" "" :string)
+ ("s" "" :string)
+ ("i" "" :string)
+ ("O" "" :string)
+ ("g" "" :string)
+ ("E" "" :string)
+ ("z" "" :string)
+ ("T" "" :string)
+ ("U" "" :string)
+ ("R" "" :string)
+ ("V" "" :string)
+ ("h" "" :string)
+ ("b" "" :string)
+ ("w" "" :string)
+ ("L" "" :string)
+ ("W" "" :string)
+ ("Q" "" :string)
+ ("r" "" :string)
+ ("A" "" :string)
+ ("J" "" :string)
+ ("m" "" :string)
+ ("c" "" :string)
+ ("d" "" :string)
+ ("Y" "" :string)
+ ("Z" "" :string)
+ ("-" "" :string)
+ ("'" "" :string)
+ ("{" "" :string)
+ ("}" "" :string)
+ ))
+