diff --git a/src/arabic/LexiconAra.gf b/src/arabic/LexiconAra.gf index b6b12a45..3ff63138 100644 --- a/src/arabic/LexiconAra.gf +++ b/src/arabic/LexiconAra.gf @@ -73,7 +73,7 @@ flags drink_V2 = dirV2 (regV "شَرِب") ; -- drink_V2 = dirV2 (v1 "شرب" i a) ; easy_A2V = mkA2 (sndA "سهل" "فَعل") "لِ" ; - eat_V2 = dirV2 (mkV "ء‎كل" FormI) ; + eat_V2 = dirV2 (mkV "ءكل" FormI) ; empty_A = sndA "فرغ" "فاعِل" ; enemy_N = brkN "عدو" "فَعُلّ" "أَفعاء" Masc Hum ; factory_N = brkN "صنع" "مَفعَل" "مَفاعِل" Masc NoHum ; @@ -111,7 +111,7 @@ flags iron_N = brkN "حدّ" "فَعِيل" "فَعائِل" Masc NoHum ; king_N = brkN "ملك" "فَعِل" "فُعُول" Masc Hum ; know_V2 = dirV2 (regV "عَرِف") ; - know_VS = mkVS (regV "عَرِف") ; -- or with ع ل م‎? + know_VS = mkVS (regV "عَرِف") ; -- or with ع ل م? lake_N = sdfN "بحر" "فُعَيلة" Fem NoHum ; lamp_N = brkN "صبح" "مِفعال" "مَفاعِيل" Masc NoHum ; --qanDIl, fAnUs learn_V2 = dirV2 (v5 "علم") ; diff --git a/src/arabic/OrthoAra.gf b/src/arabic/OrthoAra.gf index 5c5602d9..3a24690c 100644 --- a/src/arabic/OrthoAra.gf +++ b/src/arabic/OrthoAra.gf @@ -11,8 +11,15 @@ flags coding=utf8 ; -- "Sun letters": assimilate with def. article sun : pattern Str = #("ت"|"ث"|"د"|"ذ"|"ر"|"ز"|"س"|"ش"|"ص"|"ض"|"ط"|"ظ"|"ل"|"ن") ; + -- Shadda: https://www.unicode.org/L2/L2017/17253-arabic-ordering.pdf + fixShd : Str -> Str -> Str = \word,vowel -> + case word of { + x + "ّ" => x + vowel + "ّ" ; + x => x + vowel + } ; + -- Hamza - hamza : pattern Str = #("ء‎"|"؟") ; + hamza : pattern Str = #("ء"|"؟") ; rectifyHmz: Str -> Str = \word -> case word of { diff --git a/src/arabic/ParadigmsAra.gf b/src/arabic/ParadigmsAra.gf index 3aaa804f..089421cc 100644 --- a/src/arabic/ParadigmsAra.gf +++ b/src/arabic/ParadigmsAra.gf @@ -438,7 +438,7 @@ resource ParadigmsAra = open -- e.g. al-jamii3, 2a7ad regNP : Str -> Number -> NP = \word,n -> - { s = \\c => word ++ vowel ! c ; ---- gives strange chars + { s = \\c => fixShd word (dec1sg ! Def ! c) ; a = {pgn = Per3 Masc n; isPron = False }; lock_NP = <> }; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 15e4d666..c3cc2aa9 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -842,13 +842,12 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> -- takes a singular or broken plural word and tests the ending to -- determine the declension and gives the corresponding inf table - sing : Str -> State => Case => Str = - \word -> - case word of { - lemma + "ِي" => \\s,c => defArt s lemma + dec2sg ! s ! c ; - _ + ("ا"|"ى") => \\s,c => defArt s word + dec3sg ! s ! c ; - _ => \\s,c => defArt s word + dec1sg ! s ! c - }; + sing : Str -> State => Case => Str = \word -> + \\s,c => defArt s (case word of { + lemma + "ِي" => fixShd lemma (dec2sg ! s ! c) ; + _ + ("ا"|"ى") => fixShd word (dec3sg ! s ! c) ; + _ => fixShd word (dec1sg ! s ! c) + }) ; -- takes a singular word and tests the ending to @@ -952,7 +951,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> Const => table { Nom => "َا"; - _ => "َيْ‎" + _ => "َيْ" }; _ => table { diff --git a/src/arabic/VerbAra.gf b/src/arabic/VerbAra.gf index 9602b19b..ea33158c 100644 --- a/src/arabic/VerbAra.gf +++ b/src/arabic/VerbAra.gf @@ -20,7 +20,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra in { ComplVV vv vp = let vvVP = predV vv in --- IL vp ** { s = \\pgn,vpf => vvVP.s ! pgn ! vpf - ++ vv.c2 -- أَنْ‎ + ++ vv.c2 -- أَنْ ++ vp.s ! pgn ! VPImpf Cnj } ;