summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex/arabxetex/makemaps.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/xelatex/arabxetex/makemaps.pl')
-rwxr-xr-xMaster/texmf-dist/source/xelatex/arabxetex/makemaps.pl1117
1 files changed, 1117 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/xelatex/arabxetex/makemaps.pl b/Master/texmf-dist/source/xelatex/arabxetex/makemaps.pl
new file mode 100755
index 00000000000..231a6b5c8ea
--- /dev/null
+++ b/Master/texmf-dist/source/xelatex/arabxetex/makemaps.pl
@@ -0,0 +1,1117 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $name="arabtex";
+my $master="$name.maps";
+my $output="mappings/$name";
+mkdir("mappings");
+
+#languages = arab maghribi farsi urdu pashto sindhi kashmiri kurdish turk malay uighur
+# but kurdish and uighur are coded separately
+
+# First the mappings for fonts that have the glyph U+FDF2 with initial alif
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@An // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*n // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#-[BPUTSKOM]+n // ;
+ s/^#-[BPUTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Av // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*v // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#-[BPUTSKOM]+v // ;
+ s/^#-[BPUTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Af // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*[vf] // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#-[BPUTSKOM]+[vf] // ;
+ s/^#-[BPUTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+## maghribi
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-maghribi-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Bn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*n // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#[A-Z]*B[A-Z]*n // ;
+ s/^#[A-Z]*B[A-Z]* // ;
+ s/^#-[PUTSKOM]+n // ;
+ s/^#-[PUTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-maghribi-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Bv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*v // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#[A-Z]*B[A-Z]*v // ;
+ s/^#[A-Z]*B[A-Z]* // ;
+ s/^#-[PUTSKOM]+v // ;
+ s/^#-[PUTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-maghribi-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Bf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*[vf] // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#[A-Z]*B[A-Z]*[vf] // ;
+ s/^#[A-Z]*B[A-Z]* // ;
+ s/^#-[PUTSKOM]+[vf] // ;
+ s/^#-[PUTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+### farsi
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-farsi-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Pn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*P[A-Z]*n // ;
+ s/^#[A-Z]*P[A-Z]* // ;
+ s/^#-[ABUTSKOM]+n // ;
+ s/^#-[ABUTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-farsi-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Pv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*P[A-Z]*v // ;
+ s/^#[A-Z]*P[A-Z]* // ;
+ s/^#-[ABUTSKOM]+v // ;
+ s/^#-[ABUTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-farsi-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Pf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*P[A-Z]*[vf] // ;
+ s/^#[A-Z]*P[A-Z]* // ;
+ s/^#-[ABUTSKOM]+[vf] // ;
+ s/^#-[ABUTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+### urdu
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-urdu-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Un // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*U[A-Z]*n // ;
+ s/^#[A-Z]*U[A-Z]* // ;
+ s/^#-[ABPTSKOM]+n // ;
+ s/^#-[ABPTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-urdu-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Uv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*U[A-Z]*v // ;
+ s/^#[A-Z]*U[A-Z]* // ;
+ s/^#-[ABPTSKOM]+v // ;
+ s/^#-[ABPTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-urdu-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Uf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*U[A-Z]*[vf] // ;
+ s/^#[A-Z]*U[A-Z]* // ;
+ s/^#-[ABPTSKOM]+[vf] // ;
+ s/^#-[ABPTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###sindhi
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-sindhi-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Sn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*S[A-Z]*n // ;
+ s/^#[A-Z]*S[A-Z]* // ;
+ s/^#-[ABPUTKOM]+n // ;
+ s/^#-[ABPUTKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-sindhi-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Sv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*S[A-Z]*v // ;
+ s/^#[A-Z]*S[A-Z]* // ;
+ s/^#-[ABPUTKOM]+v // ;
+ s/^#-[ABPUTKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-sindhi-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Sf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*S[A-Z]*[vf] // ;
+ s/^#[A-Z]*S[A-Z]* // ;
+ s/^#-[ABPUTKOM]+[vf] // ;
+ s/^#-[ABPUTKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###pashto
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-pashto-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Tn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*T[A-Z]*n // ;
+ s/^#[A-Z]*T[A-Z]* // ;
+ s/^#-[ABPUSKOM]+n // ;
+ s/^#-[ABPUSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-pashto-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Tv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*T[A-Z]*v // ;
+ s/^#[A-Z]*T[A-Z]* // ;
+ s/^#-[ABPUSKOM]+v // ;
+ s/^#-[ABPUSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-pashto-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Tf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*T[A-Z]*[vf] // ;
+ s/^#[A-Z]*T[A-Z]* // ;
+ s/^#-[ABPUSKOM]+[vf] // ;
+ s/^#-[ABPUSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+###turk
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-turk-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@On // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*O[A-Z]*n // ;
+ s/^#[A-Z]*O[A-Z]* // ;
+ s/^#-[ABPUSKTM]+n // ;
+ s/^#-[ABPUSKTM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-turk-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Ov // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*O[A-Z]*v // ;
+ s/^#[A-Z]*O[A-Z]* // ;
+ s/^#-[ABPUSKTM]+v // ;
+ s/^#-[ABPUSKTM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-turk-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Of // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*O[A-Z]*[vf] // ;
+ s/^#[A-Z]*O[A-Z]* // ;
+ s/^#-[ABPUSKTM]+[vf] // ;
+ s/^#-[ABPUSKTM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###kashmiri
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-kashmiri-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Kn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*K[A-Z]*n // ;
+ s/^#[A-Z]*K[A-Z]* // ;
+ s/^#-[ABPUSOTM]+n // ;
+ s/^#-[ABPUSOTM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-kashmiri-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Kv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*K[A-Z]*v // ;
+ s/^#[A-Z]*K[A-Z]* // ;
+ s/^#-[ABPUSOTM]+v // ;
+ s/^#-[ABPUSOTM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-kashmiri-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Kf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*K[A-Z]*[vf] // ;
+ s/^#[A-Z]*K[A-Z]* // ;
+ s/^#-[ABPUSOTM]+[vf] // ;
+ s/^#-[ABPUSOTM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###malay
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-malay-novoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Mn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*M[A-Z]*n // ;
+ s/^#[A-Z]*M[A-Z]* // ;
+ s/^#-[ABPUSKOT]+n // ;
+ s/^#-[ABPUSKOT]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-malay-voc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Mv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*M[A-Z]*v // ;
+ s/^#[A-Z]*M[A-Z]* // ;
+ s/^#-[ABPUSKOT]+v // ;
+ s/^#-[ABPUSKOT]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2alif-malay-fullvoc.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ s/^\@Mf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*M[A-Z]*[vf] // ;
+ s/^#[A-Z]*M[A-Z]* // ;
+ s/^#-[ABPUSKOT]+[vf] // ;
+ s/^#-[ABPUSKOT]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+## Now the mappings for fonts that do not include the initial alif in U+FDF2
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@An // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*n // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#-[BPUTSKOM]+n // ;
+ s/^#-[BPUTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Av // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*v // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#-[BPUTSKOM]+v // ;
+ s/^#-[BPUTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Af // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*[vf] // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#-[BPUTSKOM]+[vf] // ;
+ s/^#-[BPUTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+## maghribi
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-maghribi-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Bn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*n // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#[A-Z]*B[A-Z]*n // ;
+ s/^#[A-Z]*B[A-Z]* // ;
+ s/^#-[PUTSKOM]+n // ;
+ s/^#-[PUTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-maghribi-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Bv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*v // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#[A-Z]*B[A-Z]*v // ;
+ s/^#[A-Z]*B[A-Z]* // ;
+ s/^#-[PUTSKOM]+v // ;
+ s/^#-[PUTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-maghribi-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Bf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*A[A-Z]*[vf] // ;
+ s/^#[A-Z]*A[A-Z]* // ;
+ s/^#[A-Z]*B[A-Z]*[vf] // ;
+ s/^#[A-Z]*B[A-Z]* // ;
+ s/^#-[PUTSKOM]+[vf] // ;
+ s/^#-[PUTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+} ;
+close OUTPUT;
+close MAPS;
+
+### farsi
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-farsi-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Pn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*P[A-Z]*n // ;
+ s/^#[A-Z]*P[A-Z]* // ;
+ s/^#-[ABUTSKOM]+n // ;
+ s/^#-[ABUTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-farsi-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Pv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*P[A-Z]*v // ;
+ s/^#[A-Z]*P[A-Z]* // ;
+ s/^#-[ABUTSKOM]+v // ;
+ s/^#-[ABUTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-farsi-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Pf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*P[A-Z]*[vf] // ;
+ s/^#[A-Z]*P[A-Z]* // ;
+ s/^#-[ABUTSKOM]+[vf] // ;
+ s/^#-[ABUTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+### urdu
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-urdu-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Un // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*U[A-Z]*n // ;
+ s/^#[A-Z]*U[A-Z]* // ;
+ s/^#-[ABPTSKOM]+n // ;
+ s/^#-[ABPTSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-urdu-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Uv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*U[A-Z]*v // ;
+ s/^#[A-Z]*U[A-Z]* // ;
+ s/^#-[ABPTSKOM]+v // ;
+ s/^#-[ABPTSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-urdu-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Uf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*U[A-Z]*[vf] // ;
+ s/^#[A-Z]*U[A-Z]* // ;
+ s/^#-[ABPTSKOM]+[vf] // ;
+ s/^#-[ABPTSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###sindhi
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-sindhi-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Sn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*S[A-Z]*n // ;
+ s/^#[A-Z]*S[A-Z]* // ;
+ s/^#-[ABPUTKOM]+n // ;
+ s/^#-[ABPUTKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-sindhi-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Sv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*S[A-Z]*v // ;
+ s/^#[A-Z]*S[A-Z]* // ;
+ s/^#-[ABPUTKOM]+v // ;
+ s/^#-[ABPUTKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-sindhi-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Sf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*S[A-Z]*[vf] // ;
+ s/^#[A-Z]*S[A-Z]* // ;
+ s/^#-[ABPUTKOM]+[vf] // ;
+ s/^#-[ABPUTKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###pashto
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-pashto-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Tn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*T[A-Z]*n // ;
+ s/^#[A-Z]*T[A-Z]* // ;
+ s/^#-[ABPUSKOM]+n // ;
+ s/^#-[ABPUSKOM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-pashto-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Tv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*T[A-Z]*v // ;
+ s/^#[A-Z]*T[A-Z]* // ;
+ s/^#-[ABPUSKOM]+v // ;
+ s/^#-[ABPUSKOM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-pashto-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Tf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*T[A-Z]*[vf] // ;
+ s/^#[A-Z]*T[A-Z]* // ;
+ s/^#-[ABPUSKOM]+[vf] // ;
+ s/^#-[ABPUSKOM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+###turk
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-turk-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@On // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*O[A-Z]*n // ;
+ s/^#[A-Z]*O[A-Z]* // ;
+ s/^#-[ABPUSKTM]+n // ;
+ s/^#-[ABPUSKTM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-turk-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Ov // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*O[A-Z]*v // ;
+ s/^#[A-Z]*O[A-Z]* // ;
+ s/^#-[ABPUSKTM]+v // ;
+ s/^#-[ABPUSKTM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-turk-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Of // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*O[A-Z]*[vf] // ;
+ s/^#[A-Z]*O[A-Z]* // ;
+ s/^#-[ABPUSKTM]+[vf] // ;
+ s/^#-[ABPUSKTM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###kashmiri
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-kashmiri-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Kn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*K[A-Z]*n // ;
+ s/^#[A-Z]*K[A-Z]* // ;
+ s/^#-[ABPUSOTM]+n // ;
+ s/^#-[ABPUSOTM]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-kashmiri-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Kv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*K[A-Z]*v // ;
+ s/^#[A-Z]*K[A-Z]* // ;
+ s/^#-[ABPUSOTM]+v // ;
+ s/^#-[ABPUSOTM]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-kashmiri-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Kf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*K[A-Z]*[vf] // ;
+ s/^#[A-Z]*K[A-Z]* // ;
+ s/^#-[ABPUSOTM]+[vf] // ;
+ s/^#-[ABPUSOTM]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+###malay
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-malay-novoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Mn // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*M[A-Z]*n // ;
+ s/^#[A-Z]*M[A-Z]* // ;
+ s/^#-[ABPUSKOT]+n // ;
+ s/^#-[ABPUSKOT]+ // ;
+ s/^#n // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-malay-voc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Mv // ;
+ s/^\@v // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*M[A-Z]*v // ;
+ s/^#[A-Z]*M[A-Z]* // ;
+ s/^#-[ABPUSKOT]+v // ;
+ s/^#-[ABPUSKOT]+ // ;
+ s/^#v // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+
+open MAPS, "<$master" ;
+open OUTPUT, ">$output-fdf2noalif-malay-fullvoc.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ s/^\@Mf // ;
+ s/^\@.+\n//m ;
+ s/^#[A-Z]*M[A-Z]*[vf] // ;
+ s/^#[A-Z]*M[A-Z]* // ;
+ s/^#-[ABPUSKOT]+[vf] // ;
+ s/^#-[ABPUSKOT]+ // ;
+ s/^#[vf] // ;
+ s/^#.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+# Now Kurdish and Uighur...
+
+open MAPS, "<arabtex-kurdish.maps" ;
+open OUTPUT, ">$output-fdf2noalif-kurdish.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<arabtex-uighur.maps" ;
+open OUTPUT, ">$output-fdf2noalif-uighur.map";
+while (<MAPS>) {
+ s/^#0 // ;
+ s/^#1.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<arabtex-kurdish.maps" ;
+open OUTPUT, ">$output-fdf2alif-kurdish.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+open MAPS, "<arabtex-uighur.maps" ;
+open OUTPUT, ">$output-fdf2alif-uighur.map";
+while (<MAPS>) {
+ s/^#1 // ;
+ s/^#0.+\n//m ;
+ print OUTPUT
+}
+close OUTPUT;
+close MAPS;
+
+# Let's compile them now
+system("cp *.map mappings/");
+system("for map in mappings/*.map; do echo \"compiling \$map ...\" && teckit_compile \$map; done");
+
+