summaryrefslogtreecommitdiff
path: root/indexing
diff options
context:
space:
mode:
Diffstat (limited to 'indexing')
-rw-r--r--indexing/upmendex/README.md6
-rw-r--r--indexing/upmendex/source/ChangeLog25
-rw-r--r--indexing/upmendex/source/Makefile.am7
-rw-r--r--indexing/upmendex/source/Makefile.in32
-rw-r--r--indexing/upmendex/source/aclocal.m450
-rwxr-xr-xindexing/upmendex/source/configure35
-rw-r--r--indexing/upmendex/source/configure.ac2
-rw-r--r--indexing/upmendex/source/convert.c23
-rw-r--r--indexing/upmendex/source/fread.c20
-rw-r--r--indexing/upmendex/source/main.c6
-rw-r--r--indexing/upmendex/source/tests/pprec0.ist11
-rw-r--r--indexing/upmendex/source/tests/pprec1.ist11
-rw-r--r--indexing/upmendex/source/tests/pprec2.ist11
-rw-r--r--indexing/upmendex/source/tests/pprecA-0.ind5
-rw-r--r--indexing/upmendex/source/tests/pprecA-1.ind5
-rw-r--r--indexing/upmendex/source/tests/pprecA-2.ind5
-rw-r--r--indexing/upmendex/source/tests/pprecA.idx9
-rwxr-xr-xindexing/upmendex/source/tests/upmendex.test12
-rw-r--r--indexing/upmendex/source/version.h2
-rw-r--r--indexing/xindy/contrib/xindy-persian/README9
-rw-r--r--indexing/xindy/contrib/xindy-persian/doc/variant1-utf8-doc.tex88
-rw-r--r--indexing/xindy/contrib/xindy-persian/doc/variant2-utf8-doc.tex88
-rw-r--r--indexing/xindy/contrib/xindy-persian/doc/variant3-utf8-doc.tex88
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant1-utf8-lang.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy)0
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant1-utf8-test.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy)0
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant1-utf8.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy)740
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant2-utf8-lang.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy)0
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant2-utf8-test.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy)0
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant2-utf8.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy)732
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant3-utf8-lang.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy)0
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant3-utf8-test.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy)0
-rw-r--r--indexing/xindy/contrib/xindy-persian/persian/variant3-utf8.xdy (renamed from indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy)744
-rw-r--r--indexing/xindy/contrib/xindy-persian/source/make-rules.pl269
-rw-r--r--indexing/xindy/contrib/xindy-persian/source/test.xdy82
-rw-r--r--indexing/xindy/contrib/xindy-persian/source/variant1-utf8.pl.in181
-rw-r--r--indexing/xindy/contrib/xindy-persian/source/variant2-utf8.pl.in181
-rw-r--r--indexing/xindy/contrib/xindy-persian/source/variant3-utf8.pl.in181
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in82
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in82
-rw-r--r--indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in82
40 files changed, 2475 insertions, 1431 deletions
diff --git a/indexing/upmendex/README.md b/indexing/upmendex/README.md
index f0f8df4ca5..a5b79c250a 100644
--- a/indexing/upmendex/README.md
+++ b/indexing/upmendex/README.md
@@ -1,7 +1,7 @@
upmendex --- Multilingual index processor
==========================================
-2020.02.22 Ver0.54
+2020.03.21 Ver0.55
TANAKA, Takuji
<ttk(at)t-lab.opal.ne.jp>
@@ -31,10 +31,10 @@ upmendex is a multilingual index processor with following features:
* man/ :: manuals
### Building upmendex
-The source files are distributed at GitHub[2] and work with TeX Live svn r53427.
+The source files are distributed at GitHub[2] and work with TeX Live svn r58576.
Ref. [TeX Live and Subversion](http://www.tug.org/texlive/svn/)
-Tested with ICU 65.1 .
+Tested with ICU 68.2 .
### Status
Beta version.
diff --git a/indexing/upmendex/source/ChangeLog b/indexing/upmendex/source/ChangeLog
index 6c0e2aaef7..4456e403ea 100644
--- a/indexing/upmendex/source/ChangeLog
+++ b/indexing/upmendex/source/ChangeLog
@@ -1,3 +1,28 @@
+2021-03-23 Karl Berry <karl@tug.org>
+
+ * TL'21.
+
+2021-03-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * version 0.55 Beta version.
+ * configure.ac: Bump version.
+ * fread.c: Fix a bug about page_precedence in style.
+ Thanks to Suzana Sagadin for the report.
+ * tests/pprec[012].ist, tests/pprecA.idx, tests/pprecA-[012].ind,
+ tests/upmendex.test, Makefile.am:
+ Add new tests.
+
+2021-02-17 Karl Berry <karl@freefriends.org>
+
+ * COPYRIGHT,
+ * main.c: copyright 2021.
+
+2020-05-01 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * main.c, version.h, Makefile.{am.in}: Add bug report addresses
+ on command line help.
+ * convert.c: Tune buffer sizes to avoid tool warnings.
+
2020-02-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
* version 0.54 Beta version.
diff --git a/indexing/upmendex/source/Makefile.am b/indexing/upmendex/source/Makefile.am
index fc188887f4..94bea187b3 100644
--- a/indexing/upmendex/source/Makefile.am
+++ b/indexing/upmendex/source/Makefile.am
@@ -22,6 +22,7 @@ upmendex_SOURCES = \
ktable.h \
main.c \
mendex.h \
+ version.h \
pageread.c \
qsort.c \
qsort.h \
@@ -57,5 +58,7 @@ EXTRA_DIST += $(TESTS)
## tests/upmendex.test
EXTRA_DIST += tests/foo.idx tests/foo.ind \
- tests/uni.idx tests/uni.dict tests/uni.ist tests/uni.ind
-DISTCLEANFILES = foo.* uni.*
+ tests/uni.idx tests/uni.dict tests/uni.ist tests/uni.ind \
+ tests/pprec0.ist tests/pprec1.ist tests/pprec2.ist tests/pprecA.idx \
+ tests/pprecA-0.ind tests/pprecA-1.ind tests/pprecA-2.ind
+DISTCLEANFILES = foo.* uni.* pprec*.*
diff --git a/indexing/upmendex/source/Makefile.in b/indexing/upmendex/source/Makefile.in
index 08c9fae74a..1447494020 100644
--- a/indexing/upmendex/source/Makefile.in
+++ b/indexing/upmendex/source/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -191,8 +191,8 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
- $(LISP)c-auto.in
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+ c-auto.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
@@ -395,6 +395,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
@@ -441,6 +442,8 @@ am__post_remove_distdir = $(am__remove_distdir)
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -593,6 +596,7 @@ upmendex_SOURCES = \
ktable.h \
main.c \
mendex.h \
+ version.h \
pageread.c \
qsort.c \
qsort.h \
@@ -606,9 +610,11 @@ nodist_EXTRA_upmendex_SOURCES = dummy.cxx
LDADD = $(KPATHSEA_LIBS) $(ICU_LIBS) $(PTHREAD_LIB) $(ICU_LIBS_EXTRA)
EXTRA_DIST = COPYRIGHT indexsty upmendex.ja.txt $(TESTS) tests/foo.idx \
tests/foo.ind tests/uni.idx tests/uni.dict tests/uni.ist \
- tests/uni.ind
+ tests/uni.ind tests/pprec0.ist tests/pprec1.ist \
+ tests/pprec2.ist tests/pprecA.idx tests/pprecA-0.ind \
+ tests/pprecA-1.ind tests/pprecA-2.ind
TESTS = tests/upmendex.test
-DISTCLEANFILES = foo.* uni.*
+DISTCLEANFILES = foo.* uni.* pprec*.*
all: c-auto.h
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -962,7 +968,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
@@ -1069,6 +1075,10 @@ dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@@ -1111,6 +1121,8 @@ distcheck: dist
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
@@ -1126,7 +1138,7 @@ distcheck: dist
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
@@ -1316,8 +1328,8 @@ uninstall-am: uninstall-binPROGRAMS
check-TESTS check-am clean clean-binPROGRAMS clean-cscope \
clean-generic clean-libtool cscope cscopelist-am ctags \
ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \
- dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
- distclean-compile distclean-generic distclean-hdr \
+ dist-shar dist-tarZ dist-xz dist-zip dist-zstd distcheck \
+ distclean distclean-compile distclean-generic distclean-hdr \
distclean-libtool distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-binPROGRAMS install-data \
diff --git a/indexing/upmendex/source/aclocal.m4 b/indexing/upmendex/source/aclocal.m4
index 5392efefa9..0f39289fa4 100644
--- a/indexing/upmendex/source/aclocal.m4
+++ b/indexing/upmendex/source/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.2 -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.1], [],
+m4_if([$1], [1.16.2], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.2])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -371,7 +371,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
done
if test $am_rc -ne 0; then
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
- for automatic dependency tracking. Try re-running configure with the
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE="gmake" (or whatever is
+ necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).])
fi
@@ -398,7 +400,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -595,7 +597,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -616,7 +618,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -638,7 +640,7 @@ AC_SUBST([am__leading_dot])])
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -673,7 +675,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -716,7 +718,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -755,7 +757,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -784,7 +786,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -831,7 +833,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -850,7 +852,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -931,7 +933,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -991,7 +993,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1019,7 +1021,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1038,7 +1040,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/indexing/upmendex/source/configure b/indexing/upmendex/source/configure
index 55a19d1649..5f95756168 100755
--- a/indexing/upmendex/source/configure
+++ b/indexing/upmendex/source/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for upmendex (TeX Live) 0.54.
+# Generated by GNU Autoconf 2.69 for upmendex (TeX Live) 0.55.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='upmendex (TeX Live)'
PACKAGE_TARNAME='upmendex--tex-live-'
-PACKAGE_VERSION='0.54'
-PACKAGE_STRING='upmendex (TeX Live) 0.54'
+PACKAGE_VERSION='0.55'
+PACKAGE_STRING='upmendex (TeX Live) 0.55'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1345,7 +1345,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures upmendex (TeX Live) 0.54 to adapt to many kinds of systems.
+\`configure' configures upmendex (TeX Live) 0.55 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1416,7 +1416,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of upmendex (TeX Live) 0.54:";;
+ short | recursive ) echo "Configuration of upmendex (TeX Live) 0.55:";;
esac
cat <<\_ACEOF
@@ -1541,7 +1541,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-upmendex (TeX Live) configure 0.54
+upmendex (TeX Live) configure 0.55
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2474,7 +2474,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by upmendex (TeX Live) $as_me 0.54, which was
+It was created by upmendex (TeX Live) $as_me 0.55, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -4113,12 +4113,7 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
@@ -8673,7 +8668,7 @@ fi
# Define the identity of the package.
PACKAGE='upmendex--tex-live-'
- VERSION='0.54'
+ VERSION='0.55'
# Some tools Automake needs.
@@ -17750,7 +17745,7 @@ ac_config_headers="$ac_config_headers c-auto.h:c-auto.in"
-$as_echo "#define TL_VERSION \"TeX Live 2020\"" >>confdefs.h
+$as_echo "#define TL_VERSION \"TeX Live 2021\"" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C99 variadic macros are supported" >&5
@@ -18202,7 +18197,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-upmendex (TeX Live) config.lt 0.54
+upmendex (TeX Live) config.lt 0.55
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -20342,7 +20337,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by upmendex (TeX Live) $as_me 0.54, which was
+This file was extended by upmendex (TeX Live) $as_me 0.55, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -20408,7 +20403,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-upmendex (TeX Live) config.status 0.54
+upmendex (TeX Live) config.status 0.55
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -21605,7 +21600,9 @@ $as_echo X/"$am_mf" |
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
- for automatic dependency tracking. Try re-running configure with the
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE=\"gmake\" (or whatever is
+ necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
See \`config.log' for more details" "$LINENO" 5; }
diff --git a/indexing/upmendex/source/configure.ac b/indexing/upmendex/source/configure.ac
index c95d31520b..b3043309fa 100644
--- a/indexing/upmendex/source/configure.ac
+++ b/indexing/upmendex/source/configure.ac
@@ -8,7 +8,7 @@ dnl This file is free software; the copyright holder
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
-AC_INIT([upmendex (TeX Live)], [0.54])
+AC_INIT([upmendex (TeX Live)], [0.55])
AC_PREREQ([2.63])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_AUX_DIR([../../build-aux])
diff --git a/indexing/upmendex/source/convert.c b/indexing/upmendex/source/convert.c
index d02b05bf4d..4687fd4f25 100644
--- a/indexing/upmendex/source/convert.c
+++ b/indexing/upmendex/source/convert.c
@@ -12,6 +12,9 @@
#include "kp.h"
#define BUFFERLEN 4096
+#define BUFFERLEN1 256
+#define BUFFERLEN2 (BUFFERLEN1*3)
+#define BUFFERLEN3 (BUFFERLEN2+50)
struct dictionary{
UChar* dic[2];
@@ -118,8 +121,8 @@ static int dcomp(const void *bf1, const void *bf2);
static int dicvalread(const char *filename, struct dictionary *dicval, int line)
{
int i,j,k;
- char buff[256],buff2[256];
- UChar ubuff[256],ubuff2[256];
+ char buff[BUFFERLEN1],buff2[BUFFERLEN1];
+ UChar ubuff[BUFFERLEN1],ubuff2[BUFFERLEN1];
FILE *fp;
if(kpse_in_name_ok(filename))
@@ -143,7 +146,7 @@ static int dicvalread(const char *filename, struct dictionary *dicval, int line)
i--;
continue;
}
- multibyte_to_widechar(ubuff,256,buff2);
+ multibyte_to_widechar(ubuff,BUFFERLEN1,buff2);
dicval[i].dic[0]=u_xstrdup(ubuff);
for (;((buff[j]==' ')||(buff[j]=='\t'));j++);
for (k=0;((buff[j]!='\r')&&(buff[j]!='\n')&&(buff[j]!=' ')&&(buff[j]!='\t'));j++,k++) {
@@ -155,7 +158,7 @@ static int dicvalread(const char *filename, struct dictionary *dicval, int line)
i--;
continue;
}
- multibyte_to_widechar(ubuff,256,buff2);
+ multibyte_to_widechar(ubuff,BUFFERLEN1,buff2);
convert(ubuff,ubuff2);
dicval[i].dic[1]=u_xstrdup(ubuff2);
}
@@ -173,7 +176,7 @@ static int dcomp(const void *bf1, const void *bf2)
const struct dictionary *buff2 = (const struct dictionary *) bf2;
int i;
- for (i=0;i<256;i++) {
+ for (i=0;i<BUFFERLEN1;i++) {
if (((*buff1).dic[0][i]==L'\0')&&((*buff2).dic[0][i]==L'\0')) return 0;
else if (((*buff1).dic[0][i]==L'\0')&&((*buff2).dic[0][i]!=L'\0')) return 1;
else if (((*buff1).dic[0][i]!=L'\0')&&((*buff2).dic[0][i]==L'\0')) return -1;
@@ -187,7 +190,7 @@ static int dcomp(const void *bf1, const void *bf2)
int convert(UChar *buff1, UChar *buff2)
{
int i=0,j=0,k;
- char errbuff[BUFFERLEN],errbuff2[BUFFERLEN];
+ char errbuff[BUFFERLEN2],errbuff2[BUFFERLEN3];
int wclen;
UChar buff3[3];
@@ -270,10 +273,10 @@ int convert(UChar *buff1, UChar *buff2)
j+=wclen;
}
else {
- widechar_to_multibyte(errbuff2,BUFFERLEN,&buff1[i]);
- snprintf(errbuff,BUFFERLEN,"\nError: %s is no entry in dictionary file ",errbuff2);
- fputs(errbuff,efp);
- if (efp!=stderr) fputs(errbuff,stderr);
+ widechar_to_multibyte(errbuff,BUFFERLEN2,&buff1[i]);
+ snprintf(errbuff2,BUFFERLEN3,"\nError: %s is no entry in dictionary file ",errbuff);
+ fputs(errbuff2,efp);
+ if (efp!=stderr) fputs(errbuff2,stderr);
return -1;
}
}
diff --git a/indexing/upmendex/source/fread.c b/indexing/upmendex/source/fread.c
index 358c21a498..a336022e11 100644
--- a/indexing/upmendex/source/fread.c
+++ b/indexing/upmendex/source/fread.c
@@ -511,35 +511,45 @@ ATTRLOOP:
switch(page_precedence[pattr[cc]]) {
case 'r':
if (strchr("ivxlcdm",p->page[i])==NULL) {
- pattr[cc]++;
+ if (pattr[cc]<strlen(page_precedence)-1)
+ pattr[cc]++;
+ else pattr[cc]=0;
for (j=cc+1;j<3;j++) pattr[j]=0;
goto ATTRLOOP;
}
break;
case 'R':
if (strchr("IVXLCDM",p->page[i])==NULL) {
- pattr[cc]++;
+ if (pattr[cc]<strlen(page_precedence)-1)
+ pattr[cc]++;
+ else pattr[cc]=0;
for (j=cc+1;j<3;j++) pattr[j]=0;
goto ATTRLOOP;
}
break;
case 'n':
if (p->page[i]<'0' || p->page[i]>'9') {
- pattr[cc]++;
+ if (pattr[cc]<strlen(page_precedence)-1)
+ pattr[cc]++;
+ else pattr[cc]=0;
for (j=cc+1;j<3;j++) pattr[j]=0;
goto ATTRLOOP;
}
break;
case 'a':
if (p->page[i]<'a' || p->page[i]>'z') {
- pattr[cc]++;
+ if (pattr[cc]<strlen(page_precedence)-1)
+ pattr[cc]++;
+ else pattr[cc]=0;
for (j=cc+1;j<3;j++) pattr[j]=0;
goto ATTRLOOP;
}
break;
case 'A':
if (p->page[i]<'A' || p->page[i]>'Z') {
- pattr[cc]++;
+ if (pattr[cc]<strlen(page_precedence)-1)
+ pattr[cc]++;
+ else pattr[cc]=0;
for (j=cc+1;j<3;j++) pattr[j]=0;
goto ATTRLOOP;
}
diff --git a/indexing/upmendex/source/main.c b/indexing/upmendex/source/main.c
index c7d8106b53..884c64c15f 100644
--- a/indexing/upmendex/source/main.c
+++ b/indexing/upmendex/source/main.c
@@ -1,4 +1,5 @@
#include "mendex.h"
+#include "version.h"
#include <kpathsea/tex-file.h>
#include <kpathsea/variable.h>
@@ -19,8 +20,6 @@ char *styfile,*idxfile[256],*indfile,*dicfile,*logfile;
#endif
KpathseaSupportInfo kp_ist,kp_dict;
-#define VERSION "version 0.54"
-
int main(int argc, char **argv)
{
int i,j,cc=0,startpagenum=-1,ecount=0,chkopt=1;
@@ -156,7 +155,7 @@ int main(int argc, char **argv)
u_getVersion(icuVersion);
u_versionToString(icuVersion, icu_version);
fprintf(stderr,"upmendex - index processor, %s (%s).\n",VERSION, TL_VERSION);
- fprintf(stderr," Copyright 2009 ASCII MEDIA WORKS, 2015-2020 TANAKA Takuji\n");
+ fprintf(stderr," Copyright 2009 ASCII MEDIA WORKS, 2015-2021 TANAKA Takuji\n");
fprintf(stderr," using ICU version %s\n",icu_version);
fprintf(stderr,"usage:\n");
fprintf(stderr,"%% upmendex [-ilqrcgf] [-s sty] [-d dic] [-o ind] [-t log] [-p no] [--] [idx0 idx1 ...]\n");
@@ -174,6 +173,7 @@ int main(int argc, char **argv)
fprintf(stderr,"-t log take log as the error log file.\n");
fprintf(stderr,"-p no set the starting page number of index.\n");
fprintf(stderr,"idx... input files.\n");
+ fprintf(stderr,"\nEmail bug reports to %s.\n", BUG_ADDRESS);
exit(0);
break;
}
diff --git a/indexing/upmendex/source/tests/pprec0.ist b/indexing/upmendex/source/tests/pprec0.ist
new file mode 100644
index 0000000000..ec1242bbba
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprec0.ist
@@ -0,0 +1,11 @@
+% -*- coding: utf-8 -*-
+
+%page_precedence "rnaRA"
+
+delim_0 "[[delim0]]"
+delim_1 "[[delim1]]"
+delim_2 "[[delim2]]"
+delim_r "[[delimr]]"
+suffix_2p "[[sfx 2p]]"
+suffix_3p "[[sfx 3p]]"
+
diff --git a/indexing/upmendex/source/tests/pprec1.ist b/indexing/upmendex/source/tests/pprec1.ist
new file mode 100644
index 0000000000..8f9221ebce
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprec1.ist
@@ -0,0 +1,11 @@
+% -*- coding: utf-8 -*-
+
+page_precedence "nrR"
+
+delim_0 "[[delim0]]"
+delim_1 "[[delim1]]"
+delim_2 "[[delim2]]"
+delim_r "[[delimr]]"
+suffix_2p "[[sfx 2p]]"
+suffix_3p "[[sfx 3p]]"
+
diff --git a/indexing/upmendex/source/tests/pprec2.ist b/indexing/upmendex/source/tests/pprec2.ist
new file mode 100644
index 0000000000..eeec1e95cf
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprec2.ist
@@ -0,0 +1,11 @@
+% -*- coding: utf-8 -*-
+
+page_precedence "Rnr"
+
+delim_0 "[[delim0]]"
+delim_1 "[[delim1]]"
+delim_2 "[[delim2]]"
+delim_r "[[delimr]]"
+suffix_2p "[[sfx 2p]]"
+suffix_3p "[[sfx 3p]]"
+
diff --git a/indexing/upmendex/source/tests/pprecA-0.ind b/indexing/upmendex/source/tests/pprecA-0.ind
new file mode 100644
index 0000000000..245eacacdd
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprecA-0.ind
@@ -0,0 +1,5 @@
+\begin{theindex}
+
+ \item entryA[[delim0]]i[[sfx 3p]], 1[[sfx 3p]], I[[sfx 3p]]
+
+\end{theindex}
diff --git a/indexing/upmendex/source/tests/pprecA-1.ind b/indexing/upmendex/source/tests/pprecA-1.ind
new file mode 100644
index 0000000000..772e302d7c
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprecA-1.ind
@@ -0,0 +1,5 @@
+\begin{theindex}
+
+ \item entryA[[delim0]]1[[sfx 3p]], i[[sfx 3p]], I[[sfx 3p]]
+
+\end{theindex}
diff --git a/indexing/upmendex/source/tests/pprecA-2.ind b/indexing/upmendex/source/tests/pprecA-2.ind
new file mode 100644
index 0000000000..52d35cb3d7
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprecA-2.ind
@@ -0,0 +1,5 @@
+\begin{theindex}
+
+ \item entryA[[delim0]]I[[sfx 3p]], 1[[sfx 3p]], i[[sfx 3p]]
+
+\end{theindex}
diff --git a/indexing/upmendex/source/tests/pprecA.idx b/indexing/upmendex/source/tests/pprecA.idx
new file mode 100644
index 0000000000..8e770b9d0d
--- /dev/null
+++ b/indexing/upmendex/source/tests/pprecA.idx
@@ -0,0 +1,9 @@
+\indexentry{entryA}{i}
+\indexentry{entryA}{ii}
+\indexentry{entryA}{iii}
+\indexentry{entryA}{1}
+\indexentry{entryA}{2}
+\indexentry{entryA}{3}
+\indexentry{entryA}{I}
+\indexentry{entryA}{II}
+\indexentry{entryA}{III}
diff --git a/indexing/upmendex/source/tests/upmendex.test b/indexing/upmendex/source/tests/upmendex.test
index da75821d10..70ff2fac21 100755
--- a/indexing/upmendex/source/tests/upmendex.test
+++ b/indexing/upmendex/source/tests/upmendex.test
@@ -7,7 +7,7 @@
TEXMFCNF=$srcdir/../kpathsea
export TEXMFCNF
-rm -f foo.*
+rm -f foo.* uni.* pprec*.*
./upmendex $srcdir/tests/foo.idx -o foo.ind1 -t foo.ilg1 \
&& diff $srcdir/tests/foo.ind foo.ind1 || exit 1
@@ -24,3 +24,13 @@ cat $srcdir/tests/uni.idx | \
>uni.ind2 2>uni.ilg2 \
&& diff $srcdir/tests/uni.ind uni.ind2 || exit 1
+# test for page_precedence
+./upmendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx -o pprecA-0.ind1 -t pprecA-0.ilg \
+ && diff $srcdir/tests/pprecA-0.ind pprecA-0.ind1 || exit 1
+
+./upmendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx -o pprecA-1.ind1 -t pprecA-1.ilg \
+ && diff $srcdir/tests/pprecA-1.ind pprecA-1.ind1 || exit 1
+
+./upmendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx -o pprecA-2.ind1 -t pprecA-2.ilg \
+ && diff $srcdir/tests/pprecA-2.ind pprecA-2.ind1 || exit 1
+
diff --git a/indexing/upmendex/source/version.h b/indexing/upmendex/source/version.h
new file mode 100644
index 0000000000..8cd1c6cd86
--- /dev/null
+++ b/indexing/upmendex/source/version.h
@@ -0,0 +1,2 @@
+#define VERSION "version " PACKAGE_VERSION
+#define BUG_ADDRESS "issue@texjp.org, tex-k@tug.org"
diff --git a/indexing/xindy/contrib/xindy-persian/README b/indexing/xindy/contrib/xindy-persian/README
index a22b487133..17f043afb1 100644
--- a/indexing/xindy/contrib/xindy-persian/README
+++ b/indexing/xindy/contrib/xindy-persian/README
@@ -1,6 +1,6 @@
________________________
The “xindy-persian” package
-v0.7b
+v0.8
The “xindy-persian” package is the Persian language
support for xindy program.
@@ -15,17 +15,16 @@ 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>
+ <https://github.com/persiantex/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
+Current version release date: 2021/04/03
_________________
Vafa Khalighi
-persian-tex@tug.org
-Copyright © 2011–2015 Vafa Khalighi
+Copyright © 2011–2021 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
diff --git a/indexing/xindy/contrib/xindy-persian/doc/variant1-utf8-doc.tex b/indexing/xindy/contrib/xindy-persian/doc/variant1-utf8-doc.tex
new file mode 100644
index 0000000000..a7daafc79d
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/doc/variant1-utf8-doc.tex
@@ -0,0 +1,88 @@
+\subsection{Persian (One)}
+
+\subsubsection{Alphabet}
+\icod\fcod
+\begin{alphabet}
+آ\\
+أ\\
+ا\\
+ب\\
+پ\\
+ت\\
+ث\\
+ج\\
+چ\\
+ح\\
+خ\\
+د\\
+ذ\\
+ر\\
+ز\\
+ژ\\
+س\\
+ش\\
+ص\\
+ض\\
+ط\\
+ظ\\
+ع\\
+غ\\
+ف\\
+ق\\
+ک\\
+گ\\
+ل\\
+م\\
+ن\\
+ؤ\,و\\
+ه\\
+ئ\,ی\\
+a\,A & à\,À\\
+b\,B\\
+c\,C & ç\,Ç\\
+d\,D & ð\,Ð\\
+e\,E & é\,É & è\,È & ë\,Ë & ê\,Ê\\
+f\,F\\
+g\,G\\
+h\,H\\
+i\,I & ï\,Ï\\
+j\,J\\
+k\,K\\
+l\,L\\
+m\,M\\
+n\,N & ñ\,Ñ\\
+o\,O & ö\,Ö & ô\,Ô\\
+p\,P\\
+q\,Q\\
+r\,R\\
+s\,S\\
+t\,T\\
+u\,U\\
+v\,V\\
+w\,W\\
+x\,X\\
+y\,Y\\
+\\
+z\,Z\\
+þ\,Þ\\
+
+\end{alphabet}
+\idef\fdef
+
+\subsubsection{Ligatures}
+\begin{flushleft}
+`æ' is sorted like `a\,e', but \emph{after} it in otherwise equal words.\\
+`Æ' is sorted like `A\,e', but \emph{after} it in otherwise equal words.\\
+`œ' is sorted like `o\,e', but \emph{after} it in otherwise equal words.\\
+`Œ' is sorted like `O\,e', but \emph{after} it in otherwise equal words.
+\end{flushleft}
+
+\subsubsection{Upper-/lowercase words}
+Capitalized or uppercase words are sorted \emph{before} otherwise equal lowercase words.
+
+\subsubsection{Special characters}
+The order of special characters and letters is:
+\begin{flushleft}
+?\hspace{4mm}!\hspace{4mm}.\hspace{4mm}letters\hspace{4mm}-\hspace{4mm}'\hspace{4mm}{\hspace{4mm}}\hspace{4mm}ّ\hspace{4mm}َ\hspace{4mm}ِ\hspace{4mm}ُ\hspace{4mm}ً\hspace{4mm}ٍ\hspace{4mm}ٌ\hspace{4mm}ْ\hspace{4mm}ٔ\hspace{4mm}ء\hspace{4mm}‌\hspace{4mm}«\hspace{4mm}»\hspace{4mm}ـ\hspace{4mm}،\hspace{4mm}؛
+\end{flushleft}
+\newpage
diff --git a/indexing/xindy/contrib/xindy-persian/doc/variant2-utf8-doc.tex b/indexing/xindy/contrib/xindy-persian/doc/variant2-utf8-doc.tex
new file mode 100644
index 0000000000..9960147875
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/doc/variant2-utf8-doc.tex
@@ -0,0 +1,88 @@
+\subsection{Persian (Two)}
+
+\subsubsection{Alphabet}
+\icod\fcod
+\begin{alphabet}
+آ\\
+أ\\
+ا\\
+ب\\
+پ\\
+ت\\
+ث\\
+ج\\
+چ\\
+ح\\
+خ\\
+د\\
+ذ\\
+ر\\
+ز\\
+ژ\\
+س\\
+ش\\
+ص\\
+ض\\
+ط\\
+ظ\\
+ع\\
+غ\\
+ف\\
+ق\\
+ک\\
+گ\\
+ل\\
+م\\
+ن\\
+ؤ\,و\\
+ه\\
+ئ\,ی\\
+a\,A & à\,À\\
+b\,B\\
+c\,C & ç\,Ç\\
+d\,D & ð\,Ð\\
+e\,E & é\,É & è\,È & ë\,Ë & ê\,Ê\\
+f\,F\\
+g\,G\\
+h\,H\\
+i\,I & ï\,Ï\\
+j\,J\\
+k\,K\\
+l\,L\\
+m\,M\\
+n\,N & ñ\,Ñ\\
+o\,O & ö\,Ö & ô\,Ô\\
+p\,P\\
+q\,Q\\
+r\,R\\
+s\,S\\
+t\,T\\
+u\,U\\
+v\,V\\
+w\,W\\
+x\,X\\
+y\,Y\\
+\\
+z\,Z\\
+þ\,Þ\\
+
+\end{alphabet}
+\idef\fdef
+
+\subsubsection{Ligatures}
+\begin{flushleft}
+`æ' is sorted like `a\,e', but \emph{after} it in otherwise equal words.\\
+`Æ' is sorted like `A\,e', but \emph{after} it in otherwise equal words.\\
+`œ' is sorted like `o\,e', but \emph{after} it in otherwise equal words.\\
+`Œ' is sorted like `O\,e', but \emph{after} it in otherwise equal words.
+\end{flushleft}
+
+\subsubsection{Upper-/lowercase words}
+Capitalized or uppercase words are sorted \emph{before} otherwise equal lowercase words.
+
+\subsubsection{Special characters}
+The order of special characters and letters is:
+\begin{flushleft}
+?\hspace{4mm}!\hspace{4mm}.\hspace{4mm}letters\hspace{4mm}-\hspace{4mm}'\hspace{4mm}{\hspace{4mm}}\hspace{4mm}ّ\hspace{4mm}َ\hspace{4mm}ِ\hspace{4mm}ُ\hspace{4mm}ً\hspace{4mm}ٍ\hspace{4mm}ٌ\hspace{4mm}ْ\hspace{4mm}ٔ\hspace{4mm}ء\hspace{4mm}‌\hspace{4mm}«\hspace{4mm}»\hspace{4mm}ـ\hspace{4mm}،\hspace{4mm}؛
+\end{flushleft}
+\newpage
diff --git a/indexing/xindy/contrib/xindy-persian/doc/variant3-utf8-doc.tex b/indexing/xindy/contrib/xindy-persian/doc/variant3-utf8-doc.tex
new file mode 100644
index 0000000000..5c7b1fd518
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/doc/variant3-utf8-doc.tex
@@ -0,0 +1,88 @@
+\subsection{Persian (Three)}
+
+\subsubsection{Alphabet}
+\icod\fcod
+\begin{alphabet}
+آ\\
+أ\\
+ا\\
+ب\\
+پ\\
+ت\\
+ث\\
+ج\\
+چ\\
+ح\\
+خ\\
+د\\
+ذ\\
+ر\\
+ز\\
+ژ\\
+س\\
+ش\\
+ص\\
+ض\\
+ط\\
+ظ\\
+ع\\
+غ\\
+ف\\
+ق\\
+ک\\
+گ\\
+ل\\
+م\\
+ن\\
+ؤ\,و\\
+ه\\
+ئ\,ی\\
+a\,A & à\,À\\
+b\,B\\
+c\,C & ç\,Ç\\
+d\,D & ð\,Ð\\
+e\,E & é\,É & è\,È & ë\,Ë & ê\,Ê\\
+f\,F\\
+g\,G\\
+h\,H\\
+i\,I & ï\,Ï\\
+j\,J\\
+k\,K\\
+l\,L\\
+m\,M\\
+n\,N & ñ\,Ñ\\
+o\,O & ö\,Ö & ô\,Ô\\
+p\,P\\
+q\,Q\\
+r\,R\\
+s\,S\\
+t\,T\\
+u\,U\\
+v\,V\\
+w\,W\\
+x\,X\\
+y\,Y\\
+\\
+z\,Z\\
+þ\,Þ\\
+
+\end{alphabet}
+\idef\fdef
+
+\subsubsection{Ligatures}
+\begin{flushleft}
+`æ' is sorted like `a\,e', but \emph{after} it in otherwise equal words.\\
+`Æ' is sorted like `A\,e', but \emph{after} it in otherwise equal words.\\
+`œ' is sorted like `o\,e', but \emph{after} it in otherwise equal words.\\
+`Œ' is sorted like `O\,e', but \emph{after} it in otherwise equal words.
+\end{flushleft}
+
+\subsubsection{Upper-/lowercase words}
+Capitalized or uppercase words are sorted \emph{before} otherwise equal lowercase words.
+
+\subsubsection{Special characters}
+The order of special characters and letters is:
+\begin{flushleft}
+?\hspace{4mm}!\hspace{4mm}.\hspace{4mm}letters\hspace{4mm}-\hspace{4mm}'\hspace{4mm}{\hspace{4mm}}\hspace{4mm}ّ\hspace{4mm}َ\hspace{4mm}ِ\hspace{4mm}ُ\hspace{4mm}ً\hspace{4mm}ٍ\hspace{4mm}ٌ\hspace{4mm}ْ\hspace{4mm}ٔ\hspace{4mm}ء\hspace{4mm}‌\hspace{4mm}«\hspace{4mm}»\hspace{4mm}ـ\hspace{4mm}،\hspace{4mm}؛
+\end{flushleft}
+\newpage
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant1-utf8-lang.xdy
index 94e9bed54a..94e9bed54a 100644
--- a/indexing/xindy/contrib/xindy-persian/variant1-utf8-lang.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant1-utf8-lang.xdy
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant1-utf8-test.xdy
index 19c4790669..19c4790669 100644
--- a/indexing/xindy/contrib/xindy-persian/variant1-utf8-test.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant1-utf8-test.xdy
diff --git a/indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant1-utf8.xdy
index 8654e2b473..bfb5dcc058 100644
--- a/indexing/xindy/contrib/xindy-persian/variant1-utf8.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant1-utf8.xdy
@@ -34,32 +34,32 @@
(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-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"
@@ -99,419 +99,421 @@
("ه" "" :string)
("ی" "" :string)
("ئ" "" :string)
- ("à" "" :string)
("À" "" :string)
- ("Æ" "" :string)
- ("æ" "" :string)
- ("ç" "" :string)
- ("Ç" "" :string)
- ("Ð" "" :string)
- ("ð" "" :string)
- ("È" "" :string)
- ("ë" "" :string)
- ("ê" "" :string)
- ("é" "" :string)
- ("É" "" :string)
- ("è" "" :string)
- ("Ê" "" :string)
- ("Ë" "" :string)
- ("Ï" "" :string)
- ("ï" "" :string)
- ("ñ" "" :string)
- ("Ñ" "" :string)
- ("Ô" "" :string)
- ("Ö" "" :string)
- ("ö" "" :string)
- ("ô" "" :string)
- ("Œ" "" :string)
- ("œ" "" :string)
- ("þ" "" :string)
- ("Þ" "" :string)
+ ("à" "" :string)
+ ("æ" "" :string)
+ ("Æ" "" :string)
+ ("Ç" "" :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)
+ ("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)
+ :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)
("è" "" :string)
("ô" "" :string)
- ("Ô" "" :string)
("È" "" :string)
- ("Ë" "" :string)
("ë" "" :string)
+ ("Ë" "" :string)
("Ê" "" :string)
("ê" "" :string)
- ("æ" "" :string)
- ("Æ" "" :string)
("Œ" "" :string)
("œ" "" :string)
- ("z" "" :string)
- ("C" "" :string)
- ("r" "" :string)
- ("R" "" :string)
- ("Z" "" :string)
+ ("Æ" "" :string)
+ ("æ" "" :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)
+ ("C" "" :string)
+ ("X" "" :string)
("o" "" :string)
- ("N" "" :string)
- ("M" "" :string)
- ("l" "" :string)
- ("D" "" :string)
+ ("K" "" :string)
+ ("g" "" :string)
+ ("V" "" :string)
+ ("z" "" :string)
+ ("J" "" :string)
("c" "" :string)
- ("A" "" :string)
- ("H" "" :string)
+ ("v" "" :string)
+ ("q" "" :string)
+ ("G" "" :string)
+ ("m" "" :string)
("U" "" :string)
+ ("E" "" :string)
+ ("R" "" :string)
+ ("y" "" :string)
+ ("d" "" :string)
+ ("O" "" :string)
+ ("a" "" :string)
("S" "" :string)
- ("v" "" :string)
+ ("i" "" :string)
("f" "" :string)
+ ("j" "" :string)
+ ("e" "" :string)
+ ("L" "" :string)
+ ("r" "" :string)
+ ("D" "" :string)
+ ("H" "" :string)
+ ("k" "" :string)
+ ("b" "" :string)
+ ("n" "" :string)
+ ("M" "" :string)
+ ("P" "" :string)
+ ("u" "" :string)
+ ("s" "" :string)
("B" "" :string)
+ ("w" "" :string)
+ ("N" "" :string)
("W" "" :string)
- ("n" "" :string)
- ("L" "" :string)
+ ("h" "" :string)
+ ("T" "" :string)
+ ("Y" "" :string)
+ ("t" "" :string)
("I" "" :string)
("F" "" :string)
- ("E" "" :string)
- ("K" "" :string)
- ("O" "" :string)
- ("G" "" :string)
- ("w" "" :string)
- ("Y" "" :string)
- ("k" "" :string)
+ ("A" "" :string)
+ ("Z" "" :string)
+ ("l" "" :string)
))
(define-rule-set "pe-resolve-case"
- :rules (("Þ" "8" :string)
- ("ی" "8" :string)
- ("È" "8" :string)
+ :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)
+ ("È" "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)
- ("چ" "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)
+ ("ا" "9" :string)
+ ("ö" "9" :string)
+ ("ظ" "9" :string)
+ ("ن" "9" :string)
+ ("ز" "9" :string)
+ ("ح" "9" :string)
+ ("ð" "9" :string)
+ ("غ" "9" :string)
+ ("أ" "9" :string)
+ ("ض" "9" :string)
("æ" "99" :string)
- ("Y" "8" :string)
- ("G" "8" :string)
- ("O" "8" :string)
- ("F" "8" :string)
- ("K" "8" :string)
+ ("œ" "99" :string)
+ ("R" "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)
+ ("O" "8" :string)
+ ("S" "8" :string)
+ ("H" "8" :string)
("D" "8" :string)
- ("N" "8" :string)
+ ("L" "8" :string)
+ ("Q" "8" :string)
+ ("X" "8" :string)
+ ("C" "8" :string)
("J" "8" :string)
("V" "8" :string)
- ("Q" "8" :string)
+ ("K" "8" :string)
+ ("G" "8" :string)
+ ("Y" "8" :string)
("T" "8" :string)
- ("P" "8" :string)
- ("X" "8" :string)
- ("R" "8" :string)
+ ("W" "8" :string)
+ ("N" "8" :string)
+ ("F" "8" :string)
+ ("I" "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)
+ ("A" "8" :string)
+ ("M" "8" :string)
+ ("P" "8" :string)
+ ("B" "8" :string)
("d" "9" :string)
- ("x" "9" :string)
- ("a" "9" :string)
+ ("y" "9" :string)
("i" "9" :string)
+ ("f" "9" :string)
+ ("a" "9" :string)
+ ("r" "9" :string)
("e" "9" :string)
("j" "9" :string)
- ("s" "9" :string)
- ("b" "9" :string)
+ ("x" "9" :string)
("p" "9" :string)
+ ("o" "9" :string)
+ ("c" "9" :string)
("z" "9" :string)
- ("r" "9" :string)
+ ("g" "9" :string)
+ ("m" "9" :string)
+ ("q" "9" :string)
+ ("v" "9" :string)
+ ("h" "9" :string)
+ ("t" "9" :string)
+ ("l" "9" :string)
+ ("n" "9" :string)
+ ("b" "9" :string)
+ ("k" "9" :string)
+ ("s" "9" :string)
+ ("u" "9" :string)
+ ("w" "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)
+ ("ٌ" "" :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)
- ("Ê" "" :string)
- ("ف" "" :string)
+ ("ش" "" :string)
+ ("þ" "" :string)
+ ("Ï" "" :string)
+ ("چ" "" :string)
("À" "" :string)
- ("Ñ" "" :string)
+ ("ð" "" :string)
+ ("Þ" "" :string)
+ ("ض" "" :string)
+ ("ح" "" :string)
+ ("ر" "" :string)
+ ("Ö" "" :string)
+ ("آ" "" :string)
+ ("ب" "" :string)
+ ("Ë" "" :string)
+ ("È" "" :string)
("É" "" :string)
- ("ث" "" :string)
- ("Ð" "" :string)
- ("œ" "" :string)
+ ("Ô" "" :string)
+ ("ژ" "" :string)
+ ("ô" "" :string)
+ ("د" "" :string)
+ ("ê" "" :string)
+ ("ل" "" :string)
+ ("ص" "" :string)
("Æ" "" :string)
("Œ" "" :string)
+ ("œ" "" :string)
("æ" "" :string)
("ّ" "" :string)
("َ" "" :string)
@@ -526,61 +528,63 @@
("«" "" :string)
("»" "" :string)
("ـ" "" :string)
+ ("،" "" :string)
+ ("؛" "" :string)
("?" "" :string)
("!" "" :string)
("." "" :string)
- ("H" "" :string)
- ("S" "" :string)
- ("l" "" :string)
("M" "" :string)
+ ("b" "" :string)
+ ("k" "" :string)
("B" "" :string)
+ ("s" "" :string)
+ ("F" "" :string)
+ ("t" "" :string)
+ ("Y" "" :string)
("W" "" :string)
+ ("A" "" :string)
+ ("X" "" :string)
+ ("o" "" :string)
+ ("Q" "" :string)
+ ("x" "" :string)
+ ("p" "" :string)
("v" "" :string)
- ("F" "" :string)
+ ("V" "" :string)
+ ("z" "" :string)
("K" "" :string)
+ ("E" "" :string)
+ ("H" "" :string)
+ ("D" "" :string)
+ ("L" "" :string)
+ ("j" "" :string)
+ ("a" "" :string)
+ ("n" "" :string)
+ ("w" "" :string)
+ ("P" "" :string)
+ ("u" "" :string)
("I" "" :string)
- ("R" "" :string)
+ ("T" "" :string)
+ ("h" "" :string)
+ ("N" "" :string)
+ ("l" "" :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)
+ ("q" "" :string)
+ ("J" "" :string)
+ ("c" "" :string)
+ ("g" "" :string)
("O" "" :string)
- ("w" "" :string)
- ("z" "" :string)
+ ("d" "" :string)
+ ("y" "" :string)
+ ("R" "" :string)
+ ("U" "" :string)
+ ("r" "" :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)
+ ("f" "" :string)
+ ("S" "" :string)
+ ("i" "" :string)
("-" "" :string)
("'" "" :string)
("{" "" :string)
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant2-utf8-lang.xdy
index 54153d737f..54153d737f 100644
--- a/indexing/xindy/contrib/xindy-persian/variant2-utf8-lang.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant2-utf8-lang.xdy
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant2-utf8-test.xdy
index d6d1878f59..d6d1878f59 100644
--- a/indexing/xindy/contrib/xindy-persian/variant2-utf8-test.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant2-utf8-test.xdy
diff --git a/indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant2-utf8.xdy
index e0e73044c4..ce90a86b19 100644
--- a/indexing/xindy/contrib/xindy-persian/variant2-utf8.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant2-utf8.xdy
@@ -35,32 +35,32 @@
(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-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"
@@ -98,422 +98,424 @@
("ؤ" "" :string)
("و" "" :string)
("ه" "" :string)
- ("ئ" "" :string)
("ی" "" :string)
+ ("ئ" "" :string)
("À" "" :string)
("à" "" :string)
- ("Æ" "" :string)
- ("æ" "" :string)
- ("Ç" "" :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)
+ ("Æ" "" :string)
+ ("æ" "" :string)
+ ("ç" "" :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)
- ("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)
+ ("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)
+ :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)
("Ê" "" :string)
- ("Æ" "" :string)
+ ("ê" "" :string)
("œ" "" :string)
("æ" "" :string)
+ ("Æ" "" :string)
("Œ" "" :string)
- ("d" "" :string)
- ("i" "" :string)
- ("K" "" :string)
- ("I" "" :string)
- ("l" "" :string)
- ("M" "" :string)
+ ("L" "" :string)
+ ("z" "" :string)
+ ("y" "" :string)
("D" "" :string)
- ("O" "" :string)
+ ("X" "" :string)
+ ("k" "" :string)
+ ("f" "" :string)
+ ("S" "" :string)
+ ("v" "" :string)
+ ("M" "" :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)
+ ("H" "" :string)
("p" "" :string)
- ("W" "" :string)
- ("B" "" :string)
- ("c" "" :string)
- ("z" "" :string)
- ("Q" "" :string)
- ("h" "" :string)
- ("r" "" :string)
+ ("e" "" :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)
+ ("b" "" :string)
+ ("h" "" :string)
("R" "" :string)
+ ("i" "" :string)
+ ("I" "" :string)
+ ("F" "" :string)
+ ("W" "" :string)
+ ("O" "" :string)
+ ("J" "" :string)
("j" "" :string)
- ("X" "" :string)
+ ("d" "" :string)
+ ("E" "" :string)
+ ("c" "" :string)
+ ("m" "" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("B" "" :string)
+ ("K" "" :string)
+ ("l" "" :string)
+ ("A" "" :string)
+ ("o" "" :string)
+ ("u" "" :string)
+ ("Y" "" :string)
+ ("Q" "" :string)
("Z" "" :string)
- ("b" "" :string)
+ ("n" "" :string)
+ ("q" "" :string)
("P" "" :string)
+ ("s" "" :string)
+ ("x" "" :string)
+ ("N" "" :string)
+ ("V" "" :string)
+ ("w" "" :string)
))
(define-rule-set "pe-resolve-case"
- :rules (("À" "8" :string)
- ("Ë" "8" :string)
- ("È" "8" :string)
- ("Ñ" "8" :string)
- ("É" "8" :string)
- ("Þ" "8" :string)
+ :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)
+ ("Ñ" "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)
- ("ع" "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)
+ ("C" "8" :string)
+ ("R" "8" :string)
+ ("L" "8" :string)
+ ("X" "8" :string)
+ ("D" "8" :string)
("M" "8" :string)
- ("I" "8" :string)
+ ("S" "8" :string)
+ ("A" "8" :string)
("K" "8" :string)
- ("D" "8" :string)
- ("R" "8" :string)
- ("P" "8" :string)
+ ("Y" "8" :string)
+ ("Q" "8" :string)
("Z" "8" :string)
- ("X" "8" :string)
("N" "8" :string)
- ("L" "8" :string)
+ ("P" "8" :string)
+ ("V" "8" :string)
+ ("F" "8" :string)
+ ("W" "8" :string)
+ ("J" "8" :string)
+ ("O" "8" :string)
+ ("I" "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)
+ ("t" "9" :string)
("e" "9" :string)
- ("n" "9" :string)
- ("s" "9" :string)
+ ("p" "9" :string)
+ ("b" "9" :string)
+ ("r" "9" :string)
+ ("i" "9" :string)
+ ("h" "9" :string)
+ ("z" "9" :string)
("y" "9" :string)
- ("m" "9" :string)
- ("u" "9" :string)
- ("q" "9" :string)
("v" "9" :string)
+ ("k" "9" :string)
+ ("f" "9" :string)
("a" "9" :string)
+ ("o" "9" :string)
+ ("u" "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)
+ ("q" "9" :string)
+ ("n" "9" :string)
+ ("s" "9" :string)
("x" "9" :string)
- ("k" "9" :string)
- ("o" "9" :string)
- ("r" "9" :string)
- ("h" "9" :string)
+ ("w" "9" :string)
+ ("j" "9" :string)
+ ("m" "9" :string)
+ ("d" "9" :string)
("c" "9" :string)
- ("z" "9" :string)
- ("p" "9" :string)
+ ("g" "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)
- ("{" "" :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)
+ ("ی" "" :string)
("ض" "" :string)
- ("ق" "" :string)
- ("À" "" :string)
+ ("ئ" "" :string)
+ ("Ö" "" :string)
+ ("ف" "" :string)
+ ("غ" "" :string)
+ ("د" "" :string)
("ح" "" :string)
+ ("ð" "" :string)
+ ("Ç" "" :string)
+ ("ن" "" :string)
+ ("ê" "" :string)
+ ("ژ" "" :string)
+ ("ë" "" :string)
+ ("ش" "" :string)
("ï" "" :string)
- ("ظ" "" :string)
- ("è" "" :string)
- ("گ" "" :string)
- ("Œ" "" :string)
- ("œ" "" :string)
+ ("ه" "" :string)
+ ("ؤ" "" :string)
+ ("ر" "" :string)
+ ("ل" "" :string)
+ ("Ê" "" :string)
+ ("ع" "" :string)
+ ("þ" "" :string)
("æ" "" :string)
+ ("Œ" "" :string)
("Æ" "" :string)
+ ("œ" "" :string)
("ّ" "" :string)
("َ" "" :string)
("ِ" "" :string)
@@ -527,61 +529,63 @@
("«" "" :string)
("»" "" :string)
("ـ" "" :string)
+ ("،" "" :string)
+ ("؛" "" :string)
("?" "" :string)
("!" "" :string)
("." "" :string)
+ ("j" "" :string)
+ ("J" "" :string)
+ ("W" "" :string)
("c" "" :string)
- ("p" "" :string)
- ("Q" "" :string)
- ("C" "" :string)
- ("r" "" :string)
- ("x" "" :string)
- ("k" "" :string)
+ ("E" "" :string)
+ ("d" "" :string)
+ ("m" "" :string)
+ ("G" "" :string)
+ ("l" "" :string)
("o" "" :string)
+ ("Z" "" :string)
+ ("n" "" :string)
+ ("Q" "" :string)
("w" "" :string)
+ ("D" "" :string)
+ ("z" "" :string)
+ ("k" "" :string)
+ ("M" "" :string)
+ ("v" "" :string)
+ ("T" "" :string)
+ ("e" "" :string)
+ ("p" "" :string)
("t" "" :string)
- ("N" "" :string)
+ ("r" "" :string)
("R" "" :string)
- ("j" "" :string)
- ("Z" "" :string)
- ("P" "" :string)
- ("d" "" :string)
+ ("h" "" :string)
("I" "" :string)
- ("M" "" :string)
- ("l" "" :string)
- ("a" "" :string)
- ("U" "" :string)
+ ("O" "" :string)
("F" "" :string)
- ("v" "" :string)
- ("T" "" :string)
- ("Y" "" :string)
- ("z" "" :string)
+ ("g" "" :string)
("B" "" :string)
- ("W" "" :string)
- ("h" "" :string)
+ ("K" "" :string)
+ ("u" "" :string)
("A" "" :string)
- ("G" "" :string)
+ ("Y" "" :string)
+ ("q" "" :string)
+ ("x" "" :string)
+ ("s" "" :string)
+ ("P" "" :string)
+ ("N" "" :string)
+ ("V" "" :string)
+ ("L" "" :string)
+ ("y" "" :string)
+ ("X" "" :string)
("S" "" :string)
("f" "" :string)
- ("E" "" :string)
- ("g" "" :string)
- ("L" "" :string)
+ ("a" "" :string)
+ ("H" "" :string)
+ ("U" "" :string)
+ ("C" "" :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)
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant3-utf8-lang.xdy
index 7f44812017..7f44812017 100644
--- a/indexing/xindy/contrib/xindy-persian/variant3-utf8-lang.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant3-utf8-lang.xdy
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant3-utf8-test.xdy
index ad7cbf91dd..ad7cbf91dd 100644
--- a/indexing/xindy/contrib/xindy-persian/variant3-utf8-test.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant3-utf8-test.xdy
diff --git a/indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy b/indexing/xindy/contrib/xindy-persian/persian/variant3-utf8.xdy
index b611539a13..90048616d8 100644
--- a/indexing/xindy/contrib/xindy-persian/variant3-utf8.xdy
+++ b/indexing/xindy/contrib/xindy-persian/persian/variant3-utf8.xdy
@@ -34,32 +34,32 @@
(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-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"
@@ -94,425 +94,427 @@
("ل" "" :string)
("م" "" :string)
("ن" "" :string)
- ("و" "" :string)
("ؤ" "" :string)
+ ("و" "" :string)
("ه" "" :string)
- ("ئ" "" :string)
("ی" "" :string)
- ("à" "" :string)
+ ("ئ" "" :string)
("À" "" :string)
- ("æ" "" :string)
- ("Æ" "" :string)
- ("ç" "" :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)
+ ("à" "" :string)
+ ("æ" "" :string)
+ ("Æ" "" :string)
+ ("Ç" "" :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)
- ("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)
+ ("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)
+ :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)
- ("À" "" :string)
+ ("Ñ" "" :string)
("ñ" "" :string)
- ("È" "" :string)
- ("è" "" :string)
+ ("Ö" "" :string)
("ô" "" :string)
("Ô" "" :string)
+ ("È" "" :string)
+ ("è" "" :string)
("Ë" "" :string)
("ë" "" :string)
("Ê" "" :string)
("ê" "" :string)
- ("œ" "" :string)
+ ("Œ" "" :string)
("Æ" "" :string)
+ ("œ" "" :string)
("æ" "" :string)
- ("Œ" "" :string)
- ("k" "" :string)
- ("R" "" :string)
+ ("V" "" :string)
+ ("X" "" :string)
+ ("Z" "" :string)
+ ("Q" "" :string)
("T" "" :string)
- ("o" "" :string)
- ("U" "" :string)
- ("D" "" :string)
- ("j" "" :string)
("z" "" :string)
- ("a" "" :string)
- ("p" "" :string)
+ ("H" "" :string)
+ ("j" "" :string)
+ ("m" "" :string)
+ ("o" "" :string)
+ ("W" "" :string)
("B" "" :string)
- ("f" "" :string)
- ("E" "" :string)
+ ("x" "" :string)
+ ("h" "" :string)
("g" "" :string)
- ("S" "" :string)
- ("K" "" :string)
- ("l" "" :string)
- ("v" "" :string)
- ("u" "" :string)
- ("i" "" :string)
+ ("w" "" :string)
+ ("G" "" :string)
+ ("f" "" :string)
+ ("q" "" :string)
("t" "" :string)
- ("O" "" :string)
- ("P" "" :string)
+ ("K" "" :string)
+ ("S" "" :string)
("s" "" :string)
+ ("r" "" :string)
+ ("P" "" :string)
+ ("b" "" :string)
+ ("O" "" :string)
+ ("F" "" :string)
("Y" "" :string)
- ("Z" "" :string)
+ ("i" "" :string)
+ ("a" "" :string)
+ ("R" "" :string)
+ ("p" "" :string)
+ ("I" "" :string)
+ ("e" "" :string)
("d" "" :string)
- ("q" "" :string)
+ ("k" "" :string)
+ ("U" "" :string)
+ ("u" "" :string)
("c" "" :string)
- ("J" "" :string)
- ("C" "" :string)
- ("m" "" :string)
+ ("N" "" :string)
+ ("l" "" :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)
+ ("E" "" :string)
("L" "" :string)
- ("h" "" :string)
- ("b" "" :string)
- ("H" "" :string)
- ("I" "" :string)
- ("V" "" :string)
+ ("C" "" :string)
+ ("n" "" :string)
+ ("D" "" :string)
+ ("J" "" :string)
+ ("v" "" :string)
))
(define-rule-set "pe-resolve-case"
- :rules (("ی" "8" :string)
+ :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)
("Ê" "8" :string)
("É" "8" :string)
- ("À" "8" :string)
- ("Ç" "8" :string)
- ("Ô" "8" :string)
- ("Þ" "8" :string)
- ("Æ" "89" :string)
+ ("Ë" "8" :string)
+ ("Ð" "8" :string)
("Œ" "89" :string)
- ("ئ" "9" :string)
- ("ه" "9" :string)
- ("ð" "9" :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)
("ñ" "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)
+ ("أ" "9" :string)
("æ" "99" :string)
+ ("œ" "99" :string)
+ ("U" "8" :string)
+ ("I" "8" :string)
+ ("R" "8" :string)
+ ("Y" "8" :string)
+ ("F" "8" :string)
("D" "8" :string)
- ("B" "8" :string)
+ ("J" "8" :string)
+ ("C" "8" :string)
+ ("L" "8" :string)
("E" "8" :string)
- ("R" "8" :string)
+ ("A" "8" :string)
+ ("M" "8" :string)
+ ("N" "8" :string)
+ ("G" "8" :string)
+ ("B" "8" :string)
+ ("W" "8" :string)
+ ("H" "8" :string)
+ ("Q" "8" :string)
("T" "8" :string)
- ("U" "8" :string)
+ ("X" "8" :string)
+ ("Z" "8" :string)
+ ("V" "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)
+ ("k" "9" :string)
+ ("d" "9" :string)
+ ("e" "9" :string)
+ ("p" "9" :string)
("i" "9" :string)
- ("s" "9" :string)
- ("g" "9" :string)
- ("q" "9" :string)
+ ("a" "9" :string)
+ ("v" "9" :string)
+ ("n" "9" :string)
+ ("y" "9" :string)
("c" "9" :string)
- ("m" "9" :string)
- ("d" "9" :string)
+ ("l" "9" :string)
("w" "9" :string)
- ("e" "9" :string)
("h" "9" :string)
+ ("g" "9" :string)
+ ("x" "9" :string)
+ ("o" "9" :string)
+ ("z" "9" :string)
+ ("j" "9" :string)
+ ("m" "9" :string)
("b" "9" :string)
- ("y" "9" :string)
("r" "9" :string)
- ("n" "9" :string)
- ("x" "9" :string)
+ ("s" "9" :string)
+ ("t" "9" :string)
+ ("q" "9" :string)
+ ("f" "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)
+ ("ٔ" "" :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)
- ("Ñ" "" :string)
- ("Ö" "" :string)
- ("Ð" "" :string)
- ("و" "" :string)
- ("ل" "" :string)
- ("ه" "" :string)
- ("ی" "" :string)
- ("ð" "" :string)
- ("Þ" "" :string)
("ط" "" :string)
- ("ê" "" :string)
- ("چ" "" :string)
- ("غ" "" :string)
- ("ب" "" :string)
- ("À" "" :string)
+ ("Ô" "" :string)
+ ("ô" "" :string)
+ ("Ç" "" :string)
+ ("ی" "" :string)
("à" "" :string)
- ("ر" "" :string)
- ("ا" "" :string)
- ("ع" "" :string)
+ ("ç" "" :string)
("ژ" "" :string)
- ("Œ" "" :string)
+ ("ل" "" :string)
+ ("È" "" :string)
+ ("ð" "" :string)
+ ("œ" "" :string)
("æ" "" :string)
("Æ" "" :string)
- ("œ" "" :string)
+ ("Œ" "" :string)
("ّ" "" :string)
("َ" "" :string)
("ِ" "" :string)
@@ -526,61 +528,63 @@
("«" "" :string)
("»" "" :string)
("ـ" "" :string)
+ ("،" "" :string)
+ ("؛" "" :string)
("?" "" :string)
("!" "" :string)
("." "" :string)
- ("P" "" :string)
- ("t" "" :string)
- ("v" "" :string)
+ ("A" "" :string)
+ ("E" "" :string)
+ ("C" "" :string)
+ ("n" "" :string)
+ ("D" "" :string)
+ ("R" "" :string)
+ ("p" "" :string)
+ ("a" "" :string)
+ ("i" "" :string)
+ ("I" "" :string)
("u" "" :string)
- ("l" "" :string)
+ ("U" "" :string)
+ ("f" "" :string)
+ ("q" "" :string)
("K" "" :string)
("S" "" :string)
- ("B" "" :string)
- ("f" "" :string)
- ("p" "" :string)
- ("D" "" :string)
+ ("r" "" :string)
+ ("V" "" :string)
("j" "" :string)
- ("a" "" :string)
+ ("W" "" :string)
("o" "" :string)
- ("k" "" :string)
- ("I" "" :string)
- ("H" "" :string)
- ("e" "" :string)
- ("X" "" :string)
- ("G" "" :string)
- ("N" "" :string)
+ ("T" "" :string)
("x" "" :string)
+ ("w" "" :string)
+ ("g" "" :string)
+ ("h" "" :string)
("y" "" :string)
- ("n" "" :string)
+ ("N" "" :string)
+ ("l" "" :string)
+ ("c" "" :string)
("M" "" :string)
+ ("L" "" :string)
+ ("v" "" :string)
+ ("J" "" :string)
("F" "" :string)
- ("C" "" :string)
- ("q" "" :string)
+ ("Y" "" :string)
+ ("k" "" :string)
+ ("e" "" :string)
+ ("d" "" :string)
("s" "" :string)
- ("i" "" :string)
+ ("t" "" :string)
+ ("P" "" :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)
+ ("X" "" :string)
+ ("m" "" :string)
+ ("z" "" :string)
+ ("H" "" :string)
+ ("Q" "" :string)
+ ("B" "" :string)
+ ("G" "" :string)
("-" "" :string)
("'" "" :string)
("{" "" :string)
diff --git a/indexing/xindy/contrib/xindy-persian/source/make-rules.pl b/indexing/xindy/contrib/xindy-persian/source/make-rules.pl
new file mode 100644
index 0000000000..c0f2f9c5ed
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/source/make-rules.pl
@@ -0,0 +1,269 @@
+#!/usr/bin/perl
+
+open XDY,">$ARGV[0].xdy";
+open DOC,">$ARGV[0]-doc.tex";
+open TEST,">$ARGV[0].raw";
+open TESTXDY,">$ARGV[0]-test.xdy";
+
+print XDY ";; Rules for xindy; generated by make-rules.pl\n";
+print XDY ";; language: $language\n\n";
+
+if ($prefix) {
+ $prefix = $prefix . '-';
+}
+
+print TESTXDY "(require \"lang/$ARGV[0].xdy\")\n";
+print TESTXDY "(define-sort-rule-orientations (forward backward forward forward))\n";
+print TESTXDY "(use-rule-set :run 0\n";
+print TESTXDY " :rule-set (\"".$prefix."alphabetize\" \"".$prefix."ignore-special\"))\n";
+print TESTXDY "(use-rule-set :run 1\n";
+print TESTXDY " :rule-set (\"".$prefix."resolve-diacritics\" \"".$prefix."ignore-special\"))\n";
+print TESTXDY "(use-rule-set :run 2\n";
+print TESTXDY " :rule-set (\"".$prefix."resolve-case\" \"".$prefix."ignore-special\"))\n";
+print TESTXDY "(use-rule-set :run 3\n";
+print TESTXDY " :rule-set (\"".$prefix."resolve-special\"))\n";
+close TESTXDY;
+
+$fn = "test.xdy";
+! -f $fn && -f "$INC[0]/$fn" and $fn = "$INC[0]/$fn";
+-f $fn or die "$fn: $!";
+system("cat $fn >> $ARGV[0]-test.xdy");
+
+$begin = 128;
+# $begin = 97 if ($script eq "cyrillic");
+# $begin = 150 if ($script eq "latin");
+# $begin = 65 if ($script eq "greek");
+
+if (!$begin) {
+ $begin = 65;
+}
+
+print "Alphabet has " . @{$alphabet} . " elements.\n";
+
+for ($i = 0; $i < @{$alphabet}; $i++) {
+ if (defined($alphabet->[$i][0])) {
+ $letter = $alphabet->[$i][0];
+ $lout = $letter;
+ $lout =~ s/\~/~~/g;
+ $lout =~ s/\"/~\"/g;
+ $token = chr($i+$begin);
+ $token =~ s/\~/~~/g;
+ $token =~ s/\"/~\"/g;
+ if ($after ne $lout) {
+ print XDY "\"))\n" if ($i);
+ print XDY "(define-letter-group \"$lout\"";
+ print XDY " :after \"$after\"" if ($i);
+ print XDY " :prefixes (\"";
+ } else {
+ print XDY "\" \"";
+ }
+ print XDY "$token";
+ $after = $lout;
+ }
+}
+
+print XDY "\"))\n\n";
+
+$ref = \$i;
+$offset = $begin;
+$f = 1;
+make_tokens();
+
+# print test raw file
+# alphabet
+ $p = 1;
+ foreach $letter (keys %tokens) {
+ print TEST "(indexentry :key (\"$letter\") :locref \"$p\")\n";
+ $p++;
+ }
+# end
+
+process_ligatures();
+
+print_tokens($prefix . "alphabetize");
+
+$ref = \$j;
+$offset = 161;
+$f = 1;
+make_tokens();
+
+for ($i = 0; $i < @{$ligatures}; $i++) {
+ if ($ligatures->[$i][1] eq "before") {
+ $token = chr(161);
+ } else {
+ $token = chr(255);
+ }
+ foreach $ligature_variant (@{$ligatures->[$i][0]}) {
+ $tokens{$ligature_variant} = $token;
+ }
+}
+
+print_tokens($prefix . "resolve-diacritics");
+
+$ref = \$k;
+$offset = 48;
+$f = 1;
+if ($sortcase eq "Aa") {
+ $offset = 57;
+ $f = -1;
+}
+
+make_tokens();
+
+process_ligatures();
+
+print_tokens($prefix . "resolve-case");
+
+foreach $character (@special) {
+ $tokens{$character} = "" unless ($character eq "letters");
+}
+
+print_tokens($prefix . "ignore-special");
+
+$offset = 161;
+$f = 1;
+
+for ($l = 0; $l < @special; $l++) {
+ if (@special[$l] eq "letters") {
+ $ref = \$l;
+ make_tokens();
+ process_ligatures();
+ } else {
+ $token = chr($l+$offset);
+ $tokens{@special[$l]} = $token;
+ }
+}
+
+print_tokens($prefix . "resolve-special");
+
+# print doc:
+# alphabet
+ for ($i = 0; $i < @{$alphabet}; $i++) {
+ for ($j = 1; $j < @{$alphabet->[$i]}; $j++) {
+ push @l,join("\\,", (@{$alphabet->[$i][$j]}));
+ }
+ if ((@l)) {
+ push @m, join(" & ", (@l));
+ }
+# push @m, "`".$alphabet->[$i][0]."':\\>".join(" -- ", (@l));
+ @l = ();
+ }
+ print DOC "\\subsection{$language";
+ print DOC " ($variant)" if ($variant);
+ print DOC "}\n\n";
+ print DOC "\\subsubsection{Alphabet}\n";
+ print DOC "\\icod\\fcod\n";
+ print DOC "\\begin{alphabet}\n";
+ print DOC join("\\\\\n", (@m));
+ print DOC "\n\\end{alphabet}\n";
+ print DOC "\\idef\\fdef\n";
+
+# ligatures
+ print DOC "\n\\subsubsection{Ligatures}\n";
+ print DOC "\\begin{flushleft}\n";
+ print DOC "None.\n" unless @{$ligatures};
+ @m = ();
+ for ($i = 0; $i < @{$ligatures}; $i++) {
+ for ($j = 0; $j < @{$ligatures->[$i][0]}; $j++) {
+ push @m, "`$ligatures->[$i][0][$j]' is sorted like `" .
+ join("\\,", (@{$ligatures->[$i][2][$j]})) .
+ "', but \\emph{$ligatures->[$i][1]} it in otherwise equal words.";
+ }
+ }
+ print DOC join("\\\\\n", (@m));
+ print DOC "\n\\end{flushleft}\n";
+
+# case
+ print DOC "\n\\subsubsection{Upper-/lowercase words}\n";
+ if ($sortcase eq "Aa") {
+ print DOC "Capitalized or uppercase words are sorted \\emph{before} ";
+ print DOC "otherwise equal lowercase words.\n";
+ } else {
+ print DOC "Capitalized or uppercase words are sorted \\emph{after} ";
+ print DOC "otherwise equal lowercase words.\n";
+ }
+
+# special
+print DOC "\n\\subsubsection{Special characters}\n";
+print DOC "The order of special characters and letters is:\n";
+print DOC "\\begin{flushleft}\n";
+print DOC join("\\hspace{4mm}", (@special));
+print DOC "\n\\end{flushleft}\n";
+print DOC "\\newpage\n";
+
+# end
+
+# print test raw file
+
+# for ($i = 0; $i < @{$alphabet}; $i++) {
+# for ($j = 1; $j < @{$alphabet->[$i]}; $j++) {
+# foreach $letter (@{$alphabet->[$i][$j]}) {
+# print TEST "(indexentry :key (\"$letter\") :locref \"$p\")\n";
+# $p++;
+# }
+# }
+# }
+
+# ligatures
+ for ($i = 0; $i < @{$ligatures}; $i++) {
+ for ($j = 0; $j < @{$ligatures->[$i][0]}; $j++) {
+ print TEST
+ "(indexentry :key (\"$ligatures->[$i][0][$j]\") :locref \"$p\")\n";
+ $p++;
+ print TEST "(indexentry :key (\"" .
+ join("", (@{$ligatures->[$i][2][$j]})) . "\") :locref \"$p\")\n";
+ $p++;
+ }
+ }
+
+# special
+foreach $letter (@special) {
+ if ($letter ne "letters") {
+ print TEST "(indexentry :key (\"$letter\") :locref \"$p\")\n";
+ $p++;
+ }
+}
+
+# end
+
+sub make_tokens {
+ for ($i = 0; $i < @{$alphabet}; $i++) {
+ for ($j = 1; $j < @{$alphabet->[$i]}; $j++) {
+ for ($k = 0; $k < @{$alphabet->[$i][$j]}; $k++) {
+ $token = chr($f*$$ref+$offset);
+ if ($alphabet->[$i][$j][$k]) {
+ $tokens{$alphabet->[$i][$j][$k]} = $token;
+ }
+ }
+ }
+ }
+}
+
+sub process_ligatures {
+ for ($i = 0; $i < @{$ligatures}; $i++) {
+ for ($j = 0; $j < @{$ligatures->[$i][0]}; $j++) {
+ $token = "";
+ foreach $ligature_component (@{$ligatures->[$i][2][$j]}) {
+ $token = $token.$tokens{$ligature_component};
+ }
+ $tokens{$ligatures->[$i][0][$j]} = $token;
+ }
+ }
+}
+
+sub print_tokens {
+ print XDY "(define-rule-set \"$_[0]\"\n\n :rules (";
+ foreach $letter (sort {
+ (length($b) <=> length($a)) || ($tokens{$a} cmp $tokens{$b})
+ } (keys %tokens)) {
+ $lout = $letter;
+ $lout =~ s/\~/~~/g;
+ $lout =~ s/\"/~\"/g;
+ $tout = $tokens{$letter};
+ $tout =~ s/\~/~~/g;
+ $tout =~ s/\"/~\"/g;
+ print XDY "(\"$lout\" \"$tout\" :string)\n ";
+ }
+ print XDY "))\n\n";
+ %tokens = ();
+}
diff --git a/indexing/xindy/contrib/xindy-persian/source/test.xdy b/indexing/xindy/contrib/xindy-persian/source/test.xdy
new file mode 100644
index 0000000000..a843dafb8d
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/source/test.xdy
@@ -0,0 +1,82 @@
+
+;; 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/source/variant1-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/source/variant1-utf8.pl.in
new file mode 100644
index 0000000000..87c79de1a3
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/source/variant1-utf8.pl.in
@@ -0,0 +1,181 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "One";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['ا',['آ']],
+['ا',['أ']],
+['ا',['ا']],
+['ب',['ب']],
+['پ',['پ']],
+['ت',['ت']],
+['ث',['ث']],
+['ج',['ج']],
+['چ',['چ']],
+['ح',['ح']],
+['خ',['خ']],
+['د',['د']],
+['ذ',['ذ']],
+['ر',['ر']],
+['ز',['ز']],
+['ژ',['ژ']],
+['س',['س']],
+['ش',['ش']],
+['ص',['ص']],
+['ض',['ض']],
+['ط',['ط']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['ف',['ف']],
+['ق',['ق']],
+['ک',['ک']],
+['گ',['گ']],
+['ل',['ل']],
+['م',['م']],
+['ن',['ن']],
+['و',['ؤ','و']],
+['ه',['ه']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+[@u{'Ȝ', ['ȝ','Ȝ']}],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+[@u{'ƿ', ['ƿ','Ƿ']}],
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$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/source/variant2-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/source/variant2-utf8.pl.in
new file mode 100644
index 0000000000..fe5c594262
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/source/variant2-utf8.pl.in
@@ -0,0 +1,181 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "Two";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['آ',['آ']],
+['ا',['أ']],
+['ا',['ا']],
+['ب',['ب']],
+['پ',['پ']],
+['ت',['ت']],
+['ث',['ث']],
+['ج',['ج']],
+['چ',['چ']],
+['ح',['ح']],
+['خ',['خ']],
+['د',['د']],
+['ذ',['ذ']],
+['ر',['ر']],
+['ز',['ز']],
+['ژ',['ژ']],
+['س',['س']],
+['ش',['ش']],
+['ص',['ص']],
+['ض',['ض']],
+['ط',['ط']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['ف',['ف']],
+['ق',['ق']],
+['ک',['ک']],
+['گ',['گ']],
+['ل',['ل']],
+['م',['م']],
+['ن',['ن']],
+['و',['ؤ','و']],
+['ه',['ه']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+[@u{'Ȝ', ['ȝ','Ȝ']}],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+[@u{'ƿ', ['ƿ','Ƿ']}],
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$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/source/variant3-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/source/variant3-utf8.pl.in
new file mode 100644
index 0000000000..3f3d32c94c
--- /dev/null
+++ b/indexing/xindy/contrib/xindy-persian/source/variant3-utf8.pl.in
@@ -0,0 +1,181 @@
+#!/usr/bin/perl
+
+$language = "Persian";
+$variant = "Three";
+$prefix = "pe";
+$script = "arabic";
+
+$alphabet = [
+['الف',['آ']],
+['الف',['أ']],
+['الف',['ا']],
+['ب',['ب']],
+['پ',['پ']],
+['ت',['ت']],
+['ث',['ث']],
+['ج',['ج']],
+['چ',['چ']],
+['ح',['ح']],
+['خ',['خ']],
+['د',['د']],
+['ذ',['ذ']],
+['ر',['ر']],
+['ز',['ز']],
+['ژ',['ژ']],
+['س',['س']],
+['ش',['ش']],
+['ص',['ص']],
+['ض',['ض']],
+['ط',['ط']],
+['ظ',['ظ']],
+['ع',['ع']],
+['غ',['غ']],
+['ف',['ف']],
+['ق',['ق']],
+['ک',['ک']],
+['گ',['گ']],
+['ل',['ل']],
+['م',['م']],
+['ن',['ن']],
+['و',['ؤ','و']],
+['ه',['ه']],
+['ی',['ئ','ی']],
+['A', ['a','A'],['à','À']],
+ [], # a with breve (romanian)
+ [], # a with circumflex (romanian)
+ [], # a with ogonek (polish)
+['B', ['b','B']],
+ [], # b with hook (hausa)
+['C', ['c','C'],['ç','Ç']],
+ [], # ch (spanish/traditional)
+ [], # cs (hungarian)
+ [], # c with caron (many)
+ [], # c with acute (croatian, lower sorbian, polish)
+ [], # c with circumflex (esperanto)
+ [], # c with cedilla (albanian, kurdish, turkish)
+['D', ['d','D'],['ð','Ð']],
+ [], # dh (albanian)
+ [], # dz (hungarian)
+ [], # dzs (hungarian)
+ [], # d+z with caron (croatian)
+ [], # d+z with acute (upper sorbian)
+ [], # d with caron (slovak/large)
+ [], # d with stroke (croatian)
+ [], # d with hook (hausa)
+ [], # eth (icelandic)
+['E', ['e','E'],['é','É'],['è','È'],['ë','Ë'],['ê','Ê']],
+ [], # e with caron (lower/upper sorbian)
+ [], # e with circumflex (kurdish)
+ [], # e with diaeresis (albanian)
+ [], # e with ogonek (polish)
+['F', ['f','F']],
+['G', ['g','G']],
+ [], # gj (albanian)
+ [], # gy (hungarian)
+ [], # g with circumflex (esperanto)
+ [], # g with breve (turkish)
+ [], # g with cedilla/comma (latvian)
+ [], # postpalatal fricative (gypsy/northrussian)
+['H', ['h','H']],
+ [], # h with circumflex (esperanto)
+ [], # ch (many)
+ [], # dotless i (turkish)
+['I', ['i','I'],['ï','Ï']],
+ [], # i with inverted breve below (gypsy/northrussian)
+ [], # i with circumflex (kurdish, romanian)
+ [], # i with diaeresis (gypsy/northrussian)
+['J', ['j','J']],
+ [], # j with circumflex (esperanto)
+['K', ['k','K']],
+ [], # kh (gypsy/northrussian)
+ [], # k with cedilla/comma (latvian)
+ [], # k with hook (hausa)
+ [], # x (gypsy/northrussian)
+ [], # l with stroke (lower/upper sorbian)
+['L', ['l','L']],
+ [], # lj (croatian)
+ [], # ll (albanian, spanish/traditional)
+ [], # ly (hungarian)
+ [], # l with cedilla/comma (latvian)
+ [], # l with stroke (polish)
+ [], # l with caron (slovak/large)
+['M', ['m','M']],
+['N', ['n','N'],['ñ','Ñ']],
+ [], # nj (albanian, croatian)
+ [], # ny (hungarian)
+ [], # n with caron (slovak/large)
+ [], # n with acute (lower/upper sorbian, polish)
+ [], # n with tilde (spanish/modern, spanish/traditional)
+ [], # n with cedilla/comma (latvian)
+['O', ['o','O'],['ö','Ö'],['ô','Ô']],
+ [], # o with acute (polish, upper sorbian)
+ [], # o with circumflex (vietnamese)
+ [], # o with horn (vietnamese)
+ [], # o with diaeresis (hungarian, turkish)
+['P', ['p','P']],
+ [], # ph (gypsy/northrussian)
+['Q', ['q','Q']],
+['R', ['r','R']],
+ [], # rr (albanian)
+ [], # r with caron (czech, slovak/large, upper sorbian)
+ [], # r with acute (lower sorbian)
+ [], # r with cedilla/comma (latvian)
+['S', ['s','S']],
+ [], # sh (albanian)
+ [], # sz (hungarian)
+ [], # s with caron (many)
+ [], # s with acute (lower sorbian, polish)
+ [], # s with circumflex (esperanto)
+ [], # s with comma below (romanian)
+ [], # s with cedilla (kurdish, turkish)
+ [], # z (estonian)
+ [], # z with caron (estonian)
+['T', ['t','T']],
+ [], # th (albanian)
+ [], # ty (hungarian)
+ [], # t with caron (slovak/large)
+ [], # t with comma below (romanian)
+ [], # c with acute (upper sorbian)
+['U', ['u','U']],
+ [], # u with breve (esperanto)
+ [], # u with circumflex (kurdish)
+ [], # u with horn (vietnamese)
+ [], # u with diaeresis (hungarian, turkish)
+['V', ['v','V']],
+['W', ['w','W']],
+ [], # o with tilde (estonian)
+ [], # a with diaeresis (estonian)
+ [], # o with diaeresis (estonian)
+ [], # u with diaeresis (estonian)
+['X', ['x','X']],
+ [], # xh (albanian)
+['Y', ['y','Y']],
+ [], # y preceded by apostrophe (hausa)
+[@u{'Ȝ', ['ȝ','Ȝ']}],
+['Z', ['z','Z']],
+ [], # zh (albanian)
+ [], # zs (hungarian)
+ [], # z with caron (many)
+ [], # z with acute (lower sorbian, polish)
+ [], # z with dot above (polish)
+['Þ', ['þ','Þ']],
+[@u{'ƿ', ['ƿ','Ƿ']}],
+ [], # ligature ae (danish, icelandic, norwegian)
+ [], # o with stroke (danish, norwegian)
+ [], # a with ring above (danish, norwegian, swedish)
+ [], # a with diaeresis (finnish, swedish)
+ [], # o with diaeresis (finnish, swedish)
+ [], # a with ring above (icelandic)
+];
+
+$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.pl.in b/indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in
deleted file mode 100644
index 9d14f9f37c..0000000000
--- a/indexing/xindy/contrib/xindy-persian/variant1-utf8.pl.in
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/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/variant2-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in
deleted file mode 100644
index 9c7fdfaa29..0000000000
--- a/indexing/xindy/contrib/xindy-persian/variant2-utf8.pl.in
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/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/variant3-utf8.pl.in b/indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in
deleted file mode 100644
index 4f4d091451..0000000000
--- a/indexing/xindy/contrib/xindy-persian/variant3-utf8.pl.in
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/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';