From ea36cf1b393aed7652593bba4164790837051671 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 29 Apr 2007 23:16:41 +0000 Subject: new package arabxetex (17apr07) git-svn-id: svn://tug.org/texlive/trunk@4212 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/xelatex/arabxetex/README | 22 + .../doc/xelatex/arabxetex/arabtex-kurdish.maps | 292 +++ .../doc/xelatex/arabxetex/arabtex-uighur.maps | 281 +++ .../texmf-dist/doc/xelatex/arabxetex/arabtex.maps | 774 ++++++++ .../texmf-dist/doc/xelatex/arabxetex/arabxetex.dtx | 1973 ++++++++++++++++++++ .../texmf-dist/doc/xelatex/arabxetex/arabxetex.pdf | Bin 0 -> 286083 bytes .../doc/xelatex/arabxetex/ednotes_example.pdf | Bin 0 -> 105573 bytes .../doc/xelatex/arabxetex/ednotes_example.tex | 211 +++ .../texmf-dist/doc/xelatex/arabxetex/makemaps.pl | 1117 +++++++++++ 9 files changed, 4670 insertions(+) create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/README create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/arabtex-kurdish.maps create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/arabtex-uighur.maps create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/arabtex.maps create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.dtx create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.pdf create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.pdf create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.tex create mode 100644 Master/texmf-dist/doc/xelatex/arabxetex/makemaps.pl (limited to 'Master/texmf-dist/doc/xelatex/arabxetex') diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/README b/Master/texmf-dist/doc/xelatex/arabxetex/README new file mode 100644 index 00000000000..ce0357d4654 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/arabxetex/README @@ -0,0 +1,22 @@ +-------------------------- +THE ARABXETEX PACKAGE v1.0 + +This package provides a convenient ArabTeX-like user-interface for typesetting +languages using the Arabic script in XeLaTeX, with flexible access to font +features. Input in ArabTeX notation can be set in three different +vocalization modes or in roman transliteration. Direct UTF-8 input is also +supported. Since most of the ‘real work’ -- namely parsing and converting +ArabTeX input to Unicode -- is done at the level of TECkit mappings, +ArabXeTeX is really performant. + +* Installation: + +The TECkit fontmapping files (*.map and *.tec) should be copied to +/fonts/misc/xetex/fontmapping/arabxetex/ + +arabxetex.sty should be copied to +/tex/xelatex/arabxetex/ + +------------------------- +François Charette +2007 diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/arabtex-kurdish.maps b/Master/texmf-dist/doc/xelatex/arabxetex/arabtex-kurdish.maps new file mode 100644 index 00000000000..5a990a2d077 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/arabxetex/arabtex-kurdish.maps @@ -0,0 +1,292 @@ +LHSName "ArabTeX-Kurdish" +RHSName "UNICODE" + +Define a U+0061 ;a +Define b U+0062 ;b +Define c U+0063 ;c +Define d U+0064 ;d +Define e U+0065 ;e +Define f U+0066 ;f +Define g U+0067 ;g +Define h U+0068 ;h +Define i U+0069 ;i +Define j U+006A ;j +Define k U+006B ;k +Define l U+006C ;l +Define m U+006D ;m +Define n U+006E ;n +Define o U+006F ;o +Define p U+0070 ;p +Define q U+0071 ;q +Define r U+0072 ;r +Define s U+0073 ;s +Define t U+0074 ;t +Define u U+0075 ;u +Define v U+0076 ;v +Define w U+0077 ;w +Define x U+0078 ;x +Define y U+0079 ;y +Define z U+007A ;z +Define A U+0041 ;A +Define B U+0042 ;B +Define E U+0045 ;E +Define G U+0047 ;G +Define I U+0049 ;I +Define N U+004E ;N +Define O U+004F ;O +Define T U+0054 ;T +Define U U+0055 ;U +Define Y U+0059 ;Y +Define C U+005E ;^ << CARET +Define UL U+005F ;_ << UNDERLINE +Define P U+002E ;. << DOT +Define V U+002C ;, << COMMA (_V_irgule) +Define CO U+003A ;: << COLON +Define Ain U+0060 ;` +Define H U+0027 ;' << HAMZA +Define Q U+0022 ;" << QUOTE +Define Z U+002D ;- << HYPHEN +Define BAR U+007C ;| +Define LLAH U+006C U+006C U+005F U+0061 U+0068 + +pass(Unicode) + +Class [Digits] = (U+0030..U+0039) +Class [ArDigits] = (U+0660..U+0669) + + +; special ligatures +;; 1. Standard ArabTeX input +;; WARNING! there are, alas, two classes of Arabic fonts: +;; a) Those that are Unicode-compliant and include the initial alif in glyph U+FDF2 +;; For these the ligature llah can be accessed by the sequence lam-lam-ha +;; b) Those that do not have the initial alif in U+FDF2 +#0 (a|A) l Z LLAH > U+0627 U+FDF2 ;; 'al-ll_ah' or 'Al-ll_ah' +#1 (a|A) l Z LLAH > U+FDF2 ;; 'al-ll_ah' or 'Al-ll_ah' +#0 LLAH > U+FDF2 ;; 'll_ah' > U+FDF2 +#1 LLAH > U+0644 U+0644 U+0647 ;; 'll_ah' -> 'l l h' +;; UPPERCASE mnemonics for various ligatures or special glyphs +;; 2a. custom ArabXeTeX input for ligatures not defined in Unicode +U+004C U+004C U+0048 > U+0644 U+0644 U+0647 ;; 'LLH' -> 'l l h' +U+0046 U+0041 U+004C U+0049 U+004C U+004C U+0041 U+0048 > U+0641 U+064E U+0644 U+0650 U+0644 U+0647 ;; 'FALILLAH' : ligature in Adobe Arabic +;; 2b. Ligatures and glyphs defined in Unicode: +#0 U+0041 U+004C U+004C U+0041 U+0048 > U+0627 U+FDF2 ; 'ALLAH' +#1 U+0041 U+004C U+004C U+0041 U+0048 > U+FDF2 ; 'ALLAH' +#0 U+004C U+004C U+0041 U+0048 > U+FDF2 ; 'LLAH' +#1 U+004C U+004C U+0041 U+0048 > U+0644 U+0644 U+0647 ; 'LLAH' + +U+0053 U+004C U+004D > U+FDFA ; 'SLM' : .sallY al-ll_ah `alayhi wa-sallam +U+0028 U+0028 > U+FD3F ;; '((' : ornate right par +U+0029 U+0029 > U+FD3E ;; '))' : ornate left par +U+0052 U+0049 U+0059 U+0041 U+004C > U+FDFC ;; 'RIYAL' : Saudi currency sign +;; most fonts won't have the following ones: +U+0053 U+0041 U+004C U+004C U+0041 U+0053 U+0054 U+004F U+0050 > U+FDF0 ;; 'SALLASTOP' (.sallY with "ye-barree", Quranic stop sign) +U+0051 U+0041 U+004C U+0041 > U+FDF1 ;; 'QALA' : qalY with ye-barree, Quranic stop sign +U+0041 U+004B U+0042 U+0041 U+0052 > U+FDF3 ;; 'AKBAR' +U+004D U+0055 U+0048 U+0041 U+004D U+004D U+0041 U+0044 > U+FDF4 ;; 'MUHAMMAD' +U+0053 U+0041 U+004C U+0041 U+004D > U+FDF5 ;; 'SALAM' +U+0052 U+0041 U+0053 U+004F ? U+0055 U+004C > U+FDF6 ;; 'RASUL' (also unicode 'RASOUL)' +U+0041 U+004C U+0041 U+0059 U+0048 (U+0049|U+0045) > U+FDF7 ;; 'ALAYHI' (also unicode 'ALAYHE)' +U+0057 U+0041 U+0053 U+0041 U+004C U+004C U+0041 U+004D > U+FDF8 ;; 'WASALLAM' +U+0053 U+0041 U+004C U+004C U+0041 > U+FDF9 ;; 'SALLA' +U+004A U+0041 U+004C U+004C U+0041 > U+FDFB ;; 'JALLA' : "jalla jalAluhu" +U+0042 U+0041 U+0053 U+004D U+0041 U+004C U+0041 > U+FDFD ;; 'BASMALA' : very few fonts have this ligature afaik + +U+005E U+0053 U+004C U+0059 > U+06D6 ;; ^SLY +U+005E U+0051 U+004C U+0059 > U+06D7 ;; ^QLY +U+005E U+004D U+0049 U+004D > U+06D8 ;; ^MIM- +U+005E U+004C U+0041 > U+06D9 ;; ^LA +U+005E U+004A U+0049 U+004D > U+06DA ;; ^JIM +U+005E U+0044 U+004F U+0054 U+0053 > U+06DB ;; ^DOTS +U+005E U+0053 U+0049 U+004E > U+06DC ;; ^SIN +U+0048 U+0049 U+005A U+0042 > U+06DE ;; HIZB +U+0043 U+0049 U+0052 U+0043 U+005A U+0045 U+0052 U+004F > U+06DF ;; CIRCZERO +U+0052 U+0045 U+0043 U+0054 U+005A U+0045 U+0052 U+004F > U+06E0 ;; RECTZERO +U+005E U+004A U+0041 U+005A U+004D > U+06E1 ;; ^JAZM +U+005E U+004D U+0049 U+004D > U+06E2 ;; ^MIM +U+005F U+0053 U+0049 U+004E > U+06E3 ;; _SIN +U+005E U+004D U+0041 U+0044 U+0044 U+0041 > U+06E4 ;; ^MADDA +U+0057 U+0041 U+0057 > U+06E5 ;; WAW +U+0059 U+0045 U+0048 > U+06E6 ;; YEH +U+005E U+0059 U+0045 U+0048 > U+06E7 ;; ^YEH +U+005E U+004E U+0055 U+004E > U+06E8 ;; ^NUN +U+0053 U+0041 U+004A U+0044 U+0041 > U+06E9 ;; SAJDA +U+005F U+0053 U+0054 U+004F U+0050 > U+06EA ;; _STOP +U+005E U+0053 U+0054 U+004F U+0050 > U+06EB ;; ^STOP +U+005E U+0052 U+0053 U+0054 U+004F U+0050 > U+06EC ;; ^RSTOP +U+005F U+004D U+0049 U+004D > U+06ED ;; _MIM + +U+0044 U+004F U+0054 U+0053 > U+061E ;; DOTS (also possible by typing "::") + +;; This is to enclose digits within glyph U+06DD, see http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=ArabicFonts +U+005B U+005B ([Digits]+)=dig U+005D U+005D > U+202E U+06DD @dig U+202C ; [[digits]] + + +; vowels + +E / # _ > U+0626 U+06CE +E > U+06CE +e / # _ > U+0626 U+0647 U+200C ; h always final +e > U+0647 U+200C +i / # _ > U+0626 +Q i > U+0650 +i > ; +Q I / # _ > U+0626 U+064A U+0650 +Q I > U+064A U+0650 +I / # _ > U+0626 U+064A +I > U+064A +(a|A) / # _ > U+0626 U+0627 +(a|A) > U+0627 +(o|O) / # _ > U+0626 U+06C6 +(o|O) > U+06C6 +u / # _ > U+0626 U+0648 +u > U+0648 +U / # _ > U+0626 U+0648 U+0648 +U > U+0648 U+0648 +Ain e > U+0639 U+0647 U+200C + + +P z P z > U+0638 U+0651 ;;SHADDA +P z > U+0638 +C z C z > U+0698 U+0651 ;;SHADDA +C z > U+0698 +V z V z > U+0696 U+0651 ;pashto ;;SHADDA +V z > U+0696 ;pashto +z z > U+0632 U+0651 ;;SHADDA +z > U+0632 +Y Y > U+0649 U+0651 ;;SHADDA +Y > U+0649 +w w > U+06CB U+0651 ;;SHADDA +w > U+06CB +y y > U+064A U+0651 ;;SHADDA +y > U+064A +v v > U+06A4 U+0651 ;;SHADDA +v > U+06A4 +V t V t > U+0679 U+0651 ; urdu ;;SHADDA +V t > U+0679 +UL t UL t > U+062B U+0651 ;;SHADDA +UL t > U+062B +P t P t > U+0637 U+0651 ;;SHADDA +P t > U+0637 +t t > U+062A U+0651 ;;SHADDA +t > U+062A +T T > U+0629 U+0651 ;;SHADDA +T > U+0629 +(C|V) s (C|V) s > U+0634 U+0651 ;;SHADDA +(C|V) s > U+0634 +P s P s > U+0635 U+0651 ;;SHADDA +P s > U+0635 +CO s CO s > U+069B U+0651 +CO s > U+069B ; sin with 3 dots below +s s > U+0633 U+0651 ;;SHADDA +s > U+0633 +;; also missing U+0694 : r with dot below +V r V r > U+0694 U+0651 ;Kurdish ;;SHADDA +V r > U+0694 +C r C r > U+0692 U+0651 ;Kurdish ;;SHADDA ; missing in ArabTeX <<< +C r > U+0692 +P r P r > U+0695 U+0651 ;Kurdish ;;SHADDA +P r > U+0695 +r r > U+0631 U+0651 ;;SHADDA +r > U+0631 +P q P q > U+066F U+0651 ;;SHADDA +P q > U+066F +q q > U+0642 U+0651 ;;SHADDA +q > U+0642 +p p > U+067E U+0651 ;;SHADDA +p > U+067E +C n C n > U+06AD U+0651 ;;SHADDA +C n > U+06AD +P n P n > U+06BA U+0651 ; urdu ;;SHADDA +P n > U+06BA ; +V n V n > U+06BC U+0651 ; Pashto +V n > U+06BC ; Pashto +n n > U+0646 U+0651 ;;SHADDA +n > U+0646 +m m > U+0645 U+0651 ;;SHADDA +m > U+0645 +P l P l > U+06B6 U+0651 ; +P l > U+06B6 ; ADDED <<< +C l C l > U+06B5 U+0651 ;kurdish ;;SHADDA +C l > U+06B5 +l l > U+0644 U+0651 ;;SHADDA +l > U+0644 +P k P k > U+06A9 U+0651 ; pashto urdu ;;SHADDA +P k > U+06A9 +UL k UL k > U+063A U+0651 ;;SHADDA +UL k > U+063A +k k > U+0643 U+0651 ;;SHADDA +k > U+0643 +c c > U+062C U+0651 ;;SHADDA +c > U+062C +x x > U+062E U+0651 ;;SHADDA +x > U+062E +UL h UL h > U+062E U+0651 ;;SHADDA +UL h > U+062E +P h P h > U+062D U+0651 ;;SHADDA +P h > U+062D +V h V h > U+06C1 U+0651 +V h > U+06C1 +h h > U+200C U+06BE U+0651 ;;SHADDA +h > U+200C U+06BE ; h always initial form +V g V g > U+06AC U+0651 ;;SHADDA +V g > U+06AC ; kaf with dot above +P (g|x) P (g|x) > U+063A U+0651 ;;SHADDA +P (g|x) > U+063A +C g C g > U+063A U+0651 ;;SHADDA +C g > U+063A +g g > U+06AF U+0651 ;;SHADDA +g > U+06AF +G G > U+06AB U+0651 ;pashto ;;SHADDA +G > U+06AB ;pashto +P f P f > U+06A1 U+0651 ;;SHADDA +P f > U+06A1 +f f > U+0641 U+0651 ;;SHADDA +f > U+0641 +V d V d > U+0688 U+0651 ;urdu ;;SHADDA +V d > U+0688 ;urdu +C d C d > U+06EE ; not defined in ArabTeX U+0651 ;;SHADDA +C d > U+06EE ; not defined in ArabTeX +UL d UL d > U+0630 U+0651 ;;SHADDA +UL d > U+0630 +P d P d > U+0636 U+0651 ;;SHADDA +P d > U+0636 +d d > U+062F U+0651 ;;SHADDA +d > U+062F +(C|V) c (C|V) c > U+0686 U+0651 ;;SHADDA +(C|V) c > U+0686 +P b P b > U+066E U+0651 ;;SHADDA +P b > U+066E +b b > U+0628 U+0651 ;;SHADDA +b > U+0628 +Ain Ain > U+0639 U+0651 ;;SHADDA +Ain > U+0639 +H > U+0626 +U+002C / [Digits] _ [Digits] > U+002C ; comma in numerical context not an Arabic comma +Z Z / [Digits] _ [Digits] > U+2013 ; two hyphens in numerical context -> endash +(Z|U+005D|U+005B|U+0028|U+0029)=xx / [Digits] _ [Digits] > U+202D @xx U+202C ; hyphen or brackets in numerical context: surrounded by LRO & PDF marks +[Digits] > [ArDigits] +Z Z Z / # _ # > U+2014 +Z Z / # _ # > U+2013 +Z Z > U+0640 +B > U+0640 +Z / # _ > U+200D ; -x > force initial form with "zero-width joiner" +Z / _ # > U+200D ; x- > force final form +U+003C U+003C > U+00BB ;<< +U+003E U+003E > U+00AB ;>> +U+00AB > U+00BB +U+00BB > U+00AB +UL > U+0640 ;_ +U+003F > U+061F ;? +U+003B > U+061B ;; +U+003A U+003A > U+061E ;; '::' ligature 'DOTS' also defined above... +U+002C > U+060C ;, +U+005D / . _ . > U+200D U+005D U+200D ; keep shaping when inserting ...[...]... +U+005B / . _ . > U+200D U+005B U+200D ; ... (but of course this screws up contextual analysis, so quoting of hamzas etc may be necessary) +Q > ; +N > ; +C > ;^ +Z > ;- +BAR > ;| + + diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/arabtex-uighur.maps b/Master/texmf-dist/doc/xelatex/arabxetex/arabtex-uighur.maps new file mode 100644 index 00000000000..27da35ca0d2 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/arabxetex/arabtex-uighur.maps @@ -0,0 +1,281 @@ +LHSName "ArabTeX-Uighur" +RHSName "UNICODE" + +Define a U+0061 ;a +Define b U+0062 ;b +Define c U+0063 ;c +Define d U+0064 ;d +Define e U+0065 ;e +Define f U+0066 ;f +Define g U+0067 ;g +Define h U+0068 ;h +Define i U+0069 ;i +Define j U+006A ;j +Define k U+006B ;k +Define l U+006C ;l +Define m U+006D ;m +Define n U+006E ;n +Define o U+006F ;o +Define p U+0070 ;p +Define q U+0071 ;q +Define r U+0072 ;r +Define s U+0073 ;s +Define t U+0074 ;t +Define u U+0075 ;u +Define v U+0076 ;v +Define w U+0077 ;w +Define x U+0078 ;x +Define y U+0079 ;y +Define z U+007A ;z +Define A U+0041 ;A +Define B U+0042 ;B +Define E U+0045 ;E +Define G U+0047 ;G +Define I U+0049 ;I +Define N U+004E ;N +Define O U+004F ;O +Define T U+0054 ;T +Define U U+0055 ;U +Define Y U+0059 ;Y +Define C U+005E ;^ << CARET +Define UL U+005F ;_ << UNDERLINE +Define P U+002E ;. << DOT +Define V U+002C ;, << COMMA (_V_irgule) +Define CO U+003A ;: << COLON +Define Ain U+0060 ;` +Define H U+0027 ;' << HAMZA +Define Q U+0022 ;" << QUOTE +Define Z U+002D ;- << HYPHEN +Define BAR U+007C ;| +Define LLAH U+006C U+006C U+005F U+0061 U+0068 + +pass(Unicode) + +Class [Digits] = (U+0030..U+0039) +Class [ArDigits] = (U+0660..U+0669) + + +; special ligatures +;; 1. Standard ArabTeX input +;; WARNING! there are, alas, two classes of Arabic fonts: +;; a) Those that are Unicode-compliant and include the initial alif in glyph U+FDF2 +;; For these the ligature llah can be accessed by the sequence lam-lam-ha +;; b) Those that do not have the initial alif in U+FDF2 +#0 (a|A) l Z LLAH > U+0627 U+FDF2 ;; 'al-ll_ah' or 'Al-ll_ah' +#1 (a|A) l Z LLAH > U+FDF2 ;; 'al-ll_ah' or 'Al-ll_ah' +#0 LLAH > U+FDF2 ;; 'll_ah' > U+FDF2 +#1 LLAH > U+0644 U+0644 U+0647 ;; 'll_ah' -> 'l l h' +;; UPPERCASE mnemonics for various ligatures or special glyphs +;; 2a. custom ArabXeTeX input for ligatures not defined in Unicode +U+004C U+004C U+0048 > U+0644 U+0644 U+0647 ;; 'LLH' -> 'l l h' +U+0046 U+0041 U+004C U+0049 U+004C U+004C U+0041 U+0048 > U+0641 U+064E U+0644 U+0650 U+0644 U+0647 ;; 'FALILLAH' : ligature in Adobe Arabic +;; 2b. Ligatures and glyphs defined in Unicode: +#0 U+0041 U+004C U+004C U+0041 U+0048 > U+0627 U+FDF2 ; 'ALLAH' +#1 U+0041 U+004C U+004C U+0041 U+0048 > U+FDF2 ; 'ALLAH' +#0 U+004C U+004C U+0041 U+0048 > U+FDF2 ; 'LLAH' +#1 U+004C U+004C U+0041 U+0048 > U+0644 U+0644 U+0647 ; 'LLAH' + +U+0053 U+004C U+004D > U+FDFA ; 'SLM' : .sallY al-ll_ah `alayhi wa-sallam +U+0028 U+0028 > U+FD3F ;; '((' : ornate right par +U+0029 U+0029 > U+FD3E ;; '))' : ornate left par +U+0052 U+0049 U+0059 U+0041 U+004C > U+FDFC ;; 'RIYAL' : Saudi currency sign +;; most fonts won't have the following ones: +U+0053 U+0041 U+004C U+004C U+0041 U+0053 U+0054 U+004F U+0050 > U+FDF0 ;; 'SALLASTOP' (.sallY with "ye-barree", Quranic stop sign) +U+0051 U+0041 U+004C U+0041 > U+FDF1 ;; 'QALA' : qalY with ye-barree, Quranic stop sign +U+0041 U+004B U+0042 U+0041 U+0052 > U+FDF3 ;; 'AKBAR' +U+004D U+0055 U+0048 U+0041 U+004D U+004D U+0041 U+0044 > U+FDF4 ;; 'MUHAMMAD' +U+0053 U+0041 U+004C U+0041 U+004D > U+FDF5 ;; 'SALAM' +U+0052 U+0041 U+0053 U+004F ? U+0055 U+004C > U+FDF6 ;; 'RASUL' (also unicode 'RASOUL)' +U+0041 U+004C U+0041 U+0059 U+0048 (U+0049|U+0045) > U+FDF7 ;; 'ALAYHI' (also unicode 'ALAYHE)' +U+0057 U+0041 U+0053 U+0041 U+004C U+004C U+0041 U+004D > U+FDF8 ;; 'WASALLAM' +U+0053 U+0041 U+004C U+004C U+0041 > U+FDF9 ;; 'SALLA' +U+004A U+0041 U+004C U+004C U+0041 > U+FDFB ;; 'JALLA' : "jalla jalAluhu" +U+0042 U+0041 U+0053 U+004D U+0041 U+004C U+0041 > U+FDFD ;; 'BASMALA' : very few fonts have this ligature afaik + +U+005E U+0053 U+004C U+0059 > U+06D6 ;; ^SLY +U+005E U+0051 U+004C U+0059 > U+06D7 ;; ^QLY +U+005E U+004D U+0049 U+004D > U+06D8 ;; ^MIM +U+005E U+004C U+0041 > U+06D9 ;; ^LA +U+005E U+004A U+0049 U+004D > U+06DA ;; ^JIM +U+005E U+0044 U+004F U+0054 U+0053 > U+06DB ;; ^DOTS +U+005E U+0053 U+0049 U+004E > U+06DC ;; ^SIN +U+0048 U+0049 U+005A U+0042 > U+06DE ;; HIZB +U+0043 U+0049 U+0052 U+0043 U+005A U+0045 U+0052 U+004F > U+06DF ;; CIRCZERO +U+0052 U+0045 U+0043 U+0054 U+005A U+0045 U+0052 U+004F > U+06E0 ;; RECTZERO +U+0053 U+0041 U+004A U+0044 U+0041 > U+06E9 ;; SAJDA + +U+0044 U+004F U+0054 U+0053 > U+061E ;; DOTS (also possible by typing "::") + +;; This is to enclose digits within glyph U+06DD, see http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=ArabicFonts +U+005B U+005B ([Digits]+)=dig U+005D U+005D > U+202E U+06DD @dig U+202C ; [[digits]] + + +; vowels + +a / # _ > U+0626 U+0627 +a > U+0627 +(CO a|U+00E4) / # _ > U+0626 U+0647 U+200C +(CO a|U+00E4) > U+0647 U+200C +o / # _ > U+0626 U+0648 ; +o > U+0648 ; +(CO o|U+00F6) / # _ > U+0626 U+06C6 +(CO o|U+00F6) > U+06C6 +i / # _ # > U+0626 U+0649 +i / # _ > U+0626 U+066E +i / _ # > U+0649 +i > U+066E +e / # _ > U+0626 U+06D0 +e > U+06D0 +u / # _ > U+0626 U+06C7 ; +u > U+06C7 ; +(CO u|U+00FC) / # _ > U+0626 U+06C8 ; +(CO u|U+00FC) > U+06C8 ; +l Q a > U+0644 U+064E U+0627 ; +l a > U+0644 U+0627 ; + +P z P z > U+0638 U+0651 ;;SHADDA +P z > U+0638 +C z C z > U+0698 U+0651 ;;SHADDA +C z > U+0698 +V z V z > U+0696 U+0651 ;pashto ;;SHADDA +V z > U+0696 ;pashto +z z > U+0632 U+0651 ;;SHADDA +z > U+0632 +Y Y > U+0649 U+0651 ;;SHADDA +Y > U+0649 +w w > U+06CB U+0651 ;;SHADDA +w > U+06CB +y y > U+064A U+0651 ;;SHADDA +y > U+064A +v v > U+06A4 U+0651 ;;SHADDA +v > U+06A4 +V t V t > U+0679 U+0651 ; urdu ;;SHADDA +V t > U+0679 +UL t UL t > U+062B U+0651 ;;SHADDA +UL t > U+062B +P t P t > U+0637 U+0651 ;;SHADDA +P t > U+0637 +t t > U+062A U+0651 ;;SHADDA +t > U+062A +T T > U+0629 U+0651 ;;SHADDA +T > U+0629 +C s C s > U+0634 U+0651 ;;SHADDA +C s > U+0634 +P s P s > U+0635 U+0651 ;;SHADDA +P s > U+0635 +V s V s > U+069A U+0651 ;Pashto ;;SHADDA +V s > U+069A ;Pashto +CO s > U+069B ; sin with 3 dots below +s s > U+0633 U+0651 ;;SHADDA +s > U+0633 +C r C r > U+0692 U+0651 ;Kurdish ;;SHADDA ; missing in ArabTeX <<< +C r > U+0692 +P r P r > U+0695 U+0651 ;Kurdish ;;SHADDA +P r > U+0695 +V r V r > U+0691 U+0651 ;Urdu ;;SHADDA +V r > U+0691 ;Urdu +r r > U+0631 U+0651 ;;SHADDA +r > U+0631 +P q P q > U+066F U+0651 ;;SHADDA +P q > U+066F +q q > U+0642 U+0651 ;;SHADDA +q > U+0642 +p p > U+067E U+0651 ;;SHADDA +p > U+067E +C n C n > U+06AD U+0651 ;;SHADDA +C n > U+06AD +P n P n > U+06BA U+0651 ; urdu ;;SHADDA +P n > U+06BA ; +V n V n > U+06BC U+0651 ; Pashto +V n > U+06BC ; Pashto +n n > U+0646 U+0651 ;;SHADDA +n > U+0646 +m m > U+0645 U+0651 ;;SHADDA +m > U+0645 +C l C l > U+06B5 U+0651 ;kurdish ;;SHADDA +C l > U+06B5 +l l > U+0644 U+0651 ;;SHADDA +l > U+0644 +P k P k > U+06A9 U+0651 ; pashto urdu ;;SHADDA +P k > U+06A9 +UL k UL k > U+063A U+0651 ;;SHADDA +UL k > U+063A +k k > U+0643 U+0651 ;;SHADDA +k > U+0643 +j j > U+062C U+0651 ;;SHADDA +j > U+062C +x x > U+062E U+0651 ;;SHADDA +x > U+062E +UL h UL h > U+062E U+0651 ;;SHADDA +UL h > U+062E +P h P h > U+062D U+0651 ;;SHADDA +P h > U+062D +V h V h > U+06C1 U+0651 +V h > U+06C1 +h h > U+0647 U+0651 ;;SHADDA +h > U+0647 +V g V g > U+06AC U+0651 ;;SHADDA +V g > U+06AC ; kaf with dot above +P g P g > U+063A U+0651 ;;SHADDA +P g > U+063A +C g C g > U+063A U+0651 ;;SHADDA +C g > U+063A +g g > U+06AF U+0651 ;;SHADDA +g > U+06AF +G G > U+06AB U+0651 ;pashto ;;SHADDA +G > U+06AB ;pashto +P f P f > U+06A1 U+0651 ;;SHADDA +P f > U+06A1 +f f > U+0641 U+0651 ;;SHADDA +f > U+0641 +V d V d > U+0688 U+0651 ;urdu ;;SHADDA +V d > U+0688 ;urdu +C d C d > U+06EE ; not defined in ArabTeX U+0651 ;;SHADDA +C d > U+06EE ; not defined in ArabTeX +UL d UL d > U+0630 U+0651 ;;SHADDA +UL d > U+0630 +P d P d > U+0636 U+0651 ;;SHADDA +P d > U+0636 +d d > U+062F U+0651 ;;SHADDA +d > U+062F +V c V c > U+0685 U+0651 ;pashto ;;SHADDA +V c > U+0685 +C c C c > U+0686 U+0651 ;;SHADDA +C c > U+0686 +c c > U+0681 U+0651 +c > U+0681 ; ح with hamza above +P b P b > U+066E U+0651 ;;SHADDA +P b > U+066E +b b > U+0628 U+0651 ;;SHADDA +b > U+0628 +Ain Ain > U+0639 U+0651 ;;SHADDA +Ain > U+0639 +H > U+0626 +U+002C / [Digits] _ [Digits] > U+002C ; comma in numerical context not an Arabic comma +Z Z / [Digits] _ [Digits] > U+2013 ; two hyphens in numerical context -> endash +(Z|U+005D|U+005B|U+0028|U+0029)=xx / [Digits] _ [Digits] > U+202D @xx U+202C ; hyphen or brackets in numerical context: surrounded by LRO & PDF marks +[Digits] > [ArDigits] +Z Z Z / # _ # > U+2014 +Z Z / # _ # > U+2013 +Z Z > U+0640 +B > U+0640 +Z / # _ > U+200D ; -x > force initial form with "zero-width joiner" +Z / _ # > U+200D ; x- > force final form +U+003C U+003C > U+00BB ;<< +U+003E U+003E > U+00AB ;>> +U+00AB > U+00BB +U+00BB > U+00AB +UL > U+0640 ;_ +U+003F > U+061F ;? +U+003B > U+061B ;; +U+003A U+003A > U+061E ;; '::' ligature 'DOTS' also defined above... +U+002C > U+060C ;, +U+005D / . _ . > U+200D U+005D U+200D ; keep shaping when inserting ...[...]... +U+005B / . _ . > U+200D U+005B U+200D ; ... (but of course this screws up contextual analysis, so quoting of hamzas etc may be necessary) +Q > ; +N > ; +C > ;^ +Z > ;- +BAR > ;| + + diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/arabtex.maps b/Master/texmf-dist/doc/xelatex/arabxetex/arabtex.maps new file mode 100644 index 00000000000..e195cd98bf2 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/arabxetex/arabtex.maps @@ -0,0 +1,774 @@ +## This is the master file to generate the TECkit ArabTeX font mappings +## for use with XeTeX +## The mappings are generated with a simple sed script +## +## Conventions used: +## --------------------------------------------------------------------------------- +## Lines starting with ## are comments that don't appear in the map files +## +## Lines that don't begin with # are common to all mappings +## Otherwise the letters following '#' indicate specific mappings +## according to vocalization modes and languages +## #...n -> non-vocalized +## #...v -> vocalized and fully voc. +## #...f -> fully voc. +## @v -> voc only +## The language codes are: +## A -> Arabic +# B -> Maghribi Arabic +## P -> Persian +## U -> Urdu +## T -> Pashto +## S -> Sindhi +## K -> Kashmiri +## O -> Ottoman Turkish +## M -> Malay +## KURDISH AND UIGHUR ARE CODED SEPARATELY <<< +## The above can be negated with #-[APUTSKOM] +## Lines starting with '@[AP...][nvf]' are specific to the mapping +## indicated by the two-letter key, following the conventions above +## ---------------------------------------------------------------------------------- +@An LHSName "ArabTeX-novowels" +@Av LHSName "ArabTeX-vocalized" +@Af LHSName "ArabTeX-fullvocalized" +@Bn LHSName "ArabTeX-maghribi-novowels" +@Bv LHSName "ArabTeX-maghribi-vocalized" +@Bf LHSName "ArabTeX-maghribi-fullvocalized" +@Pn LHSName "ArabTeX-farsi-novowels" +@Pv LHSName "ArabTeX-farsi-vocalized" +@Pf LHSName "ArabTeX-farsi-fullvocalized" +@Un LHSName "ArabTeX-urdu-novowels" +@Uv LHSName "ArabTeX-urdu-vocalized" +@Uf LHSName "ArabTeX-urdu-fullvocalized" +@Sn LHSName "ArabTeX-sindhi-novowels" +@Sv LHSName "ArabTeX-sindhi-vocalized" +@Sf LHSName "ArabTeX-sindhi-fullvocalized" +@Kn LHSName "ArabTeX-kashmiri-novowels" +@Kv LHSName "ArabTeX-kashmiri-vocalized" +@Kf LHSName "ArabTeX-kashmiri-fullvocalized" +@Tn LHSName "ArabTeX-pashto-novowels" +@Tv LHSName "ArabTeX-pashto-vocalized" +@Tf LHSName "ArabTeX-pashto-fullvocalized" +## @Kn LHSName "ArabTeX-kurdish-novowels" +## @Kv LHSName "ArabTeX-kurdish-vocalized" +## @Kf LHSName "ArabTeX-kurdish-fullvocalized" +@On LHSName "ArabTeX-turk-novowels" +@Ov LHSName "ArabTeX-turk-vocalized" +@Of LHSName "ArabTeX-turk-fullvocalized" +@Mn LHSName "ArabTeX-malay-novowels" +@Mv LHSName "ArabTeX-malay-vocalized" +@Mf LHSName "ArabTeX-malay-fullvocalized" +## @Rn LHSName "ArabTeX-uighur-novowels" +## @Rv LHSName "ArabTeX-uighur-vocalized" +## @Rf LHSName "ArabTeX-uighur-fullvocalized" +## +## +RHSName "UNICODE" + +Define a U+0061 ;a +Define b U+0062 ;b +Define c U+0063 ;c +Define d U+0064 ;d +Define e U+0065 ;e +Define f U+0066 ;f +Define g U+0067 ;g +Define h U+0068 ;h +Define i U+0069 ;i +Define j U+006A ;j +Define k U+006B ;k +Define l U+006C ;l +Define m U+006D ;m +Define n U+006E ;n +Define o U+006F ;o +Define p U+0070 ;p +Define q U+0071 ;q +Define r U+0072 ;r +Define s U+0073 ;s +Define t U+0074 ;t +Define u U+0075 ;u +Define v U+0076 ;v +Define w U+0077 ;w +Define x U+0078 ;x +Define y U+0079 ;y +Define z U+007A ;z +Define A U+0041 ;A +Define B U+0042 ;B +Define E U+0045 ;E +Define G U+0047 ;G +Define I U+0049 ;I +Define N U+004E ;N +Define O U+004F ;O +Define T U+0054 ;T +Define U U+0055 ;U +Define W U+0057 ;W +Define Y U+0059 ;Y +Define C U+005E ;^ << CARET +Define UL U+005F ;_ << UNDERLINE +Define P U+002E ;. << DOT +Define V U+002C ;, << COMMA (_V_irgule) +Define CO U+003A ;: << COLON +Define SC U+003B ;; << SEMICOLON +Define Ain U+0060 ;` +Define H U+0027 ;' << HAMZA +Define Q U+0022 ;" << QUOTE +Define Z U+002D ;- << HYPHEN +Define BAR U+007C ;| +Define AN U+0061 U+004E ; aN +Define LLAH U+006C U+006C U+005F U+0061 U+0068 +;Define NUL U+00A6; +Define Ha U+0623 +Define Hi U+0625 +Define Hy U+0626 +Define Hw U+0624 +Define Hh U+06C0 ;; = U+0647 U+0654 +Define HA U+0622 +Define HB U+0640 U+0654 +Define HBAR U+0621 ; '| + +pass(Unicode) + +U+E000 > ; eliminate special code for capitalization in transliterations + +pass(Unicode) + +Class [VWL] = (U+0061 U+0065 U+0069 U+006F U+0075 ) ;(a e i o u) +Class [LTR] = (U+0061..U+007A U+0041 U+0045 U+0047 U+0049 U+004F U+0055 U+0042 U+004E U+0054 U+0059 U+005E U+002E U+005F U+0022 U+0027 U+0060) ;a..z A E I O U B N T Y ^ . _ " "" ` +Class [BRACKETS] = (U+003C U+003E U+00AB U+00BB U+0028 U+0029 U+005B U+005D U+2018 U+2019 U+201C U+201D); < > () « » [ ] ‘ ’ “ ” +Class [PUNCT] = (V SC P CO) +Class [Iy] = (U+0049 U+0079) ;(I y) +Class [Uw] = (U+0055 U+0077) ;(U w) +Class [Uwu] = (U+0055 U+0077 U+0075) ;(U w u) +;Class [ae] = (U+0061 U+0065) ;(a e) +;Class [ou] = (U+0075 U+006F) ;(u o) +Class [Iyi] = (U+0069 U+0079 U+0049) +Class [UI] = (U+0049 U+0055) ; U I +Class [Digits] = (U+0030..U+0039) + +Define BEG (#|Z|[BRACKETS]) +Define END (#|[BRACKETS]|[PUNCT] U+0020|[PUNCT] #) + +; special ligatures +;; 1. Standard ArabTeX input +;; WARNING! there are, alas, two classes of Arabic fonts: +;; a) Those that are Unicode-compliant and include the initial alif in glyph U+FDF2 +;; For these the ligature llah can be accessed by the sequence lam-lam-ha +;; b) Those that do not have the initial alif in U+FDF2 +#0 (a|A) l Z LLAH > U+0627 U+FDF2 ;; 'al-ll_ah' or 'Al-ll_ah' +#1 (a|A) l Z LLAH > U+FDF2 ;; 'al-ll_ah' or 'Al-ll_ah' +#0 LLAH > U+FDF2 ;; 'll_ah' > U+FDF2 +#1 LLAH > U+0644 U+0644 U+0647 ;; 'll_ah' -> 'l l h' +;; UPPERCASE mnemonics for various ligatures or special glyphs +;; 2a. custom ArabXeTeX input for ligatures not defined in Unicode +U+004C U+004C U+0048 > U+0644 U+0644 U+0647 ;; 'LLH' -> 'l l h' +U+0046 U+0041 U+004C U+0049 U+004C U+004C U+0041 U+0048 > U+0641 U+064E U+0644 U+0650 U+0644 U+0647 ;; 'FALILLAH' : ligature in Adobe Arabic +;; 2b. Ligatures and glyphs defined in Unicode: +#0 U+0041 U+004C U+004C U+0041 U+0048 > U+0627 U+FDF2 ; 'ALLAH' +#1 U+0041 U+004C U+004C U+0041 U+0048 > U+FDF2 ; 'ALLAH' +#0 U+004C U+004C U+0041 U+0048 > U+FDF2 ; 'LLAH' +#1 U+004C U+004C U+0041 U+0048 > U+0644 U+0644 U+0647 ; 'LLAH' + +U+0053 U+004C U+004D > U+FDFA ; 'SLM' : .sallY al-ll_ah `alayhi wa-sallam +U+0028 U+0028 > U+FD3F ;; '((' : ornate right par +U+0029 U+0029 > U+FD3E ;; '))' : ornate left par +U+0052 U+0049 U+0059 U+0041 U+004C > U+FDFC ;; 'RIYAL' : Saudi currency sign +;; most fonts won't have the following ones: +U+0053 U+0041 U+004C U+004C U+0041 U+0053 U+0054 U+004F U+0050 > U+FDF0 ;; 'SALLASTOP' (.sallY with "ye-barree", Quranic stop sign) +U+0051 U+0041 U+004C U+0041 > U+FDF1 ;; 'QALA' : qalY with ye-barree, Quranic stop sign +U+0041 U+004B U+0042 U+0041 U+0052 > U+FDF3 ;; 'AKBAR' +U+004D U+0055 U+0048 U+0041 U+004D U+004D U+0041 U+0044 > U+FDF4 ;; 'MUHAMMAD' +U+0053 U+0041 U+004C U+0041 U+004D > U+FDF5 ;; 'SALAM' +U+0052 U+0041 U+0053 U+004F ? U+0055 U+004C > U+FDF6 ;; 'RASUL' (also unicode 'RASOUL') +U+0041 U+004C U+0041 U+0059 U+0048 (U+0049|U+0045) > U+FDF7 ;; 'ALAYHI' (also unicode 'ALAYHE') +U+0057 U+0041 U+0053 U+0041 U+004C U+004C U+0041 U+004D > U+FDF8 ;; 'WASALLAM' +U+0053 U+0041 U+004C U+004C U+0041 > U+FDF9 ;; 'SALLA' +U+004A U+0041 U+004C U+004C U+0041 > U+FDFB ;; 'JALLA' : "jalla jalAluhu" +U+0042 U+0041 U+0053 U+004D U+0041 U+004C U+0041 > U+FDFD ;; 'BASMALA' : very few fonts have this ligature afaik + +U+005E U+0053 U+004C U+0059 > U+06D6 ;; ^SLY +U+005E U+0051 U+004C U+0059 > U+06D7 ;; ^QLY +U+005E U+004D U+0049 U+004D > U+06D8 ;; ^MIM- +U+005E U+004C U+0041 > U+06D9 ;; ^LA +U+005E U+004A U+0049 U+004D > U+06DA ;; ^JIM +U+005E U+0044 U+004F U+0054 U+0053 > U+06DB ;; ^DOTS +U+005E U+0053 U+0049 U+004E > U+06DC ;; ^SIN +U+0048 U+0049 U+005A U+0042 > U+06DE ;; HIZB +U+0043 U+0049 U+0052 U+0043 U+005A U+0045 U+0052 U+004F > U+06DF ;; CIRCZERO +U+0052 U+0045 U+0043 U+0054 U+005A U+0045 U+0052 U+004F > U+06E0 ;; RECTZERO +U+005E U+004A U+0041 U+005A U+004D > U+06E1 ;; ^JAZM +U+005E U+004D U+0049 U+004D > U+06E2 ;; ^MIM +U+005F U+0053 U+0049 U+004E > U+06E3 ;; _SIN +U+005E U+004D U+0041 U+0044 U+0044 U+0041 > U+06E4 ;; ^MADDA +U+0057 U+0041 U+0057 > U+06E5 ;; WAW +U+0059 U+0045 U+0048 > U+06E6 ;; YEH +U+005E U+0059 U+0045 U+0048 > U+06E7 ;; ^YEH +U+005E U+004E U+0055 U+004E > U+06E8 ;; ^NUN +U+0053 U+0041 U+004A U+0044 U+0041 > U+06E9 ;; SAJDA +U+005F U+0053 U+0054 U+004F U+0050 > U+06EA ;; _STOP +U+005E U+0053 U+0054 U+004F U+0050 > U+06EB ;; ^STOP +U+005E U+0052 U+0053 U+0054 U+004F U+0050 > U+06EC ;; ^RSTOP +U+005F U+004D U+0049 U+004D > U+06ED ;; _MIM + +U+0044 U+004F U+0054 U+0053 > U+061E ;; DOTS (also possible by typing "::") + +;; This is to enclose digits within glyph U+06DD, see http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=ArabicFonts +U+005B U+005B ([Digits]+)=dig U+005D U+005D > U+202E U+06DD @dig U+202C ; [[digits]] + + +; vowels +u u > U +i i > I +a a > A +#T a e > a U+0626 +#T E e > U+0659 U+06CD +#T e e > U+0659 U+0626 +#T E > U+0659 U+06D0 +CO O > U+06FC ; +#T O > U+0657 w +#T o > U+0657 +#U H E > U+06D3 ;; hamza + yeh barree +#U E / _ # > U+06D2 +#U E > y +#U a e / _ # > a U+06D2 +#-T a e > a y +a o > a w +#PUK (o|u)? O / # _ > U+0627 w +#PUK (o|u)? O > w +CO U > U+06C7 ; +#-TK e > i ;; but not pashto > U+0659 and kashmiri > y + U+0658 (U+06CE is kurdish) +#T e > U+0659 +#K e / # _ # > U+0627 U+06D2 U+0658 ; Alif + yeh barree + bow accent +#K e / _ # > U+06D2 U+0658 ; yeh barree + bow accent +#K e / # _ > U+0627 y U+0658 ; alif + ya + bow accent +#K e > y U+0658 +#K E / # _ # > U+0627 U+06D2 ; Alif + yeh barree +#K E / _ # > U+06D2 ; yeh barree +#K E / # _ > U+0627 y ; alif + ya +#K E > y +#K o / # _ > U+0627 U+06C6 +#K o > U+06C6 +#-TK o > u +#AP E > I +#A O > U +#K P A > U+0672 +#K P U > U+0673 ; > this is the initial or lone form, but medial and final require wavy hamza below previous letter (not in Unicode)! Perhaps an OT font could solve this :: in Scheherazade the glyph needed is named _wavyHamza <<< +#K P a / # _ > U+0623 +#K P a > U+0654 +#K P u > U+0655 +#K P o / # _ > U+0627 U+06C4 +#K P o > U+06C4 +#K P O / # _ > U+0627 U+06C4 U+0627 U+064E +#K P O > U+06C4 U+0627 U+064E +#K I > y U+0656 +#K I / _ # > y +#K U / _ # > U+0627 w U+0657 +#K U > w U+0657 +#-ASMK I / _ # > i y + + +#-A ;; Persian ezafe (ALL BUT ARABIC AND UIGHUR) +#-A U+0048 Z UL? (Q? (i|e))=vv / _ END > U+06C0 @vv U+200C ;H-i -> heh+hamza final; what about 06C2 in Urdu ?<<< +#-A U+0048 Z Q?=qq (I|E)=vv / _ END > h U+0020 U+0627 @qq i @vv ; H-I +#-A Q?=q1 (I|E) Z UL? Q?=q2 (i|e) / _ END > @q1 i U+0626 @q2 i U+200C ; ...I-e +#-A Z Q?=qq I / (A|U) _ (Z|END) > U+0626 @qq i y ; ...A-I or ...U-I +#-A Z UL? (Q? (i|e))=vv / (A|U) _ END > U+0649 @vv ; ...A-i or ...U-i +#-A Z Q?=q1 (e|i) / _ (END|Z) > @q1 i ; ...-i +#-A Z / U+0048 _ > U+0020 ; +#-A b Q?=q1 (e|i) Q?=q2 U / # _ > b @q1 i U+0627 @q2 u w ;; special case of prep be without hyphen + +a l Z / BEG _ > U+0627 l Z +#An H l Z / BEG _ > U+0627 l Z +@Av H l Z / BEG _ > U+0627 l Z +@Bv H l Z / BEG _ > U+0627 l Z +#Af H l Z / BEG _ > U+0671 l Z ; THIS IS NOT AN ARABTEX CONVENTION! it's a work-around coz pattern-matching across word boundaries does not work in teckit , so min al- must be written mina 'l- in fullvocalize mode +#n H / BEG _ l l > U+0627 ; +#v H / BEG _ l l > U+0671 ; e.g. alla_dI -> 'lla_dI +#n [VWL]=v1 / BEG _ > A @v1 +#v [VWL]=v1 / BEG _ > U+0627 @v1 +#An A / BEG _ > A a +#Av A / BEG _ > U+0627 a +#PU A / BEG _ > HA ;; ADD MORE ? <<< +#n Q?=q1 U / BEG _ > A @q1 u w ; -U +#v Q?=q1 U / BEG _ > U+0627 @q1 u w ; -U +#n ; Q?=q1 I / BEG _ > A @q1 i y ; -I ; but not when I is final FIXME!!! +#v ; Q?=q1 I / BEG _ > U+0627 @q1 i y ; -I +#-Pn Q?=q1 I / BEG _ > A @q1 i y ; except for Persian, coz of ezafe rules +#-Pv Q?=q1 I / BEG _ > U+0627 @q1 i y +#Pn Q?=q1 I / BEG _ ^# > A @q1 i y ; -I... +#Pv Q?=q1 I / BEG _ ^# > U+0627 @q1 i y ; -I... +#P Z Q?=qq (I|E) / _ (#|Z) > @qq i y ; +#P UL Q?=q1 U > @q1 U +#P Q?=q1 U / # _ # > U+0627 @q1 u w +#P Q BAR > U+0020; "| to separate compounds >> IN TRANSLIT THIS WILL BE REMOVED + + +;; Words with anomalous orthography: + +; mi'aT -> ماية +;;; i H / m Q ? _ Q ? a ? (T|t) > i A Hy +#n m Q i H Q a / _ (T|t) > m Q i A Hy Q a +#n m Q i H a / _ (T|t) > m Q i A Hy +#n m i H Q a / _ (T|t) > m A Hy Q a +#n m i H a / _ (T|t) > m A Hy +#v m Q i H Q a / _ (T|t) > m U+0627 Hy +#v m Q i H a / _ (T|t) > m U+0627 Hy a +#v m i H Q a / _ (T|t) > m i U+0627 Hy +#v m i H a / _ (T|t) > m i U+0627 Hy a + +#-S +#-S ;; contextual analysis of hamzas +#-S ;; THESE DO NOT APPLY FOR SINDHI +#-S +#-S ; initial hamzas +#-S H / (#|^[LTR]) _ Q? [Iyi] > Hi +#-S H Q A / (#|^[LTR]) _ > HA ; alif madda +#-S H / (#|^[LTR]) _ Q? [Uwu] > Ha +#-S H / (#|^[LTR]) _ Q? a > Ha +#-S Q H / (#|^[LTR]) _ > HB ; quoted isolated hamza at beginning of word +#-S +#-S ; quoted hamzas in contextual mode, equivalent to verbatim mode +#-S a Q H > Ha +#-S i Q H > Hi +#-S y Q H > Hy +#-S w Q H > Hw +#-S h Q H > Hh +#-S A Q H > HA +#-S B Q H > HB +#-S BAR Q H > HBAR +#-S +#-S ; hamza + fathatan +#-S H / a _ Q? AN > Ha +#-S ;;H / [Iyi] _ Q? AN > Hy +#-S H / _ Q? AN > Hy +#-S +#-S ;final hamzas +#-S H / A _ Q? [VWL]? N? (#|^[LTR]) > HBAR +#-S H / [Uw] _ Q? [VWL]? N? (#|^[LTR]) > HBAR +#-S H / [Iy] _ Q? (i N?|u N?)? (#|^[LTR]) > HBAR ; not AN ... +#-S H / a _ Q? (i N?|u N?)? (#|^[LTR]) > HBAR ; not AN... +#-S H / i _ Q? [VWL]? N? (#|^[LTR]) > Hy +#-S H / u _ Q? [VWL]? N? (#|^[LTR]) > Hw +#-S +#-S ;;and more hamzas ... +#-S +#-S ; n°1: kasra/ya +#-S H / [LTR] _ Q? [Iyi] ^N > Hy +#-S H / [Iyi] _ > Hy +#-S +#-S ; n°2: damma/waw +#-S H / [LTR] _ Q? (U|u) ^N > Hw +#-S H / (U|u) _ Q? ^[Iyi] > Hw +#-S H / U _ > HBAR +#-S +#-S ; n°3: fatha/alif +#-S H Q? A > HA +#-S H / A _ Q? a > HBAR +#-S H / ^[UI] _ Q? a > Ha +#-S H / a _ Q? ^[UI] > Ha + +## +##;; take care of all shaddas at once? NOT WORKING, have to give them one by one +##;; ((V|C|P|UL)=l1 (b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|w|x|y|z|Ain|T)=l2){2,2} > @l1 @l2 U+0651 ; +##;; ((b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|w|x|y|z|Ain|T)=l1){2,2} > @l1 U+0651 ; +##;; #U ;special rules for Urdu : NO! tashdid realized as ^c^ch instead of ^ch^ch +##;; #U (C (c|g)=x h){2,2} > C @x h U+0651 +##;; #U (V (t|d|r)=x h){2,2} > V @x h U+0651; +##;; #U ((b|p|t|j|d|r|k|g|l|m|n)=x h){2,2} > @x h U+0651 + +pass(Unicode) + +Class [Digits] = (U+0030..U+0039) +Class [ArDigits] = (U+0660..U+0669) +Class [ArEasternDigits] = (U+06F0..U+06F9) +Class [VWL] = (U+0061 U+0065 U+0069 U+006F U+0075 ) ;(a e i o u) +Class [LTR] = (U+0061..U+007A U+0041 U+0045 U+0049 U+004F U+0055 U+0042 U+004E U+0054 U+0059 U+005E U+002E U+005F U+0022 U+0027 U+0060) ;(a..z A E I O U B N T Y ^ . _ " "" `) +Class [Iy] = (U+0049 U+0079) ;(I y) +Class [Uw] = (U+0055 U+0077) ;(U w) + + +##; all hamzas are now in verbatim mode +##;;;H a > U+0623 +##;;;H i > U+0625 +##;;;H y > U+0626 +##;;;H w > U+0624 +##;;;H h > U+0647 U+0654 +##;;;H A > U+0622 +##;;;H B > U+0640 U+0654 +##;;;H BAR > U+0621 ; '| + + +;normal code +## add code for V S M K .k .l (.p=.f) (.v=.b) .y +## .A .U (.T=Y) +## CHECK ,a ,c ,d ,e ,g ,h ,n ,r ,s ,t ,z ,A +## ^ alone=alif with hazma above, ^a=alif hamza fatha, ^i = alif hamza kasra, ^u=alif damma waw (no hamza) +## CHECK ^d ^e ^i ^l ^n ^z +## CHECK (^A='A) +## CHECK (_k=.g) (_s=_t) (_z=_d) +## IMPLEMENT (:a :e :i :o :u = alif + vowel) +## IMPLEMENT :b :d :g :j :n :s (:t=.t?) (:z=.d?) :O :U + +#S ;; special code for sindhi +#S ;; U+004D U+0049 U+004E > U+06FE ; define macro \MIN in sindhi env +#S P m I N > U+06FE ; .mIN +#S ;; U+0049 U+004E > U+06FD ; IN define macro \IN in sindhi env +#S H BAR I N > U+06FD ; '|IN + +#K CO z CO z > U+0636 U+0651 ;;SHADDA +#K CO z > U+0636 +(P z|U+1E93) (P z|U+1E93) > U+0638 U+0651 ;;SHADDA +(P z|U+1E93) > U+0638 +C z C z > U+0698 U+0651 ;;SHADDA +C z > U+0698 +#-O V z V z > U+0696 U+0651 ;;SHADDA +#-O V z > U+0696 ;pashto +#O V z V z > U+0636 U+0651 ;;SHADDA +#O V z > U+0636 +z z > U+0632 U+0651 ;;SHADDA +z > U+0632 +#n Y Y > U+0649 U+0651 ;;SHADDA +#n Y > U+0649 +#v Q Y Y > U+0649 U+0651 ;;SHADDA +#v Q Y > U+0649 +#v Y Y > U+064E U+0649 U+0651 ;;SHADDA +#v Y > U+064E U+0649 +#K ;; .b with ring below : FIXME not in Unicode! but U+06EA is a poor replacement: +#K P y / # _ # > U+0627 U+06D2 U+06EA +#K P y / _ # > U+0649 +#K P y > U+066E U+06EA +#-ASM ;; y / _ # > U+0649 ; y final in persian,ottoman,urdu,pashto,kashmiri has no dots +#-ASM y y > U+06CC U+0651 ;;SHADDA +#-ASM y > U+06CC ; yeh in persian etc. > iso and final shapes have no dots +#ASMv P I P I / _ # > U+0650 U+06CC U+0651 ;; SHADDA +#ASMv P I / _ # > U+0650 U+06CC ;; workaround to have ya without dots in Arabic +#ASMn P I P I / _ # > U+06CC U+0651 ;; SHADDA +#ASMn P I / _ # > U+06CC ;; workaround to have ya without dots in Arabic +#ASM y y > U+064A U+0651 ;;SHADDA +#ASM y > U+064A +#B v v > U+06A5 U+0651 ;;SHADDA +#B v > U+06A5 ;; maghribi +#M v v > U+06CF U+0651 ;;SHADDA +#M v > U+06CF +#-MB v v > U+06A4 U+0651 ;;SHADDA +#-MB v > U+06A4 +W > U+0648 U+0627 ; waw + alif +C U > U+064F U+0648 U+0653; historical spelling : madda on waw +#n Q U [Uw] > U+064F U+0648 U+0651 ;;SHADDA +#n Q U > U+064F U+0648 +#n [Uw] [Uw] > U+0648 U+0651 ;;SHADDA +#n [Uw] > U+0648 +C w C w > U+06C9 U+0651 ;;SHADDA +C w > U+06C9 +CO w CO w > U+06CA U+0651 ;,SHADDA +CO w > U+06CA +#n Q u N > U+064C +#n u N > +#n Q u > U+064F +#v U A / _ # > U+064F U+0648 U+0627 +#v Q U [Uw] > U+0648 U+0651 ;;SHADDA +#v Q U > U+0648 +#v U [Uw] > U+064F U+0648 U+0651 ;;SHADDA +#v U > U+064F U+0648 +#v w w > U+0648 U+0651 ;;SHADDA +#v w > U+0648 +#v Q u N? > +#v u N > U+064C +#v u > U+064F +#S V t h V t h > U+067A U+0651 ;;SHADDA +#S V t h > U+067A +#S t h t h > U+067F U+0651 ;;SHADDA +#S t h > U+067F +#S V t V t > U+067D U+0651 ;;SHADDA +#S V t > U+067D +#T V t V t > U+067C U+0651 ;;SHADDA +#T V t > U+067C ; pashto +#-TS V t V t > U+0679 U+0651 ;;SHADDA +#-TS V t > U+0679 ;urdu +UL (t|s) UL (t|s) > U+062B U+0651 ;;SHADDA +UL (t|s) > U+062B +(P t|U+1E6D) (P t|U+1E6D) > U+0637 U+0651 ;;SHADDA +(P t|U+1E6D) > U+0637 +t t > U+062A U+0651 ;;SHADDA +t > U+062A +#n T T Q AN > U+0629 U+0651 U+064B ;;SHADDA +#n T Q AN > U+0629 U+064B +#n T AN > U+0629 +#v T T Q AN > U+0629 U+0651 ;;SHADDA +#v T Q AN > U+0629 +#v T AN > U+0629 U+064B +T T > U+0629 U+0651 ;;SHADDA +T > U+0629 +C s C s > U+0634 U+0651 ;;SHADDA +C s > U+0634 +(P s|U+1E63) (P s|U+1E63) > U+0635 U+0651 ;;SHADDA +(P s|U+1E63) > U+0635 +#-O V s V s > U+069A U+0651 ;;SHADDA +#-O V s > U+069A ;Pashto +#O V s V s > U+0634 U+0651 ;;SHADDA +#O V s > U+0634 +CO s CO s > U+069B U+0651 ;;SHADDA +CO s > U+069B ; sin with 3 dots below +## ;; ADD 069C-069F <<<<<<<<<< +s s > U+0633 U+0651 ;;SHADDA +s > U+0633 +C r C r > U+06EF U+0651 ;;SHADDA ; missing in ArabTeX <<< +C r > U+06EF +CO r CO r > U+0697 U+0651 ;;SHADDA ; missing in ArabTeX <<< +CO r > U+0697 ; Dargwa language, Dagestan +P r P r > U+0694 U+0651 ;;SHADDA +P r > U+0694 ; r with dot below; in Kurdish .r -> 0694 +#S V r V r > U+0699 U+0651 ;;SHADDA +#S V r > U+0699 +#T V r V r > U+0693 U+0651 ;;SHADDA +#T V r > U+0693 ;Pashto +#-ST V r V r > U+0691 U+0651 ;;SHADDA +#-ST V r > U+0691 ;Urdu +r r > U+0631 U+0651 ;;SHADDA +r > U+0631 +P q P q > U+066F U+0651 ;;SHADDA +P q > U+066F +#-B q q > U+0642 U+0651 ;;SHADDA +#-B q > U+0642 +#B q q > U+06A7 U+0651 ;; maghribi +#B q > U+06A7 ;; maghribi +#S p h p h > U+06A6 U+0651 ;;SHADDA +#S p h > U+06A6 +#M p p > U+06A8 U+0651 ;;SHADDA +#M p > U+06A8 ;Old malay +#-M p p > U+067E U+0651 ;;SHADDA +#-M p > U+067E +CO n CO n > U+06B1 U+0651 ;;SHADDA +CO n > U+06B1 +#M C n C n > U+06BD U+0651 ;;SHADDA +#M C n > U+06BD ; <<< ArabTeX yields nūn with three dots below, which is not in Unicode! +#S C n C n > U+0683 U+0651 ;;SHADDA +#S C n > U+0683 +#-SM C n C n > U+06AD U+0651 ;;SHADDA +#-SM C n > U+06AD +## U+06AE Berber <<< +#S P P n P P n > U+06B2 U+0651 ;;SHADDA +#S P P n > U+06B2 ;; old sindhi? (not in ArabTeX) <<< +P n P n > U+06BA U+0651 ;;SHADDA +P n > U+06BA ; urdu +#S V n V n > U+06BB U+0651 ;;SHADDA +#S V n > U+06BB +#-S V n V n > U+06BC U+0651 ;;SHADDA +#-S V n > U+06BC ; Pashto +n n > U+0646 U+0651 ;;SHADDA +n > U+0646 +m m > U+0645 U+0651 ;;SHADDA +m > U+0645 +P l P l > U+06B6 U+0651 ; +P l > U+06B6 ; ADDED <<< +C l C l > U+06B5 U+0651 ;;SHADDA +C l > U+06B5 ;kurdish +## U+06B7 U+06B8 U+06B9 missing <<< +l l > U+0644 U+0651 ;;SHADDA +l > U+0644 +#S k h k h > U+06A9 U+0651 ;;SHADDA +#S k h > U+06A9 +#-O P k P k > U+06A9 U+0651 ;;SHADDA +#-O P k > U+06A9 ; pashto urdu +#O P k P k > U+0642 U+0651 ;;SHADDA +#O P k > U+0642 ; Ottoman qaf +UL k UL k > U+063A U+0651 ;;SHADDA +UL k > U+063A +#S k k > U+06AA U+0651 ;;SHADDA +#S k > U+06AA ; kaf swash +#-S k k > U+0643 U+0651 ;;SHADDA +#-S k > U+0643 +#-MO C g C g > U+062C U+0651 ;;SHADDA +#-MO C g > U+062C +#MO C g C g > U+06A0 U+0651 ;;SHADDA +#MO C g > U+06A0 +CO j CO j > U+0684 U+0651 ;;SHADDA +CO j > U+0684 +#O j j > U+0698 U+0651 ;;SHADDA +#O j > U+0698 +#-O j j > U+062C U+0651 ;;SHADDA +#-O j > U+062C +#n Q I > U+0650 U+064A +#v Q I > U+064A +#v I > U+0650 U+064A +C I > U+0650 U+064A U+0653 ; historical spelling : madda on ya +#n I > U+064A +#n Q i N > U+064D +#n i N > ; +#n Q i > U+0650 +#v Q i N? > ; +#v i N > U+064D +#v i > U+0650 +x x > U+062E U+0651 ;;SHADDA +x > U+062E +#PT U+0048 Z > U+0647 U+200C U+0020 ;eH-suffix > eH suffix +#PT U+0048 > U+0647 U+200C ; H is always heh final +#U U+0048 > U+06C3 +UL h UL h > U+062E U+0651 ;;SHADDA +UL h > U+062E +(P h|U+1E25) (P h|U+1E25) > U+062D U+0651 ;;SHADDA +(P h|U+1E25) > U+062D +V h V h > U+06C1 U+0651 ;;SHADDA +V h > U+06C1 +#U h h > U+06BE U+0651 ;;SHADDA +#U h > U+06BE ; urdu +#U ;; fix letter+h letter+h > letter+h shadda in URDU <<< +#S h h > U+06BE U+0651 ;;SHADDA +#S h > U+06BE +#-US h h > U+0647 U+0651 ;;SHADDA +#-US h > U+0647 +#S P CO g P CO g > U+06B4 U+0651 ;;SHADDA +#S P CO g > U+06B4 ;; old sindhi? (not in ArabTeX) <<< +CO g CO g > U+06B3 U+0651 ;;SHADDA +CO g > U+06B3 +V g V g > U+06AC U+0651 ;;SHADDA +V g > U+06AC ; kaf with dot above +P g P g > U+063A U+0651 ;;SHADDA +P g > U+063A +#M g g > U+0762 U+0651 ;;SHADDA +#M g > U+0762 +#-M g g > U+06AF U+0651 ;;SHADDA +#-M g > U+06AF +G G > U+06AB U+0651 ;;SHADDA +G > U+06AB ;pashto +## U+06B0 western punjabi <<< +P f P f > U+06A1 U+0651 ;;SHADDA +P f > U+06A1 +#B f f > U+06A2 U+0651 ;; SHADDA +#B f > U+06A2 ;; maghribi +## ingushi CO f > U+06A3 <<< +#-B f f > U+0641 U+0651 ;;SHADDA +#-B f > U+0641 +#S V d h V d h > U+068D U+0651 ;;SHADDA +#S V d h > U+068D +#-TU V d V d > U+068A U+0651 ;;SHADDA +#-TU V d > U+068A +#T V d V d > U+0689 U+0651 ;;SHADDA +#T V d > U+0689 ;pashto +#U V d V d > U+0688 U+0651 ;;SHADDA +#U V d > U+0688 ;urdu +P V d P V d > U+068B U+0651 ;;SHADDA +P V d > U+068B ;; (like U+0688 with dot below, for Lahnda = Western Punjabi) +#S d h d h > U+068C U+0651 ;;SHADDA +#S d h > U+068C +#S C d C d > U+068E ;;SHADDA +#S C d > U+068E ; old sindhi: not in ArabTeX +#-S C d C d > U+06EE U+0651 ;;SHADDA +#-S C d > U+06EE ; not defined in ArabTeX +CO d CO d > U+068F U+0651 ;;SHADDA +CO d > U+068F +#U CO CO d CO CO d > U+0690 U+0651 ;;SHADDA +#U CO CO d > U+0690 ; old urdu: not in ArabTeX +UL (d|z) UL (d|z) > U+0630 U+0651 ;;SHADDA +UL (d|z) > U+0630 +(P d|U+1E0D) (P d|U+1E0D) > U+0636 U+0651 ;;SHADDA +(P d|U+1E0D) > U+0636 +d d > U+062F U+0651 ;;SHADDA +d > U+062F +#S C c h C c h > U+0687 U+0651 ;;SHADDA +#S C c h > U+0687 +#O V c V c > U+0686 U+0651 ;;SHADDA +#O V c > U+0686 ; Ottoman ç +#-O V c V c > U+0685 U+0651 ;;SHADDA +#-O V c > U+0685 ;pashto +C c C c > U+0686 U+0651 ;;SHADDA +C c > U+0686 +P C c P C c > U+06BF U+0651 ;;SHADDA +P C c > U+06BF ;; cheh with dot above <<< +#M c c > U+0686 U+0651 ;;SHADDA +#M c > U+0686 +#O c c > U+062C U+0651 ;;SHADDA +#O c > U+062C +#-MO c c > U+0681 U+0651 ;;SHADDA +#-MO c > U+0681 ; ح with hamza above +CO c CO c > U+0682 U+0651 ;;SHADDA +CO c > U+0682 ; old pashto +#S b h b h > U+0680 U+0651 ;;SHADDA +#S b h > U+0680 +CO b CO b > U+067B U+0651 ;;SHADDA +CO b > U+067B +P b P b > U+066E U+0651 ;;SHADDA +P b > U+066E +b b > U+0628 U+0651 ;;SHADDA +b > U+0628 +H A > U+0622 +C A > U+064E U+0622 ; historical spelling +#n UL A > U+0649 +#v UL A > U+064E U+0649 +UL a > U+0670 +#A UL u > U+0657 ; inverted damma +#A UL i > U+0656 ; subscript alif +#-An UL u > ; +#-An UL i > ; +#-Av UL u > U+064F; +#-Av UL i > U+0650; +#n Q AN / (A H|Ha) _ > U+064B +#n AN / (A H|Ha) _ > ; +#v Q AN / (A H|Ha) _ > ; +#v AN / (A H|Ha) _ > U+064B +#n Q AN > U+0627 U+064B +#n AN > U+0627 +#n Q a > U+064E +#n Q A > U+064E U+0627 +#n A > U+0627 +#v Q AN > U+0627 +#v AN > U+0627 U+064B +#v Q a > +#v a > U+064E +#v Q A > U+0627 +#v A > U+064E U+0627 +Ain Ain > U+0639 U+0651 ;;SHADDA +Ain > U+0639 +H H > U+0621 U+0651 ;;SHADDA +H > U+0621 +U+002C / [Digits] _ [Digits] > U+002C ; comma in numerical context not an Arabic comma +Z Z / [Digits] _ [Digits] > U+2013 ; two hyphens in numerical context -> endash +(Z|U+005D|U+005B|U+0028|U+0029)=xx / [Digits] _ [Digits] > U+202D @xx U+202C ; hyphen or brackets in numerical context: surrounded by LRO & PDF marks +#-PUSKT [Digits] > [ArDigits] +#PUSKT [Digits] > [ArEasternDigits] +Z Z Z / # _ # > U+2014 +Z Z / # _ # > U+2013 +Z Z > U+0640 +B > U+0640 +Z / # _ > U+200D ; -x > force initial form with "zero-width joiner" +Z / _ # > U+200D ; x- > force final form +U+003C U+003C > U+00BB ;<< +U+003E U+003E > U+00AB ;>> +U+00AB > U+00BB +U+00BB > U+00AB +UL > U+0640 ;_ +U+003F > U+061F ;? +U+003B > U+061B ;; +U+003A U+003A > U+061E ;; '::' ligature 'DOTS' also defined above... +U+002C > U+060C ;, +U+005D / . _ . > U+200D U+005D U+200D ; keep shaping when inserting ...[...]... +U+005B / . _ . > U+200D U+005B U+200D ; ... (but of course this screws up contextual analysis, so quoting of hamzas etc may be necessary) +;U+005D > U+005B ;] these are automatically mirrored, following Unicode rules +;U+005B > U+005D ;[ +#n [VWL] > ;stripoff vowels +#v Q [VWL] > ;stripoff quoted vowels +#n Q > U+0652 +@v Q > U+0652 +U+00B0 > U+0652 ; ° +N > ; +C > ;^ +#n Z > ;- +BAR > ;| +#U P P > U+06D4 ; urdu full stop << check + +#v pass(Unicode) +#v +#v Class [CONS] = (U+0621 U+0623 U+0624 U+0626 U+0628 U+062A..U+063A U+0641..U+0647 U+066E U+066F U+0672 U+0675 U+0676 U+0678..U+06BF U+06EE U+06EF U+06FA..U+06FF U+0750..U+076D) ; to be improved: not sure that all glyphs listed (esp for Urdu,Sindhi,etc are really "consonants" in the sense that they can carry a sukun, not to mention that some of these languages may not have a sukun at all ;-) +#v Class [VWLX] = (U+0627 U+0648..U+065E U+0670) ; long vowels, vowel signs, shadda, sukun etc. +#v Class [VWL] = (U+0627 U+0648..U+0650 U+0670); +#v +#f [CONS]=k1 / _ Z? [CONS] ^U+0651 > @k1 U+0652 ; hack: 2nd consonant has no shadda +#f U+064E (U+064A|U+0648|U+0649)=hc / _ (^[VWLX]|#) > U+064E @hc U+0652 ; ay and aw diphtongs +@Av U+0627 [VWL]? / [VWL] Z _ > U+0627 ; e.g. fa-isti_hraj -> initial alif has no vowel +@Bv U+0627 [VWL]? / [VWL] Z _ > U+0627 ; e.g. fa-isti_hraj -> initial alif has no vowel +#Af U+0627 [VWL]? / [VWL] Z _ > U+0671 ; e.g. fa-isti_hraj -> wasla on initial alif +#f;; U+0627 / [VWL] U+0020 _ U+0644 > U+0671 ; wasla on initial alif-lam >>>THIS DOES NOT WORK<<< implemented in first pass instead... +#f U+0627 / # _ U+0644 > U+0627 U+064E ; otherwise initial alif takes fatha +#f [CONS]=k1 / _ ([CONS]|#) > @k1 U+0652 ; consonant + (consonant or final) +#f ;; [CONS]=k1 / _ # > @k1 U+0652 ; final consonant +#f Q > ; +#v Z > ; + diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.dtx b/Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.dtx new file mode 100644 index 00000000000..047cf0247c5 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.dtx @@ -0,0 +1,1973 @@ +% \iffalse +% +%!TEX encoding = UTF-8 Unicode +% +% Copyright (C) 2007 by François Charette +% +% Distributable under the LaTeX Project Public License, +% version 1.3c or higher (your choice). The latest version of +% this license is at: http://www.latex-project.org/lppl.txt +% +% This work is "maintained" (as per LPPL maintenance status) +% by François Charette. +% +% This work consists of the file bidi.dtx +% and the derived files bidi.sty and bidi.pdf. +% +% +%<*batchfile> +\begingroup +\input docstrip.tex +\keepsilent +\preamble + + ____________________________ + The arabxetex package + (C) 2007 François Charette + License information appended + + +\endpreamble +\postamble + +Copyright (C) 2007 by François Charette + +Distributable under the LaTeX Project Public License, +version 1.3c or higher (your choice). The latest version of +this license is at: http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) +by François Charette. + +This work consists of the file \jobname.dtx +and the derived files \jobname.sty and \jobname.pdf. +as well as an extensive collection of TECKit files +(*.map, compiled as *.tec). + +\endpostamble +\askforoverwritefalse +\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}} +\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}} +\nopreamble\nopostamble +\generate{\file{README}{\from{\jobname.dtx}{readme}}} +\generate{\file{arabxetex-dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}} +\endgroup +% +% +%<*driver> +\documentclass[11pt]{ltxdoc} +\usepackage{arabxetex-dtx-style} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%\OnlyDescription +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% +% +%<*readme> +-------------------------- +THE ARABXETEX PACKAGE v1.0 + +This package provides a convenient ArabTeX-like user-interface for typesetting +languages using the Arabic script in XeLaTeX, with flexible access to font +features. Input in ArabTeX notation can be set in three different +vocalization modes or in roman transliteration. Direct UTF-8 input is also +supported. Since most of the ‘real work’ -- namely parsing and converting +ArabTeX input to Unicode -- is done at the level of TECkit mappings, +ArabXeTeX is really performant. + +The TECkit fontmapping files (*.map and *.tec) should be copied to +/fonts/misc/xetex/fontmapping/arabxetex/ + +------------------------- +François Charette +2007 +% +% +% \fi +% +% \errorcontextlines=999 +% \makeatletter +% +% \GetFileInfo{\jobname.sty} +% +% \title{~\hfil {\color{IslamicGreen}\arabxetex \hfil \arabxetexAr}\hfil~\\ +% An \arabtex-like interface for typesetting languages in Arabic script with \XeLaTeX} +% \author{François Charette} +% \date{\filedate \qquad \fileversion} +% +% \maketitle +% \tableofcontents +% +% +% \DeleteShortVerb{\|} +% \MakeShortVerb{\¦} +% +% \begin{abstract} +% This package provides a convenient \arabtex-like user-interface for typesetting +% languages using the Arabic script in \XeLaTeX, with flexible access to font +% features. Input in \arabtex\ notation can be set in three different vocalization +% modes or in roman transliteration. Direct UTF-8 input is also supported. +% Since most of the ‘real work’ -- namely parsing and converting \arabtex\ input to Unicode -- +% is done at the level of TECkit mappings, \arabxetex\ is really performant. +% \end{abstract} +% +% \tableofcontents +% +% \section{Introduction} +% +% Since the early 1990s, \TeX\ users who wished to typeset in Arabic script +% have relied on Klaus Lagally's excellent \arabtex\ system.\footnote{ ^^A +% \url{ftp://ftp.informatik.uni-stuttgart.de/pub/arabtex/arabtex.htm}. +% Version 2.00 was released in April 1992 and version 3.00 in November of +% the following year. The latest stable version (dated 2 July 2006) is +% 3.11s. Since version 3.02 the Hebrew language is also supported.} +% While \arabtex's overall qualities and Lagally's masterful \TeX-programming +% abilities are undeniable, the system can hardly hide its 15-odd years of +% existence. Or to state it otherwise, it is now slowly becoming an archaic +% piece of sofware (which as a historian who has used \arabtex\ for more than +% eleven years I find a sad thing to admit). First of all, it is monolithic and +% idiosyncratic, in the sense that everything -- from parsing the input encoding, +% to doing contextual analysis, to assembling all elements of the script and +% placing them on the page from right to left, in defiance of \TeX's natural +% logic -- is taken care of by means of \TeX\ macro programming. Thus before the +% availability of relatively fast Pentium processors, \arabtex\ was really slow, +% but this is less of an issue nowadays. Another disadvantage is that one is +% inexorably bound to use the custom Naskh font, which without being necessarily +% ugly does not meet the standards of fine typesetting. Finally, the collection +% of very sophisticated \TeX\ code that constitutes the \arabtex\ package is not +% documented at all, which means that even though it is now licensed under the +% LPPL, its internals are extremely difficult to understand in depth. +% (It is only fair to state, however, that Prof.~Lagally has been extremely +% responsive to ideas, suggestions and wishes by users in the past). +% +% The introduction of Omega in \ca 1996, a \TeX\ extension for multilingual, +% multidirectional typesetting based on Unicode, raised of course many hopes, but +% these have by now completely dissipated since the project has been moribund for +% several years and is now probably defunct. Aleph, a more humble attempt to reach +% some of the goals set by Omega, has been equally unsuccessful.\footnote{ ^^A +% Based on Omega 1.15 and \eTeX, Aleph attempted to provide a usable and +% stable branch. See +% \url{http://www.tug.org/TUGboat/Articles/tb25-1/bilotta.pdf}. +% Unfortunately the project is currently dormant.} +% Both engines suffered of numerous bugs and never reached a stable and usable +% state, \textit{at least according to my own subjective experience}. +% +% After completion of the initial alpha version of \arabxetex, I came across the +% package \pkg{Arabi} by Youssef Jabri on CTAN.\footnote{ ^^A +% \url{http://www.ctan.org/tex-archive/language/arabic/arabi/}} +% This is a pure LaTeX/Babel approach to Arabic typesetting which makes use of +% TFM hackery (by means of complex sequences of ligature rules) to provide custom +% contextual analysis for individual fonts. Thus the \pkg{Arabi} only works in +% combination with the fonts for which support is built in the package. +% +% With the availability of Jonathan Kew's \XeTeX, users can now rely on a very +% up-to-date typesetting engine based on the integration of \eTeX, Unicode, and +% modern font-rendering technology (AAT and ICU), without the complex hassle of +% font installation.\footnote{ ^^A +% \url{http://scripts.sil.org/xetex}. \XeTeX\ was originally developed +% for the Mac~OS~X platform, but Linux and WIN32 ports are now available.} +% +% \section{Description} +% +% The \arabxetex\ package consists of a set of \textbf{TECkit}\footnote{ ^^A +% \url{http://scripts.sil.org/TECkit}} +% mappings for converting internally from \arabtex's \ASCII\ input convention to +% Unicode, and a \LaTeX\ style file (\pkg{arabxetex.sty}) that provides a +% convenient user interface for typesetting in those languages. +% For details on \arabtex\ and its input convention the reader is referred to +% Lagally's detailed manual.\footnote{ ^^A +% \url{http://129.69.218.213/arabtex/doc/arabdoc.pdf}} +% \arabxetex introduces several additions, and a few minor modifications, +% to \arabtex's conventions. These are documented in tabular form in +% Section~\ref{conventiontable}. \arabxetex\ relies on the package \pkg{bidi} +% which contains the macros necessary for bidirectional typesetting -- +% using \eTeX's \cmd{\beginR} \ldots \cmd{\endR}, \cmd{\beginL} \ldots \cmd{\endL} +% primitives. The main code in \pkg{bidi.sty} is essentially borrowed, +% with minor adaptations, from the file \pkg{rlbabel.def} in the Babel +% distribution (where it serves for typesetting Hebrew). Some improvements +% in the beta version were inspired by Youssef Jabri's \pkg{Arabi}. +% +% Languages supported at present are the same as in \arabtex, namely: Arabic, +% Maghribi Arabic, Farsi (Persian), Urdu, Sindhi, Kashmiri, Ottoman Turkish, +% Kurdish, Jawi (Malay) and Uighur. \arabxetex\ adds support for several +% additional Unicode characters, so that some more languages are probably +% supported de-facto as well (such as Western Punjabi). +% +% \subsection{The \arabtex\ input encoding} +% +% Why would one need to type those languages by means of an old-fashioned +% \ASCII\ \label{arabtexnotes} representation? +% Native speakers have access to keyboards that allow to input +% them directly in Unicode, while non-native scholars who need to type them +% can use keymaps or keyboard utilities to achieve the same, so why bother? +% An expert in Arabic mathematical linguistic and author of the Perl module +% \pkg{Encode::Arabic::ArabTeX}, Otakar Srmž, has this to say about the +% virtues of \arabtex\ \ASCII\ encoding: +% \begin{quote} +% “ArabTeX is an excellent extension to TeX/LaTeX designed for +% typesetting the right-to-left scripts of the Orient. It comes up with +% very intuitive and comprehensible lower \ASCII\ transliterations, the +% expressive power of which is even better than that of the scripts.”^^A\footnote{ % +% [Source: \url{http://search.cpan.org/~smrz/Encode-Arabic-1.16/ArabTeX/ArabTeX.pm#DESCRIPTION}. +% See also \url{http://ufal.mff.cuni.cz/~smrz/ICFP2006/icfp-encode.pdf}]^^A} +% \end{quote} +% There are indeed several advantages in using \arabtex\ input convention for +% typesetting in the Arabic script, besides ease and legibility. First it is +% possible and even trivial to switch between a representation of the data in the +% Arabic script and its romanized transliteration, without having to modify it. +% Second, despite the increasing availability of good Unicode editors that +% support bidirectionality, editing (La)\TeX\ source files with bidirectional +% content can be a real pain, for it leads to confusion and distraction. Also, +% with complex multi-layer documents such as critical editions, where footnotes +% and annotations abound, the advantage of dealing with a plain \ASCII\ encoding +% cannot be overstated. Finally, such an input convention allows far greater +% control of typographical details. +% +% \section{Usage} +% +% For short insertions (say within a LR text), use ¦\text[option]{...}¦ +% where ¦¦ is one of the following: +% \begin{compactitem}[\textbf{·}] +% \item ¦arab¦ (¦Arabic¦),\footnote{ ^^A +% Since the command \cmd\arabic\ is already defined in \LaTeX, we chose +% the environment ¦arab¦ and the command \cmd\textarab\ instead, +% but the equivalent environment ¦Arabic¦ and the command +% \cmd\textarabic\ are also available.} +% \item ¦farsi¦ (¦persian¦), +% \item ¦urdu¦, +% \item ¦sindhi¦, +% \item ¦pashto¦, +% \item ¦turk¦ (¦ottoman¦), +% \item ¦kurdish¦, +% \item ¦kashmiri¦, +% \item ¦malay¦ (¦jawi¦), and +% \item ¦uighur¦. +% \end{compactitem} +% For typesetting whole paragraphs in Arabic script, use +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \begin{}[option] +% ... +% \end{} +% \end{Verbatim} +% +% Most languages can be typeset in one of four modes: non-vocalized, vocalized, +% fully-vocalized, and transliterated, exactly as in \arabtex, and these are +% switched by means of the options ¦novoc¦, ¦voc¦, ¦fullvoc¦ and ¦trans¦, +% respectively. Note that Kurdish and Uighur only have one vocalization mode. +% The mode can be determined either globally as an option to the \pkg{arabxetex} +% package, or as a local option of either the ¦\text¦ commands or +% ¦\begin{}¦ \ldots ¦\end{}¦ environments. +% When no option is set locally, the global option is chosen. +% The default global option is always \textit{non-vocalized} mode. +% +% There is also an option \pkg{utf} for input in plain UTF-8 encoding. Note that +% it is also possible to mix \arabtex\ input convention and UTF-8 characters, +% since the latter will not be affected by the font-mapping (except of course in +% transliteration mode, unless your roman font also contains Arabic characters). +% There are also advantages of choosing an \arabtex\ mapping (\ie one of the +% ¦novoc¦, ¦voc¦ and ¦fullvoc¦ modes) even with UTF-8 encoding, as it provides +% easy access to special glyphs and some useful features. See further below. +% +% Latin (LR) insertions within Arabic environment can be made by means of the +% command \cmd\textlatin¦{…}¦. Emphasis in Arabic is traditionally indicated by +% overlining the text, and this can be achieved with the command +% \cmd\aemph:\footnote{ ^^A +% This macro makes use of the mathematical command \cmd\overline, +% which explains why \pkg{arabxetex} requires the \pkg{amsmath} package. +% I welcome any suggestion that would make it possible to circumvent this +% by emulating \cmd\overline\ directly.} +% +% \parindentoff +% \begin{minipage}[t]{.4\textwidth} +% \begin{Verbatim}[gobble=2] +% \begin{arab}[novoc] +% mi_tAl: \aemph{45} darajaT +% \end{arab} +% \end{Verbatim} +% \end{minipage} +% \hfill +% \begin{minipage}[t]{.4\textwidth} +% \begin{arab}[novoc] +% ~ \\ +% mi_tAl: \aemph{45} darajaT +% \end{arab} +% \end{minipage} +% \medskip +% +% \textbf{Important:} \arabxetex\ requires that the user has defined an +% \cmd\arabicfont\ in the preamble. +% The recommended procedure by means of \pkg{fontspec} is to define it as follows: +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \newfontfamily\arabicfont[Script=Arabic]{} +% \end{Verbatim} +% If not, then the font \textbf{Scheherazade} (designed by Bob Halissy and +% Jonathan Kew of SIL International) is taken as default.\footnote{ ^^A +% Available from \url{http://scripts.sil.org/ArabicFonts}. For +% typesetting Sindhi and Kashmiri the font \textbf{Lateef}, available at +% the same place, is also recommended.} +% +% \textbf{NB:} In a later version we may define more general and flexible font commands, +% perhaps by having individual font families for each language (\cmd\farsifont, +% \cmd\urdufont, etc.) +% +% ^^A¦TODO:¦ Include links to other open source, freeware and commercial Arabic fonts available. +% ^^A see appendix +% +% +% \subsection{Examples} +% +% \texttt{THIS SECTION IS INCOMPLETE} +% +% \subsubsection{Contextual analysis of \textit{hamza}} +% +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \begin{arab} +% 'amruN, 'ibiluN, 'u_htuN, '"u_ht"uN, '"Uql"Id"Is, ra'suN, 'ar'asu, +% sa'ala, qara'a, bu'suN, 'ab'usuN, ra'ufa, ru'asA'u, bi'ruN, 'as'ilaTuN, +% ka'iba, qA'imuN, ri'AsaTuN, su'ila, samA'uN, barI'uN, sU'uN, bad'uN, +% ^say'uN, ^say'iN, ^say'aN, sA'ala, mas'alaTuN, saw'aTuN, _ha.tI'aTuN, +% jA'a, ridA'uN, ridA'aN, jI'a, radI'iN, sU'uN, .daw'uN, qay'iN, .zim'aN +% , yatasA'alUna, 'a`dA'akum, 'a`dA'ikum, 'a`dA'ukum maqrU'aT, mU'ibAt, +% taw'am, yas'alu, 'a.sdiq^A$\;$'uh_u, ya^g^I'u, s^U'ila +% \end{arab} +% \end{Verbatim} +% +% \begin{arab}[voc] +% 'amruN, 'ibiluN, 'u_htuN, '"u_ht"uN, '"Uql"Id"Is, ra'suN, 'ar'asu, +% sa'ala, qara'a, bu'suN, 'ab'usuN, ra'ufa, ru'asA'u, bi'ruN, 'as'ilaTuN, +% ka'iba, qA'imuN, ri'AsaTuN, su'ila, samA'uN, barI'uN, sU'uN, bad'uN, +% ^say'uN, ^say'iN, ^say'aN, sA'ala, mas'alaTuN, saw'aTuN, _ha.tI'aTuN, +% jA'a, ridA'uN, ridA'aN, jI'a, radI'iN, sU'uN, .daw'uN, qay'iN, .zim'aN +% , yatasA'alUna, 'a`dA'akum, 'a`dA'ikum, 'a`dA'ukum maqrU'aT, mU'ibAt, +% taw'am, yas'alu, 'a.sdiq^A$\;$'uh_u, ya^g^I'u, s^U'ila +% \end{arab} +% +% \subsubsection{Special orthographies} +% +% Some Arabic words, like \textit{miʾa} “hundred”, have irregular orthographies. +% \arabxetex\ recognizes them automatically. +% +% \begin{minipage}[t]{.4\textwidth} +% \begin{Verbatim}[gobble=2] +% \begin{arab}[voc] +% mi'aT , mi'at"An , sab`ami'"aT +% \end{arab} +% \end{Verbatim} +% \end{minipage} +% \hfill +% \begin{minipage}[t]{.4\textwidth} +% \begin{arab}[voc] +% ~ \\ +% mi'aT , mi'at"An , sab`ami'"aT +% \end{arab} +% \end{minipage} +% \bigskip +% +% \textbf{NB}: For the time being only \textit{miʾa} is supported, but more irregular +% constructs should be added in later versions. +% +% \subsubsection{Typesetting the Holy Qurʾān} +% +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \begin{arab}[fullvoc] +% mina 'l-qur'Ani 'l-karImi, sUraTu 'l-ssajdaTi 15--16: +% +% 'innamA yu'minu bi-B"'Ay_atinA 'lla_dIna 'i_dA _dukkirUA bihA _harrUA +% sujjadaN wa-sabba.hUA bi-.hamdi rabbihim wa-hum lA yastakbirUna SAJDA [[15]] +% tatajAfY_a junUbuhum `ani 'l-ma.dAji`i yad`Una rabbahum _hawfaN wa-.tama`aN +% wa-mimmA razaqn_ahum yunfiqUna [[16]] +% \end{arab} +% \end{Verbatim} +% +% \begin{arab}[fullvoc] +% mina 'l-qur'Ani 'l-karImi, sUraTu 'l-ssajdaTi 15--16: +% +% 'innamA yu'minu bi-B"'Ay_atinA 'lla_dIna 'i_dA _dukkirUA bihA _harrUA +% sujjadaN wa-sabba.hUA bi-.hamdi rabbihim wa-hum lA yastakbirUna SAJDA [[15]] +% tatajAfY_a junUbuhum `ani 'l-ma.dAji`i yad`Una rabbahum _hawfaN wa-.tama`aN +% wa-mimmA razaqn_ahum yunfiqUna [[16]] +% \end{arab} +% +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \newcommand{\hamzaB}{\char"200D\char"0640\raise-.95ex\hbox{\char"0654}\char"200D} +% \begin{arab}[fullvoc] +% sUraTu 'l-baqaraTi 71--72: +% +% qAla 'innahu, yaqUlu 'innahA baqaraTuN llA _dalUluN tu_tIru 'l-'ar.da wa-lA +% tasq.I 'l-.har_ta musallamaTuN llA ^siyaTa fIhA|^JIM qAluW" 'l-\hamzaB a___ana +% ji'ta bi-'l-.haqqi|^JIM fa_daba.hUhA wa-mA kAdduW" yaf`alUna [[71]] wa-'i_d +% qataltum nafsaN fa-udda$\,$_ara|'|_i"tum fIhA|^SLY wa-al-ll_ahu mu_hrijuN mmA +% kun"tum taktumUna [[72]] +% \end{arab} +% \end{Verbatim} +% +% \begin{arab}[fullvoc] +% sUraTu 'l-baqaraTi 71--72: +% +% qAla 'innahu, yaqUlu 'innahA baqaraTuN llA _dalUluN tu_tIru 'l-'ar.da wa-lA +% tasq.I 'l-.har_ta musallamaTuN llA ^siyaTa fIhA|^JIM qAluW" 'l-\hamzaB a___ana +% ji'ta bi-'l-.haqqi|^JIM fa_daba.hUhA wa-mA kAdduW" yaf`alUna [[71]] wa-'i_d +% qataltum nafsaN fa-udda$\,$_ara|'|_i"tum fIhA|^SLY wa-al-ll_ahu mu_hrijuN mmA +% kun"tum taktumUna [[72]] +% \end{arab} +% +% \subsubsection{Farsi} +% These are some of the Persian examples in the \arabtex\ documentation: +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \begin{farsi}[voc] +% _hwAb, xwI^s, _hwod, ^ceH, naH, yal_aH, _hAneH, _hAneHhA, _hAneH-hA, +% ketAb-e, U, rAh-e, t_U, nAmeH-i, man, bInI-e, An, mard, pA-i, In, +% zan, bAzU-i, In, zan, dAr-_i, man, _hU-_i, t_U, nAmeH-_i, sormeH-_i, +% gofteH-_i, ketAb-I, rAh-I, nAmeH-I, dAnA-I, pArU-I, dAnA-I-keH, +% pArU-I-keH, rafteH-am, rafteH-Im, AnjA-st, U-st, t_U-st, ketAb-I-st, +% be-man, be-t_U, be-An, be-In, be-insAn, beU, be-U, .sA.heb"|_hAneH, +% pas"|andAz, naw"|AmUz +% \end{farsi} +% \end{Verbatim} +% +% \begin{farsi}[voc] +% _hwAb, xwI^s, _hwod, ^ceH, naH, yal_aH, _hAneH, _hAneHhA, _hAneH-hA, +% ketAb-e, U, rAh-e, t_U, nAmeH-i, man, bInI-e, An, mard, pA-i, In, +% zan, bAzU-i, In, zan, dAr-_i, man, _hU-_i, t_U, nAmeH-_i, sormeH-_i, +% gofteH-_i, ketAb-I, rAh-I, nAmeH-I, dAnA-I, pArU-I, dAnA-I-keH, +% pArU-I-keH, rafteH-am, rafteH-Im, AnjA-st, U-st, t_U-st, ketAb-I-st, +% be-man, be-t_U, be-An, be-In, be-insAn, beU, be-U, .sA.heb"|_hAneH, +% pas"|andAz, naw"|AmUz +% \end{farsi} +% +% \subsubsection{Urdu} +% +% Urdu example:\footnote{ ^^A +% Borrowed from \url{http://tabish.freeshell.org/u-trans/urducode.html}} +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \begin{urdu}[novoc] +% ,ham `i^sq kE mArO.n kA itnA ,hI fasAna,h ,hae +% rOnE kO na,hI.n kO'I ,ha.nsnE kO zamAna,h ,hae +% +% ya,h kiskA ta.sawwur ,hae ya,h kiskA fasAna,h ,hae +% jO a^sk ,hae A.nkhO.n mE.n tasbI.h kA dAnA ,hae +% \end{urdu} +% \end{Verbatim} +% +% \begin{urdu}[novoc] +% ,ham `i^sq kE mArO.n kA itnA ,hI fasAna,h ,hae\\ +% rOnE kO na,hI.n kO'I ,ha.nsnE kO zamAna,h ,hae +% +% ya,h kiskA ta.sawwur ,hae ya,h kiskA fasAna,h ,hae\\ +% jO a^sk ,hae A.nkhO.n mE.n tasbI.h kA dAnA ,hae +% \end{urdu} +% ^^Aﮨﹷﻢ ﻋﹻﺸﻖ ﻛﮯ ﻣﺎﺭﻭﮞ ﰷ ﹺﺍﺗﻨﺎ ﮨﹻﯽ ﻓﹷﺴﺎﻧﹷﻪ ﮨﹷﮯ +% ^^Aﺭﻭﻧﮯ ﻛﻮ ﻧﹷﮩﹻﻴﮟ ﻛﻮﺋﹻﯽ ﮨﹷﻨﺴﻨﮯ ﻛﻮ ﺯﹶﻣﺎﻧﹷﻪ ﮨﹷﮯ +% +% ^^Aﻳﹷﻪ ﻛﹻﺴﲀ ﺗﹷﺼﹷﻮﹽﹸﺭ ﮨﹷﮯ ﻳﹷﻪ ﻛﹻﺴﲀ ﻓﹷﺴﺎﻧﹷﻪ ﮨﹷﮯ +% ^^Aﺟﻮ ﺍﺷﻚ ﮨﹷﮯ ﺁﻧﻜﮭﻮﮞ ﻣﻴﮟ ﺗﹷﺴﺒﹻﻴﺢ ﰷ ﺩﺍﻧﺎ ﮨﹷﮯ +% +% \subsection{Special considerations} +% \parindenton +% \subsubsection{The name of God} \label{allahliga} +% +% The glyph \textsf{FDF2}, defined as ‘\textsc{arabic ligature allah isolated form}’ +% by the Unicode Consortium, is a source of great confusion. +% It is displayed in the Unicode Book with an initial alif and thus represents the +% name of God, Allāh, which in Arabic is always written as a special ligature +% (\ie {\tradarabic اﷲ} and not {\arabicfont الله}).\footnote{ ^^A +% The glyph {\tradarabic اﷲ} is taken from the font Traditional Arabic. +% In Scheherazade its design is rather suboptimal: {\arabicfont\char"FDF2}.} +% +% However, the majority of real-world fonts rather represent that +% ligature \textit{without} the initial alif.\footnote{ ^^A +% My research on Arabic fonts available or known to me yields the following picture: +% The fonts that do not display the initial alif in the ligature \textsf{FDF2} +% include those provided by \href{http://www.linotype.com/2517/arabicfonts.html}{Linotype}; +% the great majority of those licensed to or developed by +% \href{http://www.microsoft.com/typography/links/FontPortal.aspx?PID=8}{Microsoft} +% (I could verify it for Times New Roman, Arial, Courier New, Microsoft Sans Serif, +% Arabic Transparent, Simplified Arabic, Simplified Arabic Fixed, +% WinSoft Serif Pro, Traditional Arabic, Andalus, Old Antic Bold, +% Old Antic Decorated and Farsi Simple Bold); the fonts distributed by +% \href{http://www.arabeyes.org}{Arabeyes.org}; +% \href{http://scripts.sil.org/ArabicFonts}{SIL}'s Lateef; +% and the fonts developed by \href{www.crulp.org}{CRULP} in Pakistan. +% The Unicode-conformant fonts, on the other hand, are: +% \href{http://scripts.sil.org/ArabicFonts}{SIL}'s Scheherazade, +% \href{http://www.tdc.org/news/2006Results/AdobeArabic.html}{Adobe Arabic} +% (distributed with the \href{http://www.adobe.com/ceea/}{Middle-Eastern version} +% of the latest \href{http://www.adobe.com/products/acrobat/readermain.html}{Adobe Reader 7}), Arial Unicode MS, and \href{http://sakkal.com/type/typesetting.html}{Arabic Typesetting} +% (distributed with \href{http://www.microsoft.com/typography/VOLT.mspx}{VOLT} +% and with \href{http://www.microsoft.com/office/editions/prodinfo/language/proofingtools.mspx}{Microsoft Office Proofing Tools 2003}).} +% The confusion probably has to do with Unicode’s omission to include the ALLAH +% ligature without the initial alif, which is imperatively required for typesetting +% expressions like \textit{al-ḥamdu li-llāh} \RL{\tradarabic الحمد ﷲ}. +% Many fonts code the ligature {\tradarabic ﷲ} in the Private Use Area +% and make it accessible as a default ligature for the sequence \textit{lām-lām-hāʾ}. +% In such a case it can be generated from the input ¦\textarab{l|lh}¦ +% (the vertical bar here tells \arabxetex\ not to interpret the sequence ¦ll¦ +% as \textit{lām} with \textit{shadda}).\footnote{ ^^A +% This currently does not work with Scheharazade, but the +% developers are aware of the problem.} +% Besides not being a standard \arabtex\ input sequence, the trouble is that +% there is no way to know a priori whether the font provides the glyph {\tradarabic ﷲ} +% at all, and whether it is defined as a default ligature from the above input. +% +% To solve this problem with \arabxetex, we had no choice but provide two classes of +% font mappings, one for each of the above two categories of Arabic fonts.\footnote{ ^^A +% This has the unfortunate consequence of doubling the number of mappings shipped +% with \arabxetex. But since their size is small, it is more an esthetic annoyance +% than a practical one.} +% By default we assume the canonical situation where \textsf{U+FDF2} corresponds to +% {\adobearabic\char"FDF2}, but the user can change this by choosing one of the package options +% ¦fdf2alif¦ or ¦fdf2noalif¦; it can also be changed locally by means of the commands +% \cmd\SetAllahWithAlif\ and \cmd\SetAllahWithoutAlif\ \textit{before} making use of +% \cmd\arabicfont. In a future version we hope to implement a database of Arabic fonts +% within \arabxetex, so that this would work automatically in the most common cases. +% +% The font Adobe Arabic has in addition the ligature \textit{fa-li-llāh}: +% \textit{fā fatḥa lām kasra lām hāʾ} $\rightarrow$ {\adobearabic فَلِله}, which can be +% entered in \arabtex\ notation as ¦\textarab{falilh}¦. In this particular case we also +% provide the input convention ¦FALILLAH¦. +% +% +% ^^ATEST Scheherazade: \textarab{l|lh} +% ^^A +% ^^A\renewcommand{\arabicfont}{\tradarabic} +% ^^ATEST Trad Arabic: \textarab{l|lh} +% +% ^^ALinotype: \\ +% ^^ALotus Linotype {\lotusfont\char"FDF2} --- +% ^^AAlHarfAlJadid Linotype One {\fontspec[Scale=1.5]{AlHarfAlJadid Linotype One}\char"FDF2} --- +% ^^AAlHarfAlJadid Linotype Two {\fontspec[Scale=1.5]{AlHarfAlJadid Linotype Two}\char"FDF2} --- +% ^^AMariam Linotype {\fontspec[Scale=1.5]{Mariam Linotype}\char"FDF2} --- +% ^^AQadi Linotype {\fontspec[Scale=1.5]{Qadi Linotype}\char"FDF2} +% ^^A +% ^^AFonts from or licensed to Microsoft: \\ +% ^^ATimes New Roman {\fontspec[Scale=1.5]{Times New Roman}\char"FDF2} --- +% ^^AArial {\fontspec[Scale=1.5]{Arial}\char"FDF2} --- +% ^^ACourier New {\fontspec[Scale=1.5]{Courier New}\char"FDF2} --- +% ^^AMicrosoft Sans Serif {\fontspec[Scale=1.5]{Microsoft Sans Serif}\char"FDF2} --- +% ^^AArial Unicode MS {\arialuni\char"FDF2} --- +% ^^AArabic Transparent {\fontspec[Scale=1.5]{Arabic Transparent}\char"FDF2} --- +% ^^ASimplified Arabic {\fontspec[Scale=1.5]{Simplified Arabic}\char"FDF2} --- +% ^^ASimplified Arabic Fixed {\fontspec[Scale=1.5]{Simplified Arabic Fixed}\char"FDF2} --- +% ^^AWinSoft Serif Pro {\fontspec[Scale=1.5]{WinSoft Serif Pro}\char"FDF2} --- +% ^^ATraditional Arabic {\fontspec[Scale=1.5]{Traditional Arabic}\char"FDF2} --- +% ^^AArabic Typesetting {\arabtype\char"FDF2} --- +% ^^AAndalus {\fontspec[Scale=1.5]{Andalus}\char"FDF2} --- +% ^^AOld Antic Bold {\fontspec[Scale=1.5]{Old Antic Bold}\char"FDF2} --- +% ^^AFarsi Simple Bold {\fontspec[Scale=1.5]{Farsi Simple Bold}\char"FDF2} +% ^^A +% ^^A +% ^^AAdobe:\\ +% ^^AAdobe Arabic {\adobearabic\char"FDF2} --- +% ^^A +% ^^ASIL: \\ +% ^^AScheherazade {\arabicfont\char"FDF2} --- +% ^^ALateef {\fontspec{Lateef}\char"FDF2} +% ^^A +% ^^A%CRULP:\\ +% ^^A%Nafees Nastaleeq {\fontspec{Nafees Nastaleeq}\char"FDF2} --- +% ^^A%{\fontspec{Nafees Pakistani Naskh}\char"FDF2} +% ^^A +% ^^AArabeyes:\\ +% ^^AKacstBook {\fontspec{KacstBook}\char"FDF2} +% ^^AKacstFarsi {\fontspec{KacstFarsi}\char"FDF2} +% +% +% +% +% \subsection{Transliteration} +% +% At the moment transliteration mappings are provided for Arabic, Persian, Urdu, +% Sindhi and Pashto. The rest will be provided in a forthcoming version. +% It is also planned to implement alternative transliteration conventions +% for each language, as with \arabtex, \eg ZDMG, Encyclopedia Iranica, etc. +% Transliteration is set in italics by default. This can be changed by declaring, e.g., +% ¦\SetTransliterationStyle{\upshape}¦. +% To transliterate proper nouns with capitals, prefix the words to be capitalized with \cmd\UC: +% \begin{Verbatim}[gobble=2,fontsize=\normalsize] +% \begin{arab}[trans] +% al-^say_h al-`Alim \UC na.sIr \UC al-dIn \UC al-.tUsI +% \end{arab} +% \end{Verbatim} +% ^^A\SetTransliterationStyle{\gentium\itshape} +% \begin{arab}[trans] +% \noindent al-^say_h al-`Alim \UC na.sIr \UC al-dIn \UC al-.tUsI +% \end{arab} +% Note that the article \textit{al-} is automatically skipped. +% Note also that since the transliteration is coded in Unicode at the level of +% the font-mapping, it is necessary that the font contains all required glyphs.\footnote{ ^^A +% See Appendix~\ref{latinextfonts} for a list of recommended Unicode fonts that cover the +% full \textsc{latin extended additional} plane.} +% +% ^^AThe above example was set in Gentium (since FPL Neu does not provide all +% ^^Arequired glyphs) If your default roman font does not have the required +% ^^Adiacritics, you can declare for instance +% ^^A¦\SetTransliterationStyle{\fontspec{Gentium}\itshape}¦. +% +% ^^A\section{TODO} +% ^^A +% ^^A\begin{MYitemize} +% ^^A \item implement romanized transliterations for kashmiri, turkish, kurdish, malay and uighur. +% ^^A \item perhaps at a later stage: add support for hebrew and judeo-arabic? +% ^^A \item syriac? +% ^^A\end{MYitemize} +% ^^A +% +% \subsection{Typesetting critical editions with \pkg{ednotes}} +% \unsetfootnoteRL +% +% In conjunction with \pkg{bidi}, the \pkg{ednotes} package makes it wonderfully +% easy to typeset critical editions of texts in Arabic script (or other RTL +% scripts).\footnote{ +% The package \href{http://tug.ctan.org/tex-archive/macros/latex/contrib/ledmac/ledmac.pdf}{\pkg{ledmac}} +% has not been extensively tested with \pkg{bidi} yet, but our initial +% trials were not successful.} +% ^^A Be aware that -- as any package which plays with the primitive \cmd\everypar -- +% ^^A is not compatible with \pkg{bidi}. +% The direction of each level of footnotes can be controlled by +% means of ¦\SetFootnoteHook{\setRL}¦ (or ¦\setLR¦) right before the declaration +% ¦\DeclareNewFootnote{X}[…]¦. Here is an example preamble that might be used +% for typesetting a critical edition with \pkg{ednotes} and \arabxetex.\footnote{ ^^A +% Of course if the edition is typed directly in UTF-8 encoding, +% the use of \arabxetex\ is by no means compulsory. Yet see the +% remarks in §~\ref{arabtexnotes} above.} +% See the \pkg{ednotes} documentation for more details.\footnote{ ^^A +% \url{http://www.ctan.org/tex-archive/macros/latex/contrib/ednotes/ednotugb.pdf}. +% See also \url{http://www.webdesign-bu.de/uwe_lueck/critedltx.html}.} +% +% \begin{Verbatim}[gobble=2,fontsize=\small] +% \usepackage[modulo,perpage,para*]{ednotes}%this calls manyfoot.sty and lineno.sty +% \usepackage{arabxetex} +% +% % make \footnoterule of \textwidth +% \makeatletter% +% \renewcommand{\footnoterule}{\kern-3\p@ +% \hrule width \textwidth \kern 2.6\p@} +% \makeatother +% +% \modulolinenumbers[5] +% % this is to set linenumbering in Arabic: +% \renewcommand{\linenumberfont}{\arabicfont\addfontfeature{Mapping=arabicdigits}\tiny} +% +% \renewcommand{\extrafootnoterule}{} +% \SelectFootnoteRule[0]{extra} +% \SetFootnoteHook{\unsetRL}%--> must appear immediately before \DeclareNewFootnote +% %% For ednotes the command \PrecedeLevelWith{X}{hook} is available +% \DeclareNewFootnote{B}[fnsymbol] +% \renewcommand*{\differentlines}[2]{\linesfmt{\RL{#1$-$#2}}}% +% \renewcommand*{\linesfmt}[1]{\raisebox{1ex}{\linenumberfont #1}~}% +% \renewcommand{\lemmafmt}[1]{#1~[ }% +% %Custom macros to enter variants, additions, omissions, illegible passages, +% % text above the line, marginal notes, lacunae, and restorations: +% \newcommand{\VAR}[2]{\Anote{\textarab{#1}}{\textarab{#2}}} +% \newcommand{\ADD}{\textlatin{\textbf{+}}\,}% or \textarab{zAyid fI}\ +% \newcommand{\OM}{\textlatin{\textbf{\char"2013}}\,}% or \textarab{nAqi.s fI}\ +% \newcommand{\ILLEG}{\textarab{.gayr maqrU' fI}\ } +% \newcommand{\BLANK}{\textarab{bayA.d fI}\ } +% \newcommand{\SUPERLIN}{\textarab{ta.ht al-sa.tr fI}\ } +% \newcommand{\MARG}{\textarab{bi-al-hAmi^s fI}\ } +% \newcommand{\LACUNA}{\textlatin{\textlangle~{\dots}~\textrangle}} +% \newcommand{\RESTOR}[1]{\textlatin{\textrangle}#1\textlatin{\textlangle}} +% % to separate lemmas in different manuscripts: +% \def\SEP{\enskip$\Vert$\enskip} +% \end{Verbatim} +% +% For a real-life example of how to use ednotes with \arabxetex, see +% the file ¦ednotes_example.tex¦ which comes with this package. +% +% +% \section{Tabular overview of \arabtex\ encoding conventions} +% \label{conventiontable} +% +% The table is arranged alphabetically following the most signicant letter of the +% \ASCII\ input code. Color convention: red means that the glyph is the default +% for the given input code, and that it is available in all languages except +% those where different glyphs are shown (in black). That default glyph is also +% displayed in light gray under each language in which it is featured. Glyphs in +% blue are archaic forms (\eg old Urdu). An asterisk after the Unicode number +% means that the character was not available with \arabtex. Green glyphs are +% special: either they are used to represent defective writing or they provide +% characters for other languages. Those shown in the column for Arabic are +% available by default. See the relevant notes at the end. +% +% \begin{center}\footnotesize +% \renewcommand{\arraystretch}{2} +% ^^A 1 2 3 4 5 6 7 8 9 10 +% ^^A\tablefirsthead{% +% ^^Acode & arab & farsi & urdu & pashto & sindhi & ottoman & kurdish & kashmiri & malay & uighur \\\hline} +% \tablehead{^^A +% \hline +% ^^A\tiny code &\tiny arab &\tiny farsi &\tiny urdu &\tiny pashto &\tiny sindhi &\tiny ottoman &\tiny kurdish &\tiny kashmiri &\tiny malay &\tiny uighur \\\hline} +% ^^A next line: language codes after ISO-639-1 +% code & ar & fa & ur & ps & sd & tr & ku & ks & ms & ug \\\hline} +% \tabletail{\hline} +% \begin{supertabular}{|c|c|c|c|c|c|c|c|c|c|c|c|} +% ^^A\tablelasttail{\hline} +% ¦a¦ & \GR{Ba}{064E}&&&&&&\GN[kurdish]{a/Ba}{}&&&\\ +% ¦A¦ & \GR{BA}{0627}&&&&&&\GN[kurdish]{A/BA}{}&&&\\ +% ¦.a¦ & &&&&&&&\GN[kashmiri]{B.a}{0654}&&\\ +% ¦.A¦ & &&&&&&&\GN[kashmiri]{B.A}{0672}&&\\ ^^A(kashmiri) +% ¦_a¦ & \GN{B_a}{0670}&&&&&&&&&\\ +% ¦_A¦ & \GN{B_A}{}&&&&&&&&&\\ +% ¦:a¦ & &&&&&&&&&\GN[uighur]{:a}{} \\ +% ¦b¦ & \GR{b}{0628}&\GG{b}&\GG{b}&\GG{b}&\GG{b}&\GG{b}&\GG{b}&\GG{b}&\GG{b}&\GG{b} \\ +% ¦B¦ & \GR{B}{0640}&&&&&&&&&\\ +% ¦.b¦ & \GV{.b}{066E}&&&&&&&&&\\ +% ¦:b¦ & &&&&\GR[sindhi]{:b}{067B}&&&&&\\ ^^A(sindhi) +% ¦bh¦ & &&&&\GN[sindhi]{bh}{0680}&&&&&\\ +% ¦c¦ & &&&&\GR[sindhi]{c}{0681}&\GN[turk]{c}{062C}&&&\GN[malay]{c}{0686}&\\ +% ^^A¦.c¦ & \GN{.c}{}&&&&&&&&&\\ +% ¦,c¦ & &&&\GR[pashto]{,c}{0685}&&\GN[turk]{,c}{0686}&\GN[kurdish]{,c}{0686}&&&\\ +% ¦^c¦ & \GG{^c}&\GR{^c}{0686}&\GG{^c}&\GG{^c}&\GG{^c}&\GG{^c}&\GG{^c}&\GG{^c}&\GG{^c}&\GG{^c} \\ +% ¦^ch¦ & &&&&\GN[sindhi]{^ch}{0687}&&&&&\\ +% ¦:c¦ & &&&\GR[pashto]{:c}{0682*}&&&&&&\\ +% ¦.^c¦ & \GV{.^c}{06BF*}&&&&&&&&&\\ +% ¦d¦ & \GR{d}{062F}&\GG{d}&\GG{d}&\GG{d}&\GG{d}&\GG{d}&\GG{d}&\GG{d}&\GG{d}&\GG{d} \\ +% ¦.d¦ & \GR{.d}{0636}&\GG{.d}&\GG{.d}&\GG{.d}&\GG{.d}&\GG{.d}&\GG{.d}&\GG{.d}&\GG{.d}&\GG{.d} \\ +% ¦,d¦ & &&\GN[urdu]{,d}{0688}&\GN[pashto]{,d}{0689}&\GR[sindhi]{,d}{068A}&&&&&\\ ^^Aurdu +% ¦.,d¦ & &&\GV{.,d}{068B*}$^a$&&&&&&&\\ ^^AWestern Punjabi +% ¦^d¦ & \GV{^d}{06EE*}&&&&\GB[sindhi]{^d}{068E*}&&&&&\\ +% ¦_d¦ & \GR{_d}{0630}&\GG{_d}&\GG{_d}&\GG{_d}&\GG{_d}&\GG{_d}&\GG{_d}&\GG{_d}&\GG{_d}&\\ +% ¦:d¦ & &&&&\GR[sindhi]{:d}{068F}&&&&&\\ ^^A(sindhi) +% ¦::d¦ & &&\GB[urdu]{::d}{0690*}&&&&&&&\\ +% ¦dh¦ & &&&&\GN[sindhi]{dh}{068C}&&&&&\\ +% ¦,dh¦ & &&&&\GN[sindhi]{,dh}{068D}&&&&&\\ +% ¦e¦ & &\GR{Be}{}&\GG{Be}&\GN[pashto]{Be}{0659}&\GG{Be}&&\GN[kurdish]{e/Be}{}&\GN[kashmiri]{Be}{06D2+0658}&&\GN[uighur]{Be}{06D0} \\ +% ¦E¦ & &\GR{BE}{}&\GN[urdu]{BE}{06D2}&\GN[pashto]{BE}{06D0}&&&\GN[kurdish]{E/BE}{}&\GN[kashmiri]{BE}{06D2}&&\\ +% ¦ee¦ & &&&\GN[pashto]{Bee}{}&&&&&&\\ +% ¦ae¦ & \GN{Bae}{}&&\GN[urdu]{Bae}{}&\GN[pashto]{Bae}{}&\GN[sindhi]{Bae}{}&&&&&\\ +% ¦Ee¦ & &&&\GN[pashto]{BEe}{06CD}&&&&&&\\ +% ^^A¦.e¦ & \GN{B.e}{}&&&&&&&&&\\ +% ^^A¦^e¦ & \GN{B^e}{}&&&&&&&&&\\ +% ¦_e¦ & &\GR{B_e}{}&&&&&&&&\\ +% ¦`e¦ & &&&&&&\GN[kurdish]{`e}{}&&&\\ +% ¦'E¦ & &&\GR[urdu]{B'E}{06D3}&&&&&&&\\ +% ^^A¦:e¦ & \GN{B:e}{}&&&&&&&&&\\ +% ¦f¦ & \GR{f}{0641}&\GG{f}&\GG{f}&\GG{f}&\GG{f}&\GG{f}&\GG{f}&\GG{f}&\GG{f}&\GG{f} \\ ^^A maghribi: \GN[maghribi]{f}{} +% ¦.f¦ & \GV{.f}{06A1}&&&&&&&&&\\ +% ¦g¦ & &\GR{g}{06AF}&\GG{g}&\GG{g}&\GG{g}&\GG{g}&\GG{g}&\GG{g}&\GN[malay]{g}{0762}&\GG{g} \\ +% ¦G¦ & &&&\GR[pashto]{G}{06AB}&&&&&&\\ +% ¦.g¦ & \GR{.g}{063A}&\GG{.g}&\GG{.g}&\GG{.g}&\GG{.g}&\GG{.g}&\GG{.g}&\GG{.g}&\GG{.g}&\\ +% ¦:g¦ & &&&&\GR[sindhi]{:g}{06B3}&&&&&\\ +% ¦.:g¦ & &&&&\GB[sindhi]{.:g}{06B4*}&&&&&\\ +% ¦,g¦ & \GV{,g}{06AC}$^b$ &&&&&&&&&\\ +% ¦^g¦ & \GR{^g}{062C}&\GG{j}&\GG{j}&\GG{j}&\GG{j}&\GN[turk]{^g}{06A0}&\GN[kurdish]{^g}{063A}&\GG{j}&\GN[malay]{^g}{06A0}&\GN[uighur]{^g}{063A} \\ +% ¦gh¦ & &&&&\GN[sindhi]{gh}{}&&&&&\\ +% ¦h¦ & \GR{h}{0647}&\GG{h}&\GN[urdu]{h}{06BE}&\GG{h}&\GG{h}&\GG{h}&\GG{h}&\GG{h}&\GG{h}&\GG{h} \\ +% ¦H¦ & &\GN[farsi]{-H}{0647}&\GN[urdu]{-H}{06C3}&\GN[pashto]{-H}{0647}&&&&&&\\ +% ¦.h¦ & \GR{.h}{062D}&\GG{.h}&\GG{.h}&\GG{.h}&\GG{.h}&\GG{.h}&\GG{.h}&\GG{.h}&\GG{.h}&\\ +% ¦,h¦ & &&\GR[urdu]{,h}{06C1}&&&&&\GN[kashmiri]{,h}{}&&\\ +% ¦_h¦ & \GR{_h}{062E}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\\ +% ¦i¦ & \GR{Bi}{0650}&&&&&&&&&\GN[uighur]{-i-}{066E} \\ +% ¦I¦ & \GN{BI}{064A}&\GR[farsi]{BI}{06CC}&\GG[urdu]{BI}&\GG[pashto]{BI}&\GN[sindhi]{BI}{}&\GG[turk]{BI}&\GN[kurdish]{I/BI}{}&\GG[kashmiri]{BI}&\GN[malay]{BI}{}&\\ +% ¦.I¦ & \GR{B.I}{06CC*}&&&&&&&&&\\ +% ^^A¦.i¦ & \GN{B.i}{}&&&&&&&&&\\ +% ¦_i¦ & \GR{B_i}{0656}&&&&&&&&&\\ +% ^^A¦:i¦ & \GN{B:i}{}&&&&&&&&&\\ +% ¦j¦ & \GR{j}{062C}&\GG{j}&\GG{j}&\GG{j}&\GG{j}&\GN[turk]{j}{0698}&\GG{j}&\GG{j}&\GG{j}&\GG{j} \\ +% ¦:j¦ & &&&&\GR[sindhi]{:j}{0684}&&&&&\\ ^^A(sindhi) +% ¦jh¦ & &&&&\GN[sindhi]{jh}{06A9}&&&&&\\ +% ¦k¦ & \GR{k}{0643}&\GG{k}&\GG{k}&\GG{k}&\GN[sindhi]{k}{06AA}&\GG{k}&\GG{k}&\GG{k}&\GG{k}&\GG{k} \\ +% ^^A¦K¦ & \GN{K}{}&&&&&&&&&\\ +% ¦.k¦ & \GV{.k}{06A9}&&&&&\GN[turk]{.k}{0642}&&&&\\ +% ¦_k¦ & \GR{_k}{063A}&&&&&&&&&\\ +% ¦kh¦ & &&&&\GN[sindhi]{kh}{}&&&&&\\ +% ¦l¦ & \GR{l}{0644}&\GG{l}&\GG{l}&\GG{l}&\GG{l}&\GG{l}&\GG{l}&\GG{l}&\GG{l}&\GG{l} \\ +% ¦.l¦ & &&&&&&\GR[kurdish]{.l}{06B6*}&&&\\ +% ¦^l¦ & &&&&&&\GR[kurdish]{^l}{06B5}&&&\\^^A(kurdish) +% ¦m¦ & \GR{m}{0645}&\GG{m}&\GG{m}&\GG{m}&\GG{m}&\GG{m}&\GG{m}&\GG{m}&\GG{m}&\GG{m} \\ +% ^^A¦M¦ & \GN{M}{}&&&&&&&&\GN[malay]{M}{}&\\ +% {\tiny ¦.mIN¦} & &&&&\GN[sindhi]{.mIN}{06FE}&&&&&\\ +% {\tiny ¦'|IN¦} & &&&&\GN[sindhi]{'|IN}{06FD}&&&&&\\ +% ¦n¦ & \GR{n}{0646}&\GG{n}&\GG{n}&\GG{n}&\GG{n}&\GG{n}&\GG{n}&\GG{n}&\GG{n}&\GG{n} \\ +% ¦aN¦ & \GR{BaN}{064B}&&&&&&&&&\\ +% ¦uN¦ & \GR{BuN}{064C}&&&&&&&&&\\ +% ¦iN¦ & \GR{BiN}{064D}&&&&&&&&&\\ +% ¦.n¦ & &&\GR{.n}{06BA}&&&&&&&\\ +% ¦..n¦ & &&&&\GB[sindhi]{..n}{06B2*}&&&&&\\ +% ¦,n¦ & &&&\GR[pashto]{,n}{06BC}&\GN[sindhi]{,n}{06BB}&&&&&\\ +% ¦^n¦ & &&&&\GN[sindhi]{^n}{0683}&&&&\GN[malay]{^n}{06BD}&\GR[uighur]{^n}{06AD} \\ +% ¦:n¦ & &&&&\GR[sindhi]{:n}{06B1}&&&&&\\ +% ¦o¦ & &\GR[farsi]{Bo}{}&&\GN[pashto]{Bo}{0657}&&&\GN[kurdish]{o/Bo}{}&\GN[kashmiri]{Bo}{06C6}&&\GN[uighur]{Bo}{} \\ +% ¦O¦ & &\GN[farsi]{BO}{}&\GN[urdu]{BO}{}&\GN[pashto]{BO}{}&&&\GN[kurdish]{O/BO}{}&\GN[kashmiri]{BO}{}&&\\ +% ¦ao¦ & &&\GR[urdu]{Bao}{}&&\GR[sindhi]{Bao}{}&&&&&\\ +% ¦.o¦ & &&&&&&&\GN[kashmiri]{B.o}{06C4}&&\\ +% ¦.O¦ & &&&&&&&\GN[kashmiri]{B.O}{}&&\\ +% ¦_o¦ & &\GR{B_o}{}&&&&&&&&\\ +% ¦_O¦ & &\GR{B_O}{}&&&&&&&&\\ +% ¦:o¦ & &&&&&&&&&\GN[uighur]{:o/B:o}{06C6} \\ +% ¦:O¦ & \GV{:O}{06FC}&&&&&&&&&\\ +% ¦p¦ & &\GR{p}{067E}&\GG{p}&\GG{p}&\GG{p}&\GG{p}&\GG{p}&\GG{p}&\GN[malay]{p}{06A8}&\GG{p} \\ +% ^^A¦.p¦ & \GN{.p}{} &&&&&&&&&\\ +% ¦ph¦ & &&&&\GN[sindhi]{ph}{06A6}&&&&&\\ +% ¦q¦ & \GR{q}{0642}&\GG{q}&\GG{q}&\GG{q}&\GG{q}&\GG{q}&\GG{q}&\GG{q}&\GG{q}&\GG{q} \\ ^^A\GN[maghribi]{q}{} +% ¦.q¦ & \GV{.q}{066F}&&&&&&&&&\\ +% ¦r¦ & \GR{r}{0631}&\GG{r}&\GG{r}&\GG{r}&\GG{r}&\GG{r}&\GG{r}&\GG{r}&\GG{r}&\GG{r} \\ +% ¦.r¦ & \GV{.r}{0694*}&&&&&&\GN[kurdish]{.r}{0695}&&&\\ +% ¦,r¦ & &&\GR[urdu]{,r}{0691}&\GN[pashto]{,r}{0693}&\GN[sindhi]{,r}{0699}&&\GN[kurdish]{,r}{0694*}&&&\\ +% ¦^r¦ & \GV{^r}{06EF*}&&&&&&\GN[kurdish]{^r}{0692*}&&&\\ +% ¦:r¦ & \GV{:r}{0697*}$^c$&&&&&&&&&\\ ^^ADarwa in Dagestan +% ¦s¦ & \GR{s}{0633}&\GG{s}&\GG{s}&\GG{s}&\GG{s}&\GG{s}&\GG{s}&\GG{s}&\GG{s}&\GG{s} \\ +% ^^A¦S¦ & \GN{S}{}&&&&&&&&&\\ +% ¦.s¦ & \GR{.s}{0635}&\GG{.s}&\GG{.s}&\GG{.s}&\GG{.s}&\GG{.s}&\GG{.s}&\GG{.s}&\GG{.s}&\\ +% ¦,s¦ & &&&\GR[pashto]{,s}{069A}&&\GN[turk]{,s}{0634}&&&&\\ +% ¦^s¦ & \GR{^s}{0634}&\GG{^s}&\GG{^s}&\GG{^s}&\GG{^s}&\GG{^s}&\GG{^s}&\GG{^s}&\GG{^s}&\GG{^s} \\ +% ¦_s¦ & &&&&\GR{_s}{062B}&&&&&\\ +% ¦:s¦ & \GV{:s}{069B}&&&&&&&&&\\ +% ¦t¦ & \GR{t}{062A}&\GG{t}&\GG{t}&\GG{t}&\GG{t}&\GG{t}&\GG{t}&\GG{t}&\GG{t}&\GG{t} \\ +% ¦T¦ & \GR{T}{062A}&&&&&&&\GG{T}&&\\ +% ¦.t¦ & \GR{.t}{0637}&\GG{.t}&\GG{.t}&\GG{.t}&\GG{.t}&\GG{.t}&\GG{.t}&\GG{.t}&\GG{.t}&\\ +% ^^A¦.T¦ & \GN{.T}{}&&&&&&&&&\\ +% ¦,t¦ & &&\GR[urdu]{,t}{0679}&\GN[pashto]{,t}{067C}&\GN[sindhi]{,t}{067D}&&&&&\\ +% ¦_t¦ & \GR{_t}{062B}&\GG{_t}&\GG{_t}&&\GG{_t}&\GG{_t}&\GG{_t}&\GG{_t}&\GG{_t}&\\ +% ^^A¦:t¦ & \GN{:t}{}&&&&&&&&&\\ +% ¦th¦ & &&&&\GN[sindhi]{th}{067F}&&&&&\\ +% ¦,th¦ & &&&&\GN[sindhi]{,th}{067A}&&&&&\\ +% ¦u¦ & \GR{Bu}{064F}&\GG{Bu}&\GG{Bu}&\GG{Bu}&\GG{Bu}&\GG{Bu}&\GN[kurdish]{u/Bu}{}&\GG{Bu}&\GG{Bu}&\GN[uighur]{u/Bu}{06C7} \\ +% ¦U¦ & \GR{BU}{}&\GG{BU}&\GG{BU}&\GG{BU}&\GG{BU}&\GG{BU}&\GN[kurdish]{U/BU}{}&\GN[kashmiri]{BU}{0648+0657}&\GG{BU}&\\ +% ¦.u¦ & &&&&&&&\GN[kashmiri]{B.u}{0655}&&\\ +% ¦.U¦ & &&&&&&&\GN[kashmiri]{B.U}{0673}&&\\ +% ^^A¦^u¦ & \GN{B^u}{}&&&&&&&&&\\ +% ¦_u¦ & \GR{B_u}{0657}&&&&&&&&&\\ +% ^^A¦_U¦ & \GN{B_U}{}&&&&&&&&&\\ +% ¦:u¦ & &&&&&&&&&\GN[uighur]{:u/B:u}{06C8} \\ +% ¦:U¦ & \GV{:U}{06C7}$^d$&&&&&&&&&\\ +% ¦v¦ & \GR{v}{06A4}$^e$&&&&&&&&\GN[malay]{v}{06CF}&\\ ^^A\GN[maghribi]{v}{06A5} +% ^^A¦V¦ & \GN{V}{}&&&&&&&&&\\ +% ^^A¦.v¦ & \GN{.v}{}&&&&&&&&&\\ +% ¦w¦ & \GR{w}{0648}&\GG{w}&\GG{w}&\GG{w}&\GG{w}&\GG{w}&\GG{w}&\GG{w}&\GG{w}&\GN[uighur]{w}{06CB} \\ +% ¦W¦ & \GR{W}{}&&&&&&&&&\\ +% ¦^w¦ & \GV{^w}{06C9*}&&&&&&&&&\\ +% ¦:w¦ & \GV{:w}{06CA*}&&&&&&&&&\\ +% ¦x¦ & \GR{x}{062E}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GG{x}&\GN[uighur]{x}{} \\ +% ¦y¦ & \GR{y}{064A}&\GN[farsi]{y}{06CC}&\GG[urdu]{y}&\GG[pashto]{y}&\GG{y}&\GG[turk]{y}&\GG{y}&\GG[kashmiri]{y}&\GG{y}&\GG{y} \\ +% ¦Y¦ & \GR{"Y}{0649}&&&&&&&&&\\ +% ¦.y¦ & &&&&&&&\GN[kashmiri]{B.yB}{}&&\\ +% ¦z¦ & \GR{z}{0632}&\GG{z}&\GG{z}&\GG{z}&\GG{z}&\GG{z}&\GG{z}&\GG{z}&\GG{z}&\GG{z} \\ +% ¦.z¦ & \GR{.z}{0638}&\GG{.z}&\GG{.z}&\GG{.z}&\GG{.z}&\GG{.z}&\GG{.z}&\GG{.z}&\GG{.z}&\\ +% ¦,z¦ & &&&\GR[pashto]{,z}{0696}&&\GN[turk]{,z}{0636}&&&&\\ +% ¦^z¦ & &\GR{^z}{0698}&\GG{^z}&\GG{^z}&&&&\GG{^z}&&\GG{^z} \\ +% ¦_z¦ & \GR{_z}{0630}$^f$&&&&&&&&&\\ +% ¦:z¦ & &&&&&&&\GN[kashmiri]{:z}{0636}&&\\ +% ¦'¦ & \GR{'}{0621}&\GG{'}&\GG{'}&\GG{'}&\GG{'}&\GG{'}&\GG{'}&\GG{'}&\GG{'}&\GG{ئ-} \\ +% ¦`¦ & \GR{`}{0639}&\GG{`}&\GG{`}&\GG{`}&\GG{`}&\GG{`}&\GG{`}&\GG{`}&\GG{`}&\\ +% &&&&&&&&&& \\ +% \end{supertabular} +% \end{center} +% \footnotesize +% +% $^a$ For Western Punjabi (Lahnda).\\ +% $^b$ Alternative form of \textmalay{g} in Malay.\\ +% $^c$ For Darwa (language of Dagestan).\\ +% $^d$ For Kirgiz (and Uighur).\\ +% $^e$ To transliterate dialects and foreign words.\\ +% $^f$ Alternative to ¦_d¦.\\ +% \normalsize\bigskip +% +% Maghribi Arabic is identical to Arabic except for the three letters ¦f¦, ¦q¦ +% and ¦v¦ which yield the glyphs \textmaghribi{f} (U+06A2), \textmaghribi{q} +% (U+06A7), and \textmaghribi{v} (U+06A5), respectively. +% +% ^^A TODO : implement the following ?? +% ^^A perhaps unnecessary coz it can be coded by means of Urdu +% ^^A yet it might be nice to code pashto in a standard way and +% ^^A be able to switch the representation to Pakistani +% ^^A Differences between standard Pashto and Pakistani Pashto (from inspection of the Omega OTP files) +% ^^A064A -> 06D2 +% ^^A069A -> 062E ?? +% ^^A06A9 -> 0643 +% ^^A06AF -> 06AB +% ^^A06CD -> 06D2 +% ^^A06D0 -> 06D2 +% ^^A0626 -> 06D2 +% ^^A0649 -> 06D2 +% ^^A067C -> 0679 +% ^^A0693 -> 0691 +% ^^A0696 -> 06AF +% ^^A06BC -> 0646 0631 +% ^^A0689 -> 0688 +% ^^A +% +% \section{Unicode-Encoding concordance} +% \parindent 0pt +% \let\oldbaselineskip=\baselineskip +% \baselineskip=20pt +% \begin{multicols}{2} +% \begin{tabbing} +% \textsf{060B} \qquad \= {\arabicfont\char"060B} \qquad \= \kill +% \textsf{060B} \> {\arabicfont\char"060B} \\ +% \textsf{060C} \> {\arabicfont\char"060C} \> ¦,¦ \\ +% \textsf{060D} \> {\arabicfont\char"060D} \\ +% \textsf{060E} \> {\arabicfont\char"060E} \\ +% \textsf{060F} \> {\arabicfont\char"060F} \\ +% \textsf{0610} \> {\arabicfont\char"0610} \\ +% \textsf{0611} \> {\arabicfont\char"0611} \\ +% \textsf{0612} \> {\arabicfont\char"0612} \\ +% \textsf{0613} \> {\arabicfont\char"0613} \\ +% \textsf{0614} \> {\arabicfont\char"0614} \\ +% \textsf{0615} \> {\arabicfont\char"0615} \\ +% ^^AU+0616\\ %\textarab{\char"0616} \\ +% ^^AU+0617\\ %\textarab{\char"0617} \\ +% ^^AU+0618\\ %\textarab{\char"0618} \\ +% ^^AU+0619\\ %\textarab{\char"0619} \\ +% ^^AU+061A\\ %\textarab{\char"061A} \\ +% \textsf{061B} \> {\arabicfont\char"061B} \> ¦;¦ \\ ^^A\textarab{ ; } \\ +% ^^AU+061C\\ %\textarab{\char"061C} \\ +% ^^AU+061D\\ %\textarab{\char"061D} \\ +% \textsf{061E} \> {\arabicfont\char"061E} \> ¦::¦/¦DOTS¦ \\ +% \textsf{061F} \> {\arabicfont\char"061F} \> ¦?¦ \\ ^^A\textarab{ ? } \\ +% ^^AU+0620\\ %\textarab{\char"0620} \\ +% \textsf{0621} \> {\arabicfont\char"0621} \> ¦|"'¦ \textit{or context} \\ ^^A\textverb{ '| } \\ +% \textsf{0622} \> {\arabicfont\char"0622} \> ¦A"'¦ \textit{or context} \\ ^^A\textverb{ 'A } \\ +% \textsf{0623} \> {\arabicfont\char"0623} \> ¦a"'¦ \textit{or context} \\ ^^A\textverb{ 'a } \\ +% \textsf{0624} \> {\arabicfont\char"0624} \> ¦w"'¦ \textit{or context} \\ ^^A\textverb{ 'w } \\ +% \textsf{0625} \> {\arabicfont\char"0625} \> ¦i"'¦ \textit{or context} \\ ^^A\textverb{ 'i } \\ +% \textsf{0626} \> {\arabicfont\char"0626} \> ¦y"'¦ \textit{or context} \\ ^^A\textverb{ 'y } \\ +% \textsf{0627} \> {\arabicfont\char"0627} \> ¦A¦ \\ ^^A\textarab{ A } \\ +% \textsf{0628} \> {\arabicfont\char"0628} \> ¦b¦ \\ ^^A\textarab{ b } \\ +% \textsf{0629} \> {\arabicfont\char"0629} \> ¦T¦ \\ ^^A\textarab{ T } \\ +% \textsf{062A} \> {\arabicfont\char"062A} \> ¦t¦ \\ ^^A\textarab{ t } \\ +% \textsf{062B} \> {\arabicfont\char"062B} \> ¦_t¦ \\ ^^A\textarab{ _t } \\ +% \textsf{062C} \> {\arabicfont\char"062C} \> ¦^g¦/¦j¦ \\ ^^A\textarab{ j } \\ +% \textsf{062D} \> {\arabicfont\char"062D} \> ¦.h¦ \\ ^^A\textarab{ .h } \\ +% \textsf{062E} \> {\arabicfont\char"062E} \> ¦_h¦/¦x¦ \\ ^^A\textarab{ x } \\ +% \textsf{062F} \> {\arabicfont\char"062F} \> ¦d¦ \\ ^^A\textarab{ d } \\ +% \textsf{0630} \> {\arabicfont\char"0630} \> ¦_d¦ \\ ^^A\textarab{ _d } \\ +% \textsf{0631} \> {\arabicfont\char"0631} \> ¦r¦ \\ ^^A\textarab{ r } \\ +% \textsf{0632} \> {\arabicfont\char"0632} \> ¦z¦ \\ ^^A\textarab{ z } \\ +% \textsf{0633} \> {\arabicfont\char"0633} \> ¦s¦ \\ ^^A\textarab{ s } \\ +% \textsf{0634} \> {\arabicfont\char"0634} \> ¦^s¦ \\ ^^A\textarab{ ^s } \\ +% \textsf{0635} \> {\arabicfont\char"0635} \> ¦.s¦ \\ ^^A\textarab{ .s } \\ +% \textsf{0636} \> {\arabicfont\char"0636} \> ¦.d¦ \\ ^^A\textarab{ .d } \\ +% \textsf{0637} \> {\arabicfont\char"0637} \> ¦.t¦ \\ ^^A\textarab{ .t } \\ +% \textsf{0638} \> {\arabicfont\char"0638} \> ¦.z¦ \\ ^^A\textarab{ .z } \\ +% \textsf{0639} \> {\arabicfont\char"0639} \> ¦`¦ \\ ^^A\textarab{ ` } \\ +% \textsf{063A} \> {\arabicfont\char"063A} \> ¦.g¦ \\ ^^A\textarab{ .g } \\ +% \textsf{0640} \> {\arabicfont\char"0640} \> ¦B¦ \\ ^^A\textarab{ B } \\ +% \textsf{0641} \> {\arabicfont\char"0641} \> ¦f¦ \\ ^^A\textarab{ f } \\ +% \textsf{0642} \> {\arabicfont\char"0642} \> ¦q¦ \\ ^^A\textarab{ q } \\ +% \textsf{0643} \> {\arabicfont\char"0643} \> ¦k¦ \\ ^^A\textarab{ k } \\ +% \textsf{0644} \> {\arabicfont\char"0644} \> ¦l¦ \\ ^^A\textarab{ l } \\ +% \textsf{0645} \> {\arabicfont\char"0645} \> ¦m¦ \\ ^^A\textarab{ m } \\ +% \textsf{0646} \> {\arabicfont\char"0646} \> ¦n¦ \\ ^^A\textarab{ n } \\ +% \textsf{0647} \> {\arabicfont\char"0647} \> ¦h¦ \\ ^^A\textarab{ h } \\ +% \textsf{0648} \> {\arabicfont\char"0648} \> ¦w¦ \\ ^^A\textarab{ w } \\ +% \textsf{0649} \> {\arabicfont\char"0649} \> ¦Y¦ \\ ^^A\textarab{ Y } \\ +% \textsf{064A} \> {\arabicfont\char"064A} \> ¦y¦ \\ ^^A\textarab{ y } \\ +% \textsf{064B} \> {\arabicfont\char"064B} \> ¦aN¦ \\ ^^A\textarab{ |BaN } \\ +% \textsf{064C} \> {\arabicfont\char"064C} \> ¦uN¦ \\ ^^A\textarab{ |BuN } \\ +% \textsf{064D} \> {\arabicfont\char"064D} \> ¦iN¦ \\ ^^A\textarab{ |BiN } \\ +% \textsf{064E} \> {\arabicfont\char"064E} \> ¦a¦ \\ ^^A\textarab{ |Ba } \\ +% \textsf{064F} \> {\arabicfont\char"064F} \> ¦u¦ \\ ^^A\textarab{ |Bu } \\ +% \textsf{0650} \> {\arabicfont\char"0650} \> ¦i¦ \\ ^^A\textarab{ |Bi } \\ +% \textsf{0651} \> {\arabicfont\char"0651}\\ ^^A\textarab{ |BB }\\ +% \textsf{0652} \> {\arabicfont\char"0652} \> ¦"¦ \textit{after a consonant or} ¦°¦ \\ +% \textsf{0653} \> {\arabicfont\char"0653} \> ¦^U¦ \\ +% \textsf{0654} \> {\arabicfont\char"0654} \> ¦'B¦ \\ ^^A\textverb{ 'B } \\ +% \textsf{0655} \> {\arabicfont\char"0655} \> ¦.u¦ \textit{kashmiri} \\ +% \textsf{0656} \> {\arabicfont\char"0656} \> ¦I¦ \textit{kashmiri} \\ +% \textsf{0657} \> {\arabicfont\char"0657} \> ¦o¦ \textit{pashto} \\ ^^A\textpashto{ Bo } \\ +% \textsf{0658} \> {\arabicfont\char"0658} \> \textit{see kashmiri} ¦e¦ \\ +% \textsf{0659} \> {\arabicfont\char"0659} \> ¦e¦ \textit{pashto} \\ +% \textsf{065A} \> {\arabicfont\char"065A} \\ +% \textsf{065B} \> {\arabicfont\char"065B} \\ +% \textsf{065C} \> {\arabicfont\char"065C} \\ +% \textsf{065D} \> {\arabicfont\char"065D} \\ +% \textsf{065E} \> {\arabicfont\char"065E} \\ +% \textsf{0660} \> {\arabicfont\char"0660} \> ¦0¦ \\ ^^A\textarab{ 0 } \\ +% \textsf{0661} \> {\arabicfont\char"0661} \> ¦1¦ \\ ^^A\textarab{ 1 } \\ +% \textsf{0662} \> {\arabicfont\char"0662} \> ¦2¦ \\ ^^A\textarab{ 2 } \\ +% \textsf{0663} \> {\arabicfont\char"0663} \> ¦3¦ \\ ^^A\textarab{ 3 } \\ +% \textsf{0664} \> {\arabicfont\char"0664} \> ¦4¦ \\ ^^A\textarab{ 4 } \\ +% \textsf{0665} \> {\arabicfont\char"0665} \> ¦5¦ \\ ^^A\textarab{ 5 } \\ +% \textsf{0666} \> {\arabicfont\char"0666} \> ¦6¦ \\ ^^A\textarab{ 6 } \\ +% \textsf{0667} \> {\arabicfont\char"0667} \> ¦7¦ \\ ^^A\textarab{ 7 } \\ +% \textsf{0668} \> {\arabicfont\char"0668} \> ¦8¦ \\ ^^A\textarab{ 8 } \\ +% \textsf{0669} \> {\arabicfont\char"0669} \> ¦9¦ \\ ^^A\textarab{ 9 } \\ +% \textsf{066A} \> {\arabicfont\char"066A} \> ¦\^^A¦ \\ %\textarab{ \% } \\ +% \textsf{066B} \> {\arabicfont\char"066B} \> \\ ^^A\textarab{ , } \\ +% \textsf{066C} \> {\arabicfont\char"066C} \> ¦,¦ \\ ^^A\textarab{ , } \\ +% \textsf{066D} \> {\arabicfont\char"066D} \> ¦*¦ \\ ^^A\textarab{ * } \\ +% \textsf{066E} \> {\arabicfont\char"066E} \> ¦.b¦, \quad ¦i¦ \textit{uighur} \\ ^^A\textarab{ .b } \\ +% \textsf{066F} \> {\arabicfont\char"066F} \> ¦.f¦ \\ ^^A\textarab{ .f } \\ +% \textsf{0670} \> {\arabicfont\char"0670} \> ¦_a¦ \\ ^^A\textarab{ B_a } \\ +% \textsf{0671} \> {\arabicfont\char"0671} \> \textit{automatic} \\ +% \textsf{0672} \> {\arabicfont\char"0672} \> ¦.A¦ \textit{kashmiri} \\ +% \textsf{0673} \> {\arabicfont\char"0673} \> ¦.U¦ \textit{kashmiri} \\ +% \textsf{0674} \> {\arabicfont\char"0674} \\ +% \textsf{0675} \> {\arabicfont\char"0675} \\ +% \textsf{0676} \> {\arabicfont\char"0676} \\ +% \textsf{0677} \> {\arabicfont\char"0677} \\ +% \textsf{0678} \> {\arabicfont\char"0678} \\ +% \textsf{0679} \> {\arabicfont\char"0679} \> ¦,t¦ \\ ^^A\textarab{ ,t } \\ +% \textsf{067A} \> {\arabicfont\char"067A} \> ¦,th¦ \\ ^^A\textsindhi{ ,th } \\ +% \textsf{067B} \> {\arabicfont\char"067B} \> ¦:b¦ \\ ^^A\textsindhi{ :b } \\ +% \textsf{067C} \> {\arabicfont\char"067C} \> ¦,t¦ \\ ^^A\textpashto{ ,t } \\ +% \textsf{067D} \> {\arabicfont\char"067D} \> ¦,t¦ \\ ^^A\textsindhi{ ,t } \\ +% \textsf{067E} \> {\arabicfont\char"067E} \> ¦p¦ \\ ^^A\textarab{ p } \\ +% \textsf{067F} \> {\arabicfont\char"067F} \> ¦th¦ \\ ^^A\textsindhi{ th } \\ +% \textsf{0680} \> {\arabicfont\char"0680} \> ¦bh¦ \\ ^^A\textsindhi{ bh } \\ +% \textsf{0681} \> {\arabicfont\char"0681} \> ¦c¦ \\ ^^A\textarab{ c } \\ +% \textsf{0682} \> {\arabicfont\char"0682} \> ¦:c¦ \\ ^^A (old pashto) +% \textsf{0683} \> {\arabicfont\char"0683} \> ¦^n¦ \\ ^^A\textsindhi{ ^n } \\ +% \textsf{0684} \> {\arabicfont\char"0684} \> ¦:j¦ \\ ^^A\textarab{ :j } %sindhi\\ +% \textsf{0685} \> {\arabicfont\char"0685} \> ¦,c¦ \\ ^^A\textarab{ ,c } %pashto\\ +% \textsf{0686} \> {\arabicfont\char"0686} \> ¦^c¦, \quad ¦c¦ \textit{malay} \\ ^^A\textarab{ ^c } %farsi+\\ +% \textsf{0687} \> {\arabicfont\char"0687} \> ¦^ch¦ \textit{sindhi} \\ ^^A\textsindhi{ ^ch } \\ +% \textsf{0688} \> {\arabicfont\char"0688} \> ¦,d¦ \\ ^^A\textarab{ ,d } %urdu\\ +% \textsf{0689} \> {\arabicfont\char"0689} \> ¦,d¦ \textit{pashto} \\ ^^A\textpashto{ ,d } \\ +% \textsf{068A} \> {\arabicfont\char"068A} \> ¦,d¦ \textit{sindhi} \\ ^^A\textsindhi{ ,d } \\ +% \textsf{068B} \> {\arabicfont\char"068B} \> ¦.,d¦ \\ ^^A(Western punjabi) +% \textsf{068C} \> {\arabicfont\char"068C} \> ¦dh¦ \textit{sindhi} \\ ^^A\textsindhi{ dh } \\ +% \textsf{068D} \> {\arabicfont\char"068D} \> ¦,dh¦ \textit{sindhi} \\ ^^A\textsindhi{ ,dh } \\ +% \textsf{068E} \> {\arabicfont\char"068E} \> ¦^d¦ \textit{sindhi} \\ +% \textsf{068F} \> {\arabicfont\char"068F} \> ¦:d¦ \\ ^^A\textarab{ :d } \\ +% \textsf{0690} \> {\arabicfont\char"0690} \> ¦::d¦ \textit{urdu} \\ +% \textsf{0691} \> {\arabicfont\char"0691} \> ¦,r¦ \\ ^^A\textarab{ ,r } \\ +% \textsf{0692} \> {\arabicfont\char"0692} \> ¦^r¦ \textit{kurdish} \\ ^^ANEW-> ^r\\ +% \textsf{0693} \> {\arabicfont\char"0693} \> ¦,r¦ \textit{pashto} \\ ^^A\textpashto{ ,r } \\ +% \textsf{0694} \> {\arabicfont\char"0694} \> ¦.r¦, \quad ¦,r¦ \textit{kurdish} \\ ^^ANEW-> kurdish ,r\\ +% \textsf{0695} \> {\arabicfont\char"0695} \> ¦.r¦ \textit{kurdish} \\ ^^A\textarab{ .r} \\ +% \textsf{0696} \> {\arabicfont\char"0696} \> ¦,z¦ \\ ^^A\textarab{ ,z } \\ +% \textsf{0697} \> {\arabicfont\char"0697} \> ¦:r¦ \\ +% \textsf{0698} \> {\arabicfont\char"0698} \> ¦^z¦, \quad ¦j¦ \textit{ottoman} \\ ^^A\textarab{ ^z } \\ +% \textsf{0699} \> {\arabicfont\char"0699} \> ¦:s¦ \\ ^^A\textarab{ :s } \\ +% \textsf{069A} \> {\arabicfont\char"069A} \> ¦,s¦ \\ +% \textsf{069B} \> {\arabicfont\char"069B} \> ¦:s¦ \\ +% \textsf{069C} \> {\arabicfont\char"069C} \\ +% \textsf{069D} \> {\arabicfont\char"069D} \\ +% \textsf{069E} \> {\arabicfont\char"069E} \\ +% \textsf{069F} \> {\arabicfont\char"069F} \\ +% \textsf{06A0} \> {\arabicfont\char"06A0} \> ¦^g¦ \textit{ottoman+malay} \\ ^^A\textmalay{ ^g } \\ +% \textsf{06A1} \> {\arabicfont\char"06A1} \> ¦.f¦ \\ ^^A\textarab{ .f } \\ +% \textsf{06A2} \> {\arabicfont\char"06A2} \> ¦f¦ \\ ^^A\textarab{ f } \\ +% \textsf{06A3} \> {\arabicfont\char"06A3} \\ +% \textsf{06A4} \> {\arabicfont\char"06A4} \> ¦v¦, \quad ¦p¦ \textit{malay} \\ ^^A\textarab{ V } \\ +% \textsf{06A5} \> {\arabicfont\char"06A5} \> ¦v¦ \textit{maghribi} \\ ^^A\textarab{ v } \\ +% \textsf{06A6} \> {\arabicfont\char"06A6} \> ¦ph¦ \textit{sindhi} \\ ^^A\textarab{ ph } \\ +% \textsf{06A7} \> {\arabicfont\char"06A7} \> ¦q¦ \\ ^^A\textarab{ q } \\ +% \textsf{06A8} \> {\arabicfont\char"06A8} \> ¦p¦ \\ ^^A\textarab{ p } \\ +% \textsf{06A9} \> {\arabicfont\char"06A9} \> ¦.k¦ \\ ^^A\textarab{ .k } % also M\\ +% \textsf{06AA} \> {\arabicfont\char"06AA} \> ¦k¦ \\ ^^A\textarab{ k } \\ +% \textsf{06AB} \> {\arabicfont\char"06AB} \> ¦G¦ \\ ^^A\textarab{ G } \\ +% \textsf{06AC} \> {\arabicfont\char"06AC} \> ¦,g¦ \\ ^^A\textarab{ ,g } \\ +% \textsf{06AD} \> {\arabicfont\char"06AD} \> ¦^n¦ \\ ^^A\textarab{ ^n } % also K\\ +% \textsf{06AE} \> {\arabicfont\char"06AE} \\ +% \textsf{06AF} \> {\arabicfont\char"06AF} \> ¦g¦ \\ ^^A\textarab{ g } \\ +% \textsf{06B0} \> {\arabicfont\char"06B0} \\ +% \textsf{06B1} \> {\arabicfont\char"06B1} \> ¦:n¦ \\ ^^A\textarab{ :n } \\ +% \textsf{06B2} \> {\arabicfont\char"06B2} \> ¦..n¦ \textit{sindhi} \\ +% \textsf{06B3} \> {\arabicfont\char"06B3} \> ¦:g¦ \\ ^^A\textarab{ :g } \\ +% \textsf{06B4} \> {\arabicfont\char"06B4} \> ¦.:g¦ \textit{sindhi} \\ +% \textsf{06B5} \> {\arabicfont\char"06B5} \> ¦^l¦ \\ ^^A\textarab{ ^l } % also .l -> prob a bug for the next glyph\\ +% \textsf{06B6} \> {\arabicfont\char"06B6} \> ¦.l¦ \\ ^^ANEW -> .l\\ +% \textsf{06B7} \> {\arabicfont\char"06B7} \\ ^^ANEW - \\ %NEW -> :l U+0651 ;;SHADDA\\ +% \textsf{06B8} \> {\arabicfont\char"06B8} \\ +% \textsf{06B9} \> {\arabicfont\char"06B9} \\ +% \textsf{06BA} \> {\arabicfont\char"06BA} \> ¦.n¦ \\ ^^A\textarab{ .n } \\ +% \textsf{06BB} \> {\arabicfont\char"06BB} \> ¦,n¦ \textit{sindhi} \\ ^^A\textsindhi{ .n } \\ +% \textsf{06BC} \> {\arabicfont\char"06BC} \> ¦,n¦ \\ ^^A\textpashto{ .n } \\ +% \textsf{06BD} \> {\arabicfont\char"06BD} \> ¦^n¦ \textit{malay} \\ ^^A\textmalay{ ny } %??? with \setmalay ^n ArabTeX produces nun with 3 dots below, but this is not in Unicode\\ +% \textsf{06BE} \> {\arabicfont\char"06BE} \> ¦h¦ \textit{urdu} \\ ^^A\texturdu{ h } \\ +% \textsf{06BF} \> {\arabicfont\char"06BF} \> ¦.^c¦ \\ ^^ANEW -> .^c\\ +% \textsf{06C0} \> {\arabicfont\char"06C0} \> ¦h"'¦ \textit{or context} \\ ^^A\textverb{ 'h } %verbatim ???\\ +% \textsf{06C1} \> {\arabicfont\char"06C1} \> ¦,h¦ \\ +% \textsf{06C2} \> {\arabicfont\char"06C2} \> ¦H-¦ (\textit{+ ezafe})\footnote{ Or is it ¦,h¦+ezafe?} \textit{urdu} \\ +% \textsf{06C3} \> {\arabicfont\char"06C3} \> ¦H¦ \textit{urdu} \\ ^^A\texturdu{ T } %???\\ +% \textsf{06C4} \> {\arabicfont\char"06C4} \> ¦.o¦ \textit{kashmiri} \\ ^^A\textkashmiri{ |.o } \\ +% \textsf{06C5} \> {\arabicfont\char"06C5} \\ +% \textsf{06C6} \> {\arabicfont\char"06C6} \> ¦o¦ \textit{kashmiri} ,\quad ¦:o¦ \textit{uighur} \\ ^^A\textkashmiri{ |o } \\ +% \textsf{06C7} \> {\arabicfont\char"06C7} \> ¦:U¦, \quad ¦u¦ \textit{uighur} \\ ^^A\textuighur{ u } \\ +% \textsf{06C8} \> {\arabicfont\char"06C8} \> ¦:u¦ \textit{uighur} \\ ^^A\textuighur{ |:u } \\ +% \textsf{06C9} \> {\arabicfont\char"06C9} \> ¦^w¦ \\ ^^AArabTeX internals \a@roof\\ +% \textsf{06CA} \> {\arabicfont\char"06CA} \> ¦:w¦ \\ ^^ANEW +% \textsf{06CB} \> {\arabicfont\char"06CB} \> ¦w¦ \textit{uighur} \\ ^^A\textuighur{ w } \\ +% \textsf{06CC} \> {\arabicfont\char"06CC} \> ¦y¦/¦I¦ \textit{farsi, etc.},\\ +% \> \> ¦.I¦ \textit{arabic, sindhi, malay} \\ +% \textsf{06CD} \> {\arabicfont\char"06CD} \> ¦Ee¦ \textit{pashto} \\ ^^A\textpashto{\novocalize BEe } \\ +% \textsf{06CE} \> {\arabicfont\char"06CE} \\ +% \textsf{06CF} \> {\arabicfont\char"06CF} \> ¦v¦ \textit{malay} \\ ^^A\textmalay{ v } \\ +% \textsf{06D0} \> {\arabicfont\char"06D0} \> ¦E¦ \textit{pashto}, \quad ¦e¦ \textit{uighur} \\ ^^A\textuighur{ |e } \\ +% \textsf{06D1} \> {\arabicfont\char"06D1} \\ +% \textsf{06D2} \> {\arabicfont\char"06D2} \> ¦E¦ \textit{urdu+kashmiri} \\ ^^A\texturdu{ |E } \\ +% \textsf{06D3} \> {\arabicfont\char"06D3} \> ¦'E¦ \textit{urdu} \\ ^^A\texturdu{ |'E } \\ +% \textsf{06D4} \> {\arabicfont\char"06D4} \> ¦..¦ \textit{urdu} \\ +% \textsf{06D5} \> {\arabicfont\char"06D5} \\ +% \textsf{06D6} \> {\arabicfont\char"06D6} \> ¦^SLY¦ \\ +% \textsf{06D7} \> {\arabicfont\char"06D7} \> ¦^QLY¦ \\ +% \textsf{06D8} \> {\arabicfont\char"06D8} \> ¦^MIM¦ \\ +% \textsf{06D9} \> {\arabicfont\char"06D9} \> ¦^LA¦ \\ +% \textsf{06DA} \> {\arabicfont\char"06DA} \> ¦^JIM¦ \\ +% \textsf{06DB} \> {\arabicfont\char"06DB} \> ¦^DOTS¦ \\ +% \textsf{06DC} \> {\arabicfont\char"06DC} \> ¦^SIN¦ \\ +% \textsf{06DD} \> {\arabicfont\char"06DD} \> ¦[[]]¦ \\ +% \textsf{06DE} \> {\arabicfont\char"06DE} \> ¦HIZB¦ \\ +% \textsf{06DF} \> {\arabicfont\char"06DF} \> ¦CIRCZERO¦ \\ +% \textsf{06E0} \> {\arabicfont\char"06E0} \> ¦RECTZERO¦ \\ +% \textsf{06E1} \> {\arabicfont\char"06E1} \> ¦^JAZM¦ \\ +% \textsf{06E2} \> {\arabicfont\char"06E2} \> ¦^MIM¦ \\ +% \textsf{06E3} \> {\arabicfont\char"06E3} \> ¦_SIN¦ \\ +% \textsf{06E4} \> {\arabicfont\char"06E4} \> ¦^MADDA¦ \\ +% \textsf{06E5} \> {\arabicfont\char"06E5} \> ¦WAW¦ \\ +% \textsf{06E6} \> {\arabicfont\char"06E6} \> ¦YEH¦ \\ +% \textsf{06E7} \> {\arabicfont\char"06E7} \> ¦^YEH¦ \\ +% \textsf{06E8} \> {\arabicfont\char"06E8} \> ¦^NUN¦ \\ +% \textsf{06E9} \> {\arabicfont\char"06E9} \> ¦SAJDA¦ \\ +% \textsf{06EA} \> {\arabicfont\char"06EA} \> ¦_STOP¦ \\ +% \textsf{06EB} \> {\arabicfont\char"06EB} \> ¦^STOP¦ \\ +% \textsf{06EC} \> {\arabicfont\char"06EC} \> ¦^RSTOP¦ \\ +% \textsf{06ED} \> {\arabicfont\char"06ED} \> ¦_MIM¦ \\ +% \textsf{06EE} \> {\arabicfont\char"06EE} \> ¦^d¦ \\ +% \textsf{06EF} \> {\arabicfont\char"06EF} \> ¦^r¦ \\ +% \textsf{06F0} \> {\arabicfont\char"06F0} \> ¦0¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F1} \> {\arabicfont\char"06F1} \> ¦1¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F2} \> {\arabicfont\char"06F2} \> ¦2¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F3} \> {\arabicfont\char"06F3} \> ¦3¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F4} \> {\arabicfont\char"06F4} \> ¦4¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F5} \> {\arabicfont\char"06F5} \> ¦5¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F6} \> {\arabicfont\char"06F6} \> ¦6¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F7} \> {\arabicfont\char"06F7} \> ¦7¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F8} \> {\arabicfont\char"06F8} \> ¦8¦ \textit{persian, urdu, etc.} \\ +% \textsf{06F9} \> {\arabicfont\char"06F9} \> ¦9¦ \textit{persian, urdu, etc.} \\ +% \textsf{06FA} \> {\arabicfont\char"06FA} \\ +% \textsf{06FB} \> {\arabicfont\char"06FB} \\ +% \textsf{06FC} \> {\arabicfont\char"06FC} \> ¦:O¦ \\ +% \textsf{06FD} \> {\arabicfont\char"06FD} \> ¦.|IN¦ \textit{sindhi} \\ ^^AArabTeX internal \a@bars\\ +% \textsf{06FE} \> {\arabicfont\char"06FE} \> ¦.MIN¦ \textit{sindhi} \\ +% \textsf{06FF} \> {\arabicfont\char"06FF} \\ +% \textbf{Arabic Supplement} \\ +% \textsf{0750} \> {\arabicfont\char"0750} \\ +% \textsf{0751} \> {\arabicfont\char"0751} \\ +% \textsf{0752} \> {\arabicfont\char"0752} \\ +% \textsf{0753} \> {\arabicfont\char"0753} \\ +% \textsf{0754} \> {\arabicfont\char"0754} \\ +% \textsf{0755} \> {\arabicfont\char"0755} \\ +% \textsf{0756} \> {\arabicfont\char"0756} \\ +% \textsf{0757} \> {\arabicfont\char"0757} \\ +% \textsf{0758} \> {\arabicfont\char"0758} \\ +% \textsf{0759} \> {\arabicfont\char"0759} \\ +% \textsf{075A} \> {\arabicfont\char"075A} \\ +% \textsf{075B} \> {\arabicfont\char"075B} \\ +% \textsf{075C} \> {\arabicfont\char"075C} \\ +% \textsf{075D} \> {\arabicfont\char"075D} \\ +% \textsf{075E} \> {\arabicfont\char"075E} \\ +% \textsf{075F} \> {\arabicfont\char"075F} \\ +% \textsf{0760} \> {\arabicfont\char"0760} \\ +% \textsf{0761} \> {\arabicfont\char"0761} \\ +% \textsf{0762} \> {\arabicfont\char"0762} \> ¦g¦ \textit{malay} \\ ^^A\textmalay{ g } \\ +% \textsf{0763} \> {\arabicfont\char"0763} \\ +% \textsf{0764} \> {\arabicfont\char"0764} \\ +% \textsf{0765} \> {\arabicfont\char"0765} \\ +% \textsf{0766} \> {\arabicfont\char"0766} \\ +% \textsf{0767} \> {\arabicfont\char"0767} \\ +% \textsf{0768} \> {\arabicfont\char"0768} \\ +% \textsf{0769} \> {\arabicfont\char"0769} \\ +% \textsf{076A} \> {\arabicfont\char"076A} \\ +% \textsf{076B} \> {\arabicfont\char"076B} \\ +% \textsf{076C} \> {\arabicfont\char"076C} \\ +% \textsf{076D} \> {\arabicfont\char"076D} \\ +% \textbf{Presentation Forms} * \\ +% \textsf{FD3E} \> {\arabicfont\char"FD3E} \> ¦))¦ \\ +% \textsf{FD3F} \> {\arabicfont\char"FD3F} \> ¦((¦ \\ +% \textsf{FDF0} \> {\arialuni\char"FDF0} \> ¦SALLASTOP¦ \\ +% \textsf{FDF1} \> {\arialuni\char"FDF1} \> ¦QALA¦ \\ +% \textsf{FDF2} \> {\arabicfont\char"FDF2} \> ¦al-ll_ah¦ or ¦ALLAH¦ ** \\ +% \textsf{FDF3} \> {\arialuni\char"FDF3} \> ¦AKBAR¦ \\ +% \textsf{FDF4} \> {\arialuni\char"FDF4} \> ¦MUHAMMAD¦ \\ +% \textsf{FDF5} \> {\arialuni\char"FDF5} \> ¦SALAM¦ \\ +% \textsf{FDF6} \> {\arialuni\char"FDF6} \> ¦RASUL¦ or ¦RASOUL¦ \\ +% \textsf{FDF7} \> {\arialuni\char"FDF7} \> ¦ALAYHI¦ or ¦ALAYHE¦ \\ +% \textsf{FDF8} \> {\arialuni\char"FDF8} \> ¦WASALLAM¦ \\ +% \textsf{FDF9} \> {\arialuni\char"FDF9} \> ¦SALLA¦ \\ +% \textsf{FDFA} \> {\adobearabic\char"FDFA} \> ¦SLM¦ \\ +% \textsf{FDFB} \> {\arialuni\char"FDFB} \> ¦JALLA¦ \\ +% \textsf{FDFC} \> {\arabicfont\char"FDFC} \> ¦RIYAL¦ \\ +% \textsf{FDFD} \> {\Huge\arabesque\char"F050} \> ¦BASMALA¦ \\ +% \textbf{Non-Unicode Ligatures} \\ +% \> {\tradarabic\char"FDF2} \> ¦ll_ah¦ or ¦LLAH¦ ** \\ +% \> {\adobearabic فَلِله} \> ¦FALILLAH¦ *** +% \end{tabbing} +% \end{multicols} +% \parindentoff +% +% \baselineskip 14pt +% \textit{Notes}\\ +% * Since most of these glyphs are not present in Scheherazade +% (and, with a few exceptions, are very rarely featured in other fonts), +% for illustration purposes we have taken \textsf{FDF0}, \textsf{FDF1}, +% \textsf{FDF3}--\textsf{FDF9} and \textsf{FDFB} from Arial Unicode MS, +% \textsf{FDFA} from Adobe Arabic, and \textsf{FDFD} from AGA Arabesque. +% +% ** See §~\ref{allahliga} +% +% *** Specific to the font Adobe Arabic +% +% \newpage +% \appendix +% \small +% \section{Notes on available free and commercial fonts for the Perso-Arabic script} +% \label{arabicfont} +% \texttt{TO BE COMPLETED} +% +% +% ^^AThere are few free good quality fonts that support the Arabic script. +% +% \begin{compactitem}[\textbf{·}] +% \item ‘Scheherazade’ and ‘Lateef’ from SIL +% +% \item ‘Adobe Arabic’ +% +% \item Free fonts from \href{http://www.arabeyes.org}{Arabeyes.org}: +% +% \item \ldots +% +% ^^AAdobe Arabic, dlig: (discretionary ligatures) +% ^^A +% ^^Aﻓ َ ﻠ ِ ﻠ ﻪ falilh > uni0641064E0644065006440647 +% ^^A +% ^^Aﻟ ﻠ ﻪ l-l-h > uni064406440647 +% ^^A +% ^^AA-l-l-h > FDF2 +% +% \item Arabic fonts on Mac~OS~X: ‘Geeza Pro’, ‘DecoType Naskh’, \ldots more?\\ +% \textcolor{red}{$\rightarrow$ \texttt{Help needed to test those fonts!}} +% +% \item ‘Arabic Typesetting’ and other Arabic fonts licensed to Microsoft +% +% \item Commercial fonts by vendors: +% \begin{compactitem}[\textbf{--}] +% \item Linotype GmbH: +% \item AGFA Monotype: +% \item ParaType: +% \item \ldots +% \end{compactitem} +% \end{compactitem} +% +% +% +% \section{Recommended Unicode fonts for transliterating Oriental languages} +% \label{latinextfonts} +% +% Here follows a list of open source and freeware fonts with full +% \textsc{Latin Extended Additional} coverage.\footnote{ ^^A +% See this \href{http://www.alanwood.net/unicode/fonts.html\#general}{webpage} for more details.} +% \begin{compactitem}[\textbf{·}] +% \item Gentium, Doulos, Charis: \url{http://scripts.sil.org/FontDownloads} +% +% \item Junicode: \url{http://junicode.sourceforge.net/} +% +% \item jGaramond: \url{http://www.janthor.de/jGaramond/} +% +% \item LinuxLibertine: \url{http://linuxlibertine.sourceforge.net/} +% +% \item Roman Unicode: \url{http://everywitchway.net/linguistics/fonts/roman.html} +% +% \item Chrisanthi Unicode: \url{http://everywitchway.net/linguistics/fonts/chrysuni.html} +% +% \item DejaVu Serif / Sans / Sans Mono: \url{http://dejavu.sourceforge.net/wiki/index.php/Main_Page} +% +% \item Lucida Grande: Mac~OS~X +% +% \item FreeSerif / FreeSans / FreeMono: \url{http://savannah.nongnu.org/projects/freefont/} +% +% \item Thryomanes: \url{ftp://ftp.io.com/pub/usr/hmiller/fonts/Thryomanes12.zip} +% +% \item HindSight Unicode (not very nice): \url{http://dartcanada.tripod.com/Objets/Zips/HindUnic.zip} +% +% \item TITUS Cyberbit Basic: \url{http://titus.fkidg1.uni-frankfurt.de/unicode/tituut.asp} +% +% \item AbRoman: \url{http://www.languagegeek.com/font/fontdownload.html} +% +% \item Everson Mono Unicode (shareware): \url{http://www.evertype.com/emono/} +% +% \item Arial Unicode MS: Windows +% +% \item Microsoft Sans Serif: Windows +% +% \item Garava: \url{http://www.aimwell.org/Fonts/fonts.html} +% +% \item Verajja (based on Bitstream Vera Sans, so very similar to DejaVu Sans): +% \url{http://www.aimwell.org/Fonts/fonts.html} +% +% \item Legendum (by Rogier van Dalen): \url{http://home.kabelfoon.nl/~slam/fonts/fonts.html} +% +% \item Code2000 (shareware): \url{http://www.code2000.net} +% \end{compactitem} +% +% +% \section{Implementation} +%\iffalse +%<*package> +%\fi +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{arabxetex} + [2007/04/14 v1.0 ArabTeX-like interface for XeLaTeX] +% +\DeclareOption{fullvoc}{\def\ax@mode{fullvoc}} +\DeclareOption{voc}{\def\ax@mode{voc}} +\DeclareOption{novoc}{\def\ax@mode{novoc}} +\DeclareOption{trans}{\def\ax@mode{trans}} +\DeclareOption{utf}{\def\ax@mode{utf}} +\DeclareOption{fdf2alif}{\def\ax@font@allah{fdf2alif}} +\DeclareOption{fdf2noalif}{\def\ax@font@allah{fdf2noalif}} +\ExecuteOptions{novoc,fdf2alif} +\ProcessOptions +\def\ax@mode@fullvoc{fullvoc} +\def\ax@mode@voc{voc} +\def\ax@mode@novoc{novoc} +\def\ax@mode@trans{trans} +\def\ax@mode@utf{utf} +\newif\ifax@mode@defined +\def\ax@ismode@defined#1{% + \ifcsname ax@mode@#1\endcsname% + \ax@mode@definedtrue% + \else% + \ax@mode@definedfalse% + \fi} +\def\ax@lang{arab}%default language (for macros like \aemph) +\RequirePackage{bidi} +\RequirePackage{amsmath}%because of macro \overline used in \aemph +\RequirePackage{fontspec} +\AtBeginDocument{\ifdefined\arabicfont\relax\else% + \newfontfamily\arabicfont[Script=Arabic,Scale=2]{Scheherazade}\fi}% +\def\ax@trans@style{\itshape}% +\newcommand{\SetTransliterationStyle}[1]{\def\ax@trans@style{#1}} +\newcommand{\SetAllahWithAlif}{\def\ax@font@allah{fdf2alif}} +\newcommand{\SetAllahWithoutAlif}{\def\ax@font@allah{fdf2noalif}} +\def\arabtex@codes{\catcode`^=11\relax\catcode`_=11\relax} +\def\UC{\char"E000} % this is used to capitalize the following letter (ignoring article al-) in transliteration +%%% +\newenvironment{arab}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{arab}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + \par\arabtex@codes\ax@trans@style% + \addfontfeature{Mapping=arabtex-trans}% + \else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-\@tempa}% + \fi\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-\ax@mode}% +\fi} +{\ifx\@tempa\ax@mode@trans\relax\else\unsetRL\fi\par} +\let\Arabic=\arab% +%%% +\newenvironment{maghribi}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{maghribi}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + \par\arabtex@codes\ax@trans@style% + \addfontfeature{Mapping=arabtex-trans}% + \else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-maghribi-\@tempa}% + \fi\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-maghribi-\ax@mode}% +\fi} +{\ifx\@tempa\ax@mode@trans\relax\else\unsetRL\fi\par} +%%% +\newenvironment{farsi}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{farsi}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + \par\arabtex@codes\ax@trans@style% + \addfontfeature{Mapping=arabtex-farsi-trans}% + \else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-farsi-\@tempa}% + \fi\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-farsi-\ax@mode}% +\fi} +{\ifx\@tempa\ax@mode@trans\relax\else\unsetRL\fi\par} +\let\persian=\farsi +%%% +\newenvironment{urdu}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{urdu}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + \par\arabtex@codes\ax@trans@style% + \addfontfeature{Mapping=arabtex-urdu-trans}% + \else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Language=Urdu}%Mapping=arabtex-utf}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-urdu-\@tempa}% + \fi\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-urdu-\ax@mode}% +\fi} +{\ifx\@tempa\ax@mode@trans\relax\else\unsetRL\fi\par} +%%% +\newenvironment{pashto}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{pashto}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + \par\arabtex@codes\ax@trans@style% + \addfontfeature{Mapping=arabtex-pashto-trans}% + \else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-pashto-\@tempa}% + \fi\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-pashto-\ax@mode}% +\fi} +{\ifx\@tempa\ax@mode@trans\relax\else\unsetRL\fi\par} +%%% +\newenvironment{sindhi}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{sindhi}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + \par\arabtex@codes\ax@trans@style% + \addfontfeature{Mapping=arabtex-sindhi-trans}% + \else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Language=Sindhi}%Mapping=arabtex-utf}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-sindhi-\@tempa,Language=Sindhi}% + \fi\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-sindhi-\ax@mode,Language=Sindhi}% +\fi} +{\ifx\@tempa\ax@mode@trans\relax\else\unsetRL\fi\par} +%%% +\newenvironment{turk}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{turk}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + %\ifx\@tempa\ax@mode@trans% + % \par\arabtex@codes\ax@trans@style% + % \addfontfeature{Mapping=arabtex-turk-trans}% + %\else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-turk-\@tempa}% + \fi%\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-turk-\ax@mode}% +\fi} +{%\ifx\@tempa\ax@mode@trans\relax\else +\unsetRL%\fi +\par} +\let\ottoman=\turk +%%% +\newenvironment{kurdish}[1][]% +{\def\ax@lang{kurdish}% +%\edef\@tempa{#1}% +%\ifx\@tempa\ax@mode@trans% +% \par\arabtex@codes\ax@trans@style% +% \addfontfeature{Mapping=arabtex-kurdish-trans}% +%\else% +\ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Language=Kurdish}%Mapping=arabtex-utf}% +\else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-kurdish,Language=Kurdish}% +\fi} +{%\ifx\@tempa\ax@mode@trans\relax\else +\unsetRL%\fi +\par} +%%% +\newenvironment{kashmiri}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{kashmiri}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + %\ifx\@tempa\ax@mode@trans% + % \par\arabtex@codes\ax@trans@style% + % \addfontfeature{Mapping=arabtex-\ax@font@allah-kashmiri-trans}% + %\else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-kashmiri-\@tempa}% + \fi%\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-kashmiri-\ax@mode}% +\fi} +{%\ifx\@tempa\ax@mode@trans\relax\else +\unsetRL%\fi +\par} +%%% +\newenvironment{malay}[1][\ax@mode]% +{\edef\@tempa{#1}% +\def\ax@lang{malay}% +\ax@ismode@defined{\@tempa}% +\ifax@mode@defined% + %\ifx\@tempa\ax@mode@trans% + % \par\arabtex@codes\ax@trans@style% + % \addfontfeature{Mapping=arabtex-malay-trans}% + %\else% + \ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% + \else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-malay-\@tempa}% + \fi%\fi% +\else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-malay-\ax@mode}% +\fi} +{%\ifx\@tempa\ax@mode@trans\relax\else +\unsetRL%\fi +\par} +\let\jawi=\malay +%%% +\newenvironment{uighur}[1]% +{%\edef\@tempa{#1}% +\def\ax@lang{uighur}% +%\ifx\@tempa\ax@mode@trans% +% \par\arabtex@codes\ax@trans@style% +% \addfontfeature{Mapping=arabtex-uighur-trans}% +%\else% +\ifx\@tempa\ax@mode@utf% + \par\setRL\arabicfont\addfontfeature{Mapping=arabicfixes}% +\else% + \par\setRL\arabicfont\arabtex@codes% + \addfontfeature{Mapping=arabtex-\ax@font@allah-uighur}% +\fi} +{%\ifx\@tempa\ax@mode@trans\relax\else +\unsetRL%\fi +\par} +%%% +\def\textarab{\bgroup\arabtex@codes\text@arab} +\let\textarabic=\textarab +\def\textmaghribi{\bgroup\arabtex@codes\text@maghribi} +\def\textfarsi{\bgroup\arabtex@codes\text@farsi} +\let\textpersian=\textfarsi +\def\texturdu{\bgroup\arabtex@codes\text@urdu} +\def\textsindhi{\bgroup\arabtex@codes\text@sindhi} +\def\textpashto{\bgroup\arabtex@codes\text@pashto} +\def\textturk{\bgroup\arabtex@codes\text@turk} +\let\textottoman=\textturk +\def\textkurdish{\bgroup\arabtex@codes\text@kurdish} +\def\textkashmiri{\bgroup\arabtex@codes\text@kashmiri} +\def\textmalay{\bgroup\arabtex@codes\text@malay} +\let\textjawi=\textmalay +\def\textuighur{\bgroup\arabtex@codes\text@uighur} +\newcommand\text@arab[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{arab}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + {\ax@trans@style\addfontfeature{Mapping=arabtex-trans}#2}% + \else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2} + \else% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-\@tempa}#2}% + \fi\fi + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@maghribi[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{maghribi}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + {\ax@trans@style\addfontfeature{Mapping=arabtex-trans}#2}% + \else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-maghribi-\@tempa}#2}% + \fi\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-maghribi-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@farsi[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{farsi}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + {\ax@trans@style\addfontfeature{Mapping=arabtex-farsi-trans}#2}% + \else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-farsi-\@tempa}#2}% + \fi\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-farsi-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@urdu[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{urdu}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + {\ax@trans@style\addfontfeature{Mapping=arabtex-urdu-trans}#2}% + \else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Language=Urdu}#2}%eventually Mapping=arabtex-utf + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-urdu-\@tempa,Language=Urdu}#2}% + \fi\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-urdu-\ax@mode,Language=Urdu}#2}% + \fi\egroup} +\newcommand\text@sindhi[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{sindhi}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + {\ax@trans@style\addfontfeature{Mapping=arabtex-sindhi-trans}#2}% + \else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Language=Sindhi} #2}%eventually Mapping=arabtex-utf + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-sindhi-\@tempa,Language=Sindhi}#2}% + \fi\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-sindhi-\ax@mode,Language=Sindhi}#2}% + \fi\egroup} +\newcommand\text@pashto[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{pashto}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + \ifx\@tempa\ax@mode@trans% + {\ax@trans@style\addfontfeature{Mapping=arabtex-pashto-trans}#2}% + \else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-pashto-\@tempa}#2}% + \fi\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-pashto-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@turk[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{turk}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + % UNCOMMENT when transliteration mapping is done + %\ifx\@tempa\ax@mode@trans% + % {\ax@trans@style\addfontfeature{Mapping=arabtex-turk-trans}#2}% + %\else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-turk-\@tempa}#2}% + \fi%\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-turk-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@kurdish[2][]{% + \edef\@tempa{#1}% + \def\ax@lang{kurdish}% + % UNCOMMENT when transliteration mapping is done + %\ifx\@tempa\ax@mode@trans% + % {\ax@trans@style\addfontfeature{Mapping=arabtex-kurdish-trans}#2}% + %\else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-kurdish,Language=Kurdish}#2}% + \fi%\fi% + \egroup} +\newcommand\text@kashmiri[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{kashmiri}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + % UNCOMMENT when transliteration mapping is done + %\ifx\@tempa\ax@mode@trans% + % {\ax@trans@style\addfontfeature{Mapping=arabtex-kashmiri-trans}#2}% + %\else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-kashmiri-\@tempa}#2}% + \fi%\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-kashmiri-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@malay[2][\ax@mode]{% + \edef\@tempa{#1}% + \def\ax@lang{malay}% + \ax@ismode@defined{\@tempa}% + \ifax@mode@defined% + % UNCOMMENT when transliteration mapping is done + %\ifx\@tempa\ax@mode@trans% + % {\ax@trans@style\addfontfeature{Mapping=arabtex-malay-trans}#2}% + %\else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-malay-\@tempa}#2}% + \fi%\fi% + \else% + \PackageWarning{arabxetex}{Mode \@tempa\ not defined, defaulting to \ax@mode}% + \RL{\arabicfont\addfontfeature{Mapping=arabtex-\ax@font@allah-malay-\ax@mode}#2}% + \fi\egroup} +\newcommand\text@uighur[2][]{% + \edef\@tempa{#1}% + \def\ax@lang{uighur}% + % UNCOMMENT when transliteration mapping is done + %\ifx\@tempa\ax@mode@trans% + % {\ax@trans@style\addfontfeature{Mapping=arabtex-uighur-trans}#2}% + %\else% + \ifx\@tempa\ax@mode@utf% + \RL{\arabicfont\addfontfeature{Mapping=arabicfixes} #2}%evtl {Mapping=arabtex-utf} + \else% + \RL{\arabicfont% + \addfontfeature{Mapping=arabtex-\ax@font@allah-uighur}#2}% + \fi%\fi% + \egroup} +% +\newcommand{\textlatin}[1]{\LR{\rmfamily #1}} +%\newcommand{\aemph}[1]{$\overline{\text{\textarab{#1}}}$} %%TODO generalize to all languages +%% implement a parameter \ax@lang +\newcommand{\aemph}[1]{% + \edef\@tempb{\expandafter\noexpand\csname text\ax@lang\endcsname}% + $\overline{\text{\@tempb{#1}}}$} +% +% experimental: this surely does not work! +% this would make possible to define commands that accept args containing \arabtex@codes +%\def\newarabxetexcommand#1#2{% +% \edef\ax@tcomm@nd{\expandafter\relax\csname #1@\endcsname} +% \expandafter\def\string#1{% +% \bgroup\arabtex@codes\ax@tcomm@nd} +% \def\ax@tcomm@nd{#2\egroup}} +% \end{macrocode} +% +%\iffalse +% +%\fi +% +% \subsection{Some notes on the TECkit mappings} +% +% \texttt{To be done \dots} +% +% +% +% ^^A\section{Recommendations to the Unicode Consortium} +% ^^A +% ^^ASome glyphs are missing in Unicode: +% ^^A +% ^^A- wavy Hamza below as combining diacritic (for Kashmiri) +% ^^A +% ^^A- .b with ring below (for Kashmiri) (NB: can be poorly rendered by U+066E U+06EA) +% ^^A +% ^^A- hamza directly above baseline (for Qur'an) : 0654 is too high! +% ^^A \def\hamzaB{\raisebox[-1ex]{\char"0654} is ok +% ^^A +% ^^A- Clarify the U+FDF2 mess: OK to leave it as is, but it would be advisable to +% ^^A codify the LLAH ligature as well: leaving it in the Private Use Area is really +% ^^A a bad idea! Perhaps the FALILLAH ligature could be added as well. +% +% ^^A\clearpage +% ^^A\PrintChanges +% +% ^^A\clearpage +% ^^A\PrintIndex +% +% \Finale +% +%\iffalse +%<*dtx-style> +% \begin{macrocode} +\ProvidesPackage{arabxetex-dtx-style} +\usepackage{fontspec,xltxtra} +\usepackage{array,supertabular,xspace,multicol,fancyvrb} +\usepackage[voc]{arabxetex} +\usepackage[dvipdfm]{color} +\definecolor{myblue}{rgb}{0.02,0.04,0.48} +\definecolor{myred}{rgb}{0.65,0.04,0.07} +\definecolor{darkgray}{gray}{0.3} +\definecolor{lightgray}{gray}{0.6} +\definecolor{IslamicGreen}{rgb}{0,.43,0} +\usepackage[dvipdfm, + bookmarks=true, + colorlinks=true, + linkcolor=myblue, + urlcolor=myblue, + citecolor=myblue, + hyperindex=false, + hyperfootnotes=false, + pdftitle={The ArabXeTeX package}, + pdfauthor={F Charette }, + pdfsubject={An ArabTeX-like interface for typesetting languages in Arabic script with XeLaTeX}, + pdfkeywords={ArabTeX, XeTeX, XeLaTeX, Arabic, Maghribi, Persian, Farsi, Urdu, Sindhi, + Pashto, Turkish, Ottoman, Kurdish, Kashmiri, Malay, Jawi, Uighur} + ]{hyperref} +% NB some of this preamble is taken or adapted from fontspec-doc-style.sty +\newcommand*\pkg[1]{\textsf{#1}} +\def\eg{\textit{e.g.,}\xspace} +\def\ie{\textit{i.e.,}\xspace} +\def\ca{\textit{ca.}\@\xspace} +\def\Eg{\textit{E.g.,}\xspace} +\def\Ie{\textit{I.e.,}\xspace} +\def\etc{\@ifnextchar.{\textit{etc}}{\textit{etc.}\@\xspace}} + +\newlength{\oldparindent} +\newcommand{\parindentoff}{\setlength{\oldparindent}{\parindent} \setlength{\parindent}{0pt}} +\newcommand{\parindenton}{\setlength{\parindent}{\oldparindent}} + +%% LOGOS, tuned for Palatino: +\makeatletter +\TeX@logo@spacing{-0.12em}{-0.12em}% + {0.5ex}{-0.3em}{-0.12em}{-0.1em} +\makeatother +\def\arabxetex{Arab\XeTeX} +\def\arabtex{Arab\TeX} +\def\arabxetexAr{\RL{\fontspec[Script=Arabic,Scale=1.5]{DecoType Thuluth} عرب زيتخ}} +\def\MacOSX{Mac~OS~X} +\def\ASCII{\textsc{ascii}} % ii small caps does not work with Junicode! + +%% fontspec declarations: +\setromanfont[Mapping=tex-text]{Junicode}%{FPL Neu} +\defaultfontfeatures{Scale=MatchLowercase} +\setmonofont{Inconsolata}%{Latin Modern Typewriter Proportional}%{Luxi Mono}%{Courier New} +\setsansfont{Lucida Sans Unicode} +%\setmathrm{Optima Regular} +%\setboldmathrm[BoldFont=Optima ExtraBlack]{Optima Bold} +%\defaultfontfeatures{Mapping=tex-text} +\newfontfamily\arabicfont[Script=Arabic,Scale=1.5]{Scheherazade} +\newfontfamily\lateeffont[Script=Arabic,Scale=1.5]{Lateef} +\newfontfamily\lotusfont[Script=Arabic,Scale=1.5]{Lotus Linotype} +\newfontfamily\arabtype[Script=Arabic,Scale=1.5]{Arabic Typesetting} +\newfontfamily\adobearabic[Script=Arabic,Scale=1.5]{Adobe Arabic} +\newfontfamily\tradarabic[Script=Arabic,Scale=1.5]{Traditional Arabic} +%\newfontfamily\nafeesfont[Script=Arabic]{Nafees Pakistani Naskh} +\newfontfamily\arabesque{AGA Arabesque} +\newfontfamily\arialuni{Arial Unicode MS} +\newfontfamily\gentium{Gentium} + +\linespread{1.05} % Palatino needs more space between lines +\frenchspacing % Remove ugly extra space after punctuation +\usepackage{paralist} +%\newenvironment{MYitemize}{% +%\renewcommand\labelitemi{\cdot}% +%\begin{list}{}{\setlength{\itemsep}{.15\parsep}}}% +%%\setlength{\labelwidth}{0pt}\setlength{\leftmargin}{0pt}\setlength{\itemindent}{0pt}} +%{\end{list}} +%\addtolength{\textheight}{3cm} +%\setlength{\leftmargin}{1cm} +%\setlength{\topmargin}{0cm} +%\newcommand{\Tarab}[2][black]{\textcolor{#1}{\textarab{ #2 }}} +%\newcommand{\Tfarsi}[2][black]{\textcolor{#1}{\textfarsi{ #2 }}} +%\newcommand{\Turdu}[2][black]{\textcolor{#1}{\texturdu{ #2 }}} +%\newcommand{\Tsindhi}[2][black]{\textcolor{#1}{\textsindhi{ #2 }}} +%\newcommand{\Tpashto}[2][black]{\textcolor{#1}{\textpashto{ #2 }}} +%\newcommand{\Tkashmiri}[2][black]{\textcolor{#1}{\textkashmiri{ #2 }}} +%\newcommand{\Tkurdish}[2][black]{\textcolor{#1}{\textkurdish{ #2 }}} +%\newcommand{\Tturk}[2][black]{\textcolor{#1}{\textturk{ #2 }}} +%\newcommand{\Tmalay}[2][black]{\textcolor{#1}{\textmalay{ #2 }}} +%\newcommand{\Tuighur}[2][black]{\textcolor{#1}{\textuighur{ #2 }}} +%%% +\def\GN{\bgroup\catcode`\_=11\relax\catcode`\^=11\relax\GNX} +\def\GR{\bgroup\catcode`\_=11\relax\catcode`\^=11\relax\GRX} +\def\GB{\bgroup\catcode`\_=11\relax\catcode`\^=11\relax\GBX} +\def\GG{\bgroup\catcode`\_=11\relax\catcode`\^=11\relax\GGX} +\def\GV{\bgroup\catcode`\_=11\relax\catcode`\^=11\relax\GVX} +\newcommand{\GNX}[3][arab]{% + \edef\@tempa{\expandafter\noexpand\csname text#1\endcsname} + \parbox[c]{7.5mm}{\centering{\@tempa{#2}}\\[1pt]\ttfamily\fontsize{5}{5}\selectfont{#3}}\egroup} +\newcommand{\GRX}[3][arab]{% + \edef\@tempa{\expandafter\noexpand\csname text#1\endcsname} + \parbox[c]{7.5mm}{\centering{\textcolor{myred}{\@tempa{#2}}}\\[1pt]\ttfamily\fontsize{5}{5}\selectfont{#3}}\egroup} +\newcommand{\GBX}[3][arab]{% + \edef\@tempa{\expandafter\noexpand\csname text#1\endcsname} + \parbox[c]{7.5mm}{\centering{\textcolor{myblue}{\@tempa{#2}}}\\[1pt]\ttfamily\fontsize{5}{5}\selectfont{#3}}\egroup} +\newcommand{\GVX}[3][arab]{% + \edef\@tempa{\expandafter\noexpand\csname text#1\endcsname} + \parbox[c]{7.5mm}{\centering{\textcolor{IslamicGreen}{\@tempa{#2}}}\\[1pt]\ttfamily\fontsize{5}{5}\selectfont{#3}}\egroup} +\newcommand{\GGX}[2][arab]{% + \edef\@tempa{\expandafter\noexpand\csname text#1\endcsname} + \parbox[c]{7.5mm}{\centering{\textcolor{lightgray}{\@tempa{#2}}}}\egroup} + +\newcommand{\hamzaB}{\char"200D\char"0640\raise-.95ex\hbox{\char"0654}\char"200D} +% \end{macrocode} +% +%\fi +% +% +% \typeout{*************************************************************} +% \typeout{*} +% \typeout{* To finish the installation you have to move the following} +% \typeout{* file into a directory searched by XeTeX:} +% \typeout{*} +% \typeout{* \space\space\space arabxetex.sty} +% \typeout{*} +% \typeout{* and move all *.tec and *.map files to} +% \typeout{* .../fonts/misc/xetex/fontmapping/arabxetex/} +% \typeout{*************************************************************} +% +\endinput + diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.pdf b/Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.pdf new file mode 100644 index 00000000000..4d0279aa46f Binary files /dev/null and b/Master/texmf-dist/doc/xelatex/arabxetex/arabxetex.pdf differ diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.pdf b/Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.pdf new file mode 100644 index 00000000000..a4fbafa7184 Binary files /dev/null and b/Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.pdf differ diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.tex b/Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.tex new file mode 100644 index 00000000000..c22b964fbc1 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/arabxetex/ednotes_example.tex @@ -0,0 +1,211 @@ +%% THIS IS A SAMPLE LATEX FILE DEMONSTRATING HOW TO TYPESET +%% A CRITICAL EDITION WITH XeTeX, ednotes, and ArabXeTeX. +%% THE TEMPLATE CAN ALSO BE APPLIED, WITH MINOR MODIFICATIONS, +%% TO CRITICAL EDITIONS INVOLVING RIGHT-TO-LEFT SCRIPTS IN GENERAL +%% (EITHER IN THE MAIN TEXT OR IN THE CRITICAL APPARATUS). +%% THUS THE USE OF ArabXeTeX IS NONMANDATORY, BUT THE PACKAGE bidi +%% IS REQUIRED FOR BIDIRECTIONALITY. +%% +%% François Charette, 13 December 2006 +%% +%% +\documentclass[12pt,a4paper,oneside]{memoir} +\usepackage{fontspec} +\setromanfont[Mapping=tex-text]{Junicode} +\usepackage[novoc,fdf2noalif]{arabxetex} +\newfontinstance\arabicfont[Script=Arabic,Scale=1.2,WordSpace=2]{Lotus Linotype} +%% OK, now we load ednotes with appropriate options. +%% For each extra level of notes in the critical apparatus we need to +%% initialize it with the appropriate option, in this case, "Bpara". +%% Options "modulo", "perpage" and "right" are for line numbers: +%% they will be printed at the right margin, at a certain interval +%% to be set by the command \modulolinenumber below, +%% and with the "perpage" option to start numeration anew on each page. +%% The option "para*" is for having the notes in paragraph format without indentation. +\usepackage[Bpara,modulo,right,perpage,para*]{ednotes}% relies on manyfoot and lineno + +%% This makes the footnoterule as wide as the \textwidth +\makeatletter% +\renewcommand{\footnoterule}{\kern-3\p@ + \hrule width \textwidth \kern 2.6\p@} +\makeatother + +%%EDNOTES SETUP +%% +%% Line numeration is printed every 5 lines: +\modulolinenumbers[5] + +%% This is a little hack to set linenumbering in Arabic +%% (the mapping is provided with ArabXeTeX): +\renewcommand{\linenumberfont}{\arabicfont\addfontfeature{Mapping=arabicdigits}\tiny} +%% +%% The following macros redefine the default formatting +%% of various aspects of the critical apparatus. +%% Note that since the edition is contained in a Right-to-Left environment, +%% the notes should be set RL by default, but to be certain we declare +\PrecedeLevelWith{A}{\setRL} +%% which puts the appropriate "hook" at the beginning of the block A of notes. +%% Here are the customized macros for the default apparatus: +%% The uncommented lines below are changed for typesetting the apparatus in Arabic. +% \renewcommand*{\sameline}[1]{\linesfmt{##1}}% +\renewcommand*{\differentlines}[2]{\linesfmt{\RL{#1\textendash#2}}}% +\renewcommand*{\linesfmt}[1]{\raisebox{1ex}{\linenumberfont #1}~}% +\renewcommand{\lemmafmt}[1]{#1~[ }% +\renewcommand*{\pageandline}[2]{#2.\textlatin{#1}}% #1 page, #2 line. +% \renewcommand*{\repeatref}[1]{\raisebox{-.5ex}{$\Vert$}}% << not advisable +% \renewcommand{\lemmaellipsis}{\textsymmdots}% +% \renewcommand{\notefmt}[1]{##1}% + +%% We do not want extra footnoterules between the different levels (see manyfoot doc): +\renewcommand{\extrafootnoterule}{} +\SelectFootnoteRule[0]{extra} + +%% We can also customize the critical apparatus for a *specific* level of notes. +%% In the following case we customize a level B of Left-to-Right notes. +%% To achieve this with ednotes, with need to feed-in the appropriate command +%% as a "hook" to manyfoot by means of: +\PrecedeLevelWith{B}{\unsetRL} +% Now we change the formatting of level B to take into account that it is set left-to-right: +\newcommand{\Bnotefmt}{% + \renewcommand*{\differentlines}[2]{\linesfmt{##1\textendash##2}}% + \renewcommand{\lemmafmt}[1]{##1~]\enskip}% +} + +%% In our example we define another level of notes, but this time as regular footnotes +%% here keyed by fnsymbols. This customization is independant of ednotes, +%% and relates to manyfoot directly: +\SetFootnoteHook{\unsetRL}%--> must appear immediately before \DeclareNewFootnote +\DeclareNewFootnote[para]{C}[fnsymbol] + +%% Finally, we define macros that make typing the critical edition as abstract as possible. +%% First the apparatus for VARIANTS in the Arabic text (level A): +\newcommand{\VAR}[2]{\Anote{\textarab{#1}}{\textarab{#2}}} +%% This is for lemmas of the form \VAR{LEMMA1\LEMMA3}{NOTE} +%% where LEMMA2 is the portion omitted in the note: this macro is necessary +%% because \< and \> cannot appear inside the argument of \textarab +\newcommand{\VARX}[4]{\Anote{\textarab{#1}\ \<\textarab{#2}\>\ \textarab{#3}}{\textarab{#4}}} +%% Second the comparisions to the Latin translation (level B): +\newcommand{\VARB}[2]{\Bnote{\textarab{#1}}{#2}} +%% Third, the level for plain footnotes (level C): +\newcommand{\NOTE}[1]{\footnoteC{#1}} +%% The typographical "object" that separates successive variants in one note: +\newcommand{\SEP}{\enskip;\enskip} +%% The typographical "object" that indicates additions in a MS: +\newcommand{\ADD}{\textlatin{\textbf{+}}\,}% +%% The typographical "object" that indicates omissions in a MS: +\newcommand{\OM}{\textlatin{\textbf{–}}\,}% +%% The typographical "object" that indicates a correction not reflected in any MS: +\newcommand{\CORR}{\textarab{.s.h.h-}}% +%% The typographical "object" that indicates illegible passages in a MS: +\newcommand{\ILLEG}{\textarab{.gayr maqrU'}}% +%% The typographical "object" that indicates a blank in a MS: +\newcommand{\BLANK}{\textarab{bayA.d}}% +%% The typographical "object" that indicates a marginal passage in a MS: +\newcommand{\MARG}{\textarab{bi-al-hAmi^s}}% +%% The typographical "object" that indicates a supralinear passage in a MS: +\newcommand{\SUPERLIN}{\textarab{ta.ht al-sa.tr}}% +%% The typographical "object" in the main text that indicates a lacuna in all MSS: +\newcommand{\LACUNA}{\textlatin{\textlangle\,\dots\textrangle}} +%% The typographical "object" in the main text that indicates a restoration: +\newcommand{\RESTOR}[1]{\}~#1~\{} +%% +%% Convenient abbreviations for referring to individual manuscripts +\newcommand{\msE}{\textbf{أ}} +\newcommand{\msB}{\textbf{ب}} +\newcommand{\msN}{\textbf{ن}} +\newcommand{\msL}{\textbf{ل}} +\newcommand{\msT}{\textbf{ط}} +\newcommand{\msM}{\textbf{م}} + +\begin{document} +\thispagestyle{empty} +\begin{center}\Large + Extract from Abū Maʿšar, \textit{Kitāb al-Milal wa-l-Duwal}, + Part 1, Chapter 1, §\,26\footnoteC{% + Text, apparatus and references to the Latin translation taken + from: \textit{Abū Maʿšar on Historical Astrology. The Book of + Religions and Dynasties (On the Great Conjuntions)}. Edited + and Translated by Keiji Yamamoto and Charles Burnett. 2 vols. + Leiden: Brill, 2000 (ISBN 90 04 11733 4). + Vol I pp.~22 and 24 (Arabic text) and Vol II pp.~15–16 (Latin + translation). NB: This is for illustrative purposes only!} +\end{center} +\begin{arab} +\resetlinenumber\pagewiselinenumbers +wa-mi_tAl _dalika 'anna \VAR{al-qirAn}{ala_dI kAna \ADD \msN} al-dAll `alY +al-.tUfAn \VAR{kAna}{\msE,\msN \SEP \OM \msB} qabl al-qirAn al-dAll `alY millaT +al-`arab bi-_talA_taT 'AlAf sanaT wa-tis`ami'aT sanaT wa-_tamAn wa-_hamsIn +\VAR{sanaT}{wa-ha_dihi .sUratuhA \ADD \msN} +\VARB{\VAR{3950}{3958: \msE,\msN}}{3958}. +wa-kAna \VARB{wAlI al-dawr}{prefuit scilicet illi orbi} +\VARB{fI _dalika \VAR{al-waqt}{\msE,\msN \SEP \OM \msB}}{om.} +zu.hal ma`a burj al-sara.tAn. wa-kAna al-.tUfAn ba`d _dalika +\VAR{\VAR{bi-mi'atayn}{li-mi'atayn 287: \msE \SEP _tamAnIn sanaT: \msN} +wa-sab`a \VAR{wa-_tamAnIn}{_tamAnIn: \msN}}{296: \msM}% +\NOTE{T lacks a folio} +sanaT \VAR{287}{\OM \msE}. +fa-yakUn \VAR{bayna}{yawm al-jum`aT \ADD \msN} +'awwal yawm min sanaT al-.tUfAn wa-bayn 'awwal yawm min al-sanaT alatI kAna +fIhA al-qirAn al-dAll `alY millaT al-`arab _talA_taT 'AlAf sanaT +\VAR{wa-sittami'aT sanaT}{\OM \msE} wa-'i.hdY +\VAR{wa-sab`In}{wa-sab`Un: \msE,\msN} +\VAR{sanaT}{`alY ha_dihi al-.sUraT \ADD \msN} 3671. +wa-qad _dakara \VARB{\VAR{Ab_tnUs}% +{\msE,\msN \SEP mlbws: \msB \SEP \OM \msT \SEP Asws: \msM}}{Bentemiz} +wa-.gayruhu 'anna \VAR{bayna}{\OM \msN} +\VARB{ibtidA'}{om.} _half 'Adam \VAR{.salwAt al-ll_ah `alayhi}{\OM \msN} +wa-bayna laylaT al-jum`aT alatI kAna fIhA al-.tUfAn +\VAR{'alfayn}{\msE \SEP alfAn: \msB,\msN} \VAR{wa-mi'atayn}{wa-mi'atA sanaT: \msN} +\VAR{wa-sitta}{wa-sittaT: \msE,\msN} \VAR{wa-`i^srIn}{\CORR \SEP wa-`i^srUn: +\msB,\msE,\msN \SEP \OM \msT \SEP 2226: \msM} sanaT 3671 \VAR{wa-^sahr"aN +wA.hid"aN}{\msE \SEP wa-^sahr wA.hid: \msB,\msN} wa-\aemph{kj-} yawm"aN +\VAR{wa-'arba`a}{j-: \msN} sA`At \VAR{2226}{\OM \msE,\msN}. fa-yakUn `alY +ha_dihi al-jihaT mA bayna _halaf 'Adam \VAR{`alayhi al-salAm}{\OM \msN} +wa-bayna \VAR{'awwal}{\OM \msE,\msN} yawm min al-sanaT alatI kAna fIhA al-qirAn +al-dAll `alY millaT al-`arab \VAR{_hamsaT}{\msL,\msN \SEP _hamsa: \msB,\msE} +\VAR{'AlAf}{'alf sanaT: \msN} wa-_tamAnami'aT +\VAR{\VAR{wa-sab`"aN}{\CORR \SEP wa-sab`a: \msB,\msE \SEP wa-sab`aT: \msN \SEP +\OM \msT \SEP 5778: \msM} \VAR{wa-tis`In}{\msE \SEP wa-tis`Un: \msB} +sanaT}{wa-tis`aT wa-sab`Un sanaT 5789: \msN} +\VAR{wa-^sahr"aN wA.hid"aN}{\msE \SEP wa-^sahr wA.hid: \msB,\msN} +wa-\aemph{kj-} yawm"aN \VAR{wa-'arba`a}{j-: \msN} sA`At +\VAR{5897}{\OM \msE,\msN}. +fa-'i_dA qasamnA al-sinIn alatI \VAR{bayna}{\msE,\msN \SEP Awl \ADD \msB} +qirAn al-.tUfAn wa-al-qirAn \VAR{al-dAll}{ala_dI dal: \msN} `alY +\VAR{millaT}{\msL,\msE,\msN \SEP al-mlh: \msB} al-`arab `alY +\VAR{_tala_tami'aT wa-sittIn wa-'a_ha_dnA}{s.s: \msN} li-kull burjiN sanaT +\VAR{wa-ibtada'nA}{wa-ibtadY: \msE,\msN} +\VAR{bi-al-.tar.h}{al-.tar.h li-isti_hrAj burj al-muntahY: \msN} +min al-.hamal intahat \VAR{al-sanaT}{\OM \msN} 'ilY \VAR{al-.hUt}{al-jawzA': \msN}.% +\NOTE{Because 3950 = 360 × 10 + 350.} +\VAR{fa-'in}{knA \ADD \msN} qasamnA tilka al-sinIn% +\NOTE{That is, 3950.} +`alY _tala_tami'aT wa-sittIn wa-'a_ha_dnA li-kulli dawriN burj"aN +\VARB{\VAR{wa-ibtada'nA}{wa-ibtadY: \msE,\msN} + \VAR{bi-al-'ilqA'}{bi-al-.tar.h: \msN}}{proiecerimus} +min al-burj al-mudabbir \VAR{ala_dI}{\OM \msN} \VARB{kAna +\VAR{li-l-dawr}{al-dawr: \msN}}{fuit orbis} fI _dalika +\VAR{al-waqt}{al-burj: \msN} +\VARB{\VAR{al-dAll `alY al-.tUfAn}{\OM \msE,\msN}}{om.} ala_dI huwa +\VAR{al-sara.tAn \VAR{intahY}{wa-intihA': \msN}}{al-sara.tAnI intihA' intihA': \msE} +al-dawr \VAR{fI al-qirAn}{min al-burj: \msN} al-dAll `alY +\VAR{al-millaT}{millaT al-`arab: \msN} 'ilY al-jawzA'. wa-'in 'a`.taynA li-kull +kawkab dawr"aN min al-'adwAr wa-ibtada'nA \VAR{bi-al-'ilqA'}{bi-al-.tar.h: \msN} +min \VAR{al-kawkab}{al-kawAkib: \msN} +\VARB{ala_dI li-l-dawr}{cuius est orbis} +fI al-qirAn al-dAll `alY al-millaT intahY al-`adad 'ilY al-zuhraT. +wa-'in 'alqaynA min .tAli` al-qirAn ala_dI kAna fI ra's al-.hamal li-kull +darajaT sanaT intahY fI al-qirAn al-dAll `alY al-millaT 'ilY \aemph{k} darajaT +min al-.hUt. \VAR{wa-kAna}{fa-kAna: \msE} al-mubtazz `alY al-dawr wa-`alY +\VARX{.sA.hib al-.tAli` wa-.sA.hib}% +{burj al-qirAn al-mirrI_h, wa-kAna al-tadbIr li-l-rub` al-'awwal + \VAR{ala_dI huwa}{\msE \SEP \OM \msB,\msN} \aemph{.s} sanaT + min ibtidA' al-qirAn al-dAll}% +{`alY}{\OM \msN} dawlaT al-`arab. wa-al-rub` al-_tAnI +\VAR{li-l-^sams wa-al-rub`}{w: \msN} al-_tAli_t li-`u.tArid +\VAR{wa-al-rub`}{w: \msN} al-rAbi` li-zu.hal, wa-_dalika `alY qadr +\VARB{ibtizAzAt}{dominium} al-kawAkib `alY .sA.hib al-dawr wa-`alY al-.tAli` +wa-burj al-qirAn \VAR{wa-mu^sArikatihimA}{\msE \SEP wa-mu^sArikatihA: \msB,\msN} +li-.sA.hib al-dawr al-'awwal ala_dI huwa al-zuhraT. +\end{arab} +\end{document} diff --git a/Master/texmf-dist/doc/xelatex/arabxetex/makemaps.pl b/Master/texmf-dist/doc/xelatex/arabxetex/makemaps.pl new file mode 100644 index 00000000000..b375752271c --- /dev/null +++ b/Master/texmf-dist/doc/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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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 () { + 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, "$output-fdf2noalif-kurdish.map"; +while () { + s/^#0 // ; + s/^#1.+\n//m ; + print OUTPUT +} +close OUTPUT; +close MAPS; + +open MAPS, "$output-fdf2noalif-uighur.map"; +while () { + s/^#0 // ; + s/^#1.+\n//m ; + print OUTPUT +} +close OUTPUT; +close MAPS; + +open MAPS, "$output-fdf2alif-kurdish.map"; +while () { + s/^#1 // ; + s/^#0.+\n//m ; + print OUTPUT +} +close OUTPUT; +close MAPS; + +open MAPS, "$output-fdf2alif-uighur.map"; +while () { + s/^#1 // ; + s/^#0.+\n//m ; + print OUTPUT +} +close OUTPUT; +close MAPS; + +# Let's compile them now + +system("for map in $output*.map; do echo \"compiling \$map ...\" && teckit_compile \$map; done"); + + -- cgit v1.2.3