From unknown Sat Aug 16 17:00:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10966: Fixes for persian/Farsi Input Methods -- leim/quail/persian.el Resent-From: Mohsen BANAN Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 08 Mar 2012 00:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 10966 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 10966@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.133116508127671 (code B ref -1); Thu, 08 Mar 2012 00:05:01 +0000 Received: (at submit) by debbugs.gnu.org; 8 Mar 2012 00:04:41 +0000 Received: from localhost ([127.0.0.1]:38134 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S5QqW-0007C2-2F for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:04:41 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37549) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S5QnK-00077R-EF for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:01:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S5QmH-0002Pl-Ru for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:00:20 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,BODY_8BITS, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:33479) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S5QmH-0002Ph-OF for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:00:17 -0500 Received: from eggs.gnu.org ([208.118.235.92]:55873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S5QmA-0007sn-QI for bug-gnu-emacs@gnu.org; Wed, 07 Mar 2012 19:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S5Qm6-0002ON-Ol for bug-gnu-emacs@gnu.org; Wed, 07 Mar 2012 19:00:10 -0500 Received: from plane.gmane.org ([80.91.229.3]:34251) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S5Qm6-0002MH-9V for bug-gnu-emacs@gnu.org; Wed, 07 Mar 2012 19:00:06 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1S5Qm3-0005qW-Ts for bug-gnu-emacs@gnu.org; Thu, 08 Mar 2012 01:00:03 +0100 Received: from 70-90-188-161-cable.librecenter.net ([70.90.188.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 08 Mar 2012 01:00:03 +0100 Received: from list-general by 70-90-188-161-cable.librecenter.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 08 Mar 2012 01:00:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ From: Mohsen BANAN Date: Wed, 07 Mar 2012 15:56:35 -0800 Organization: ByStar Federation of Autonomous Libre Services -- http://www.by-star.net Lines: 671 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 70-90-188-161-cable.librecenter.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:wGKRsT99YT9Ve14GLt+FwvNK6do= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Mailman-Approved-At: Wed, 07 Mar 2012 19:04:28 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) --=-=-= Content-Type: text/plain Attached are a numbers of bug fixes for leim/quail/persian.el (emacs 24.0.94) as a context diff. The fixes include: - Full compliance to ISIRI-6219. Forbiden characters were eliminated and missing characters were added. - Layer 3 of ISIRI-9147 is now implemented with a '\' prefix. - Double entry of characters which were postfixed with 'h' is now supported. - Lots of comment and additional pointers have been added. Please apply this context diff. ...Mohsen --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=persian.el.diff Content-Transfer-Encoding: 8bit Content-Description: Updates to emacs 24.0.94 persian.el *** persian.el 2012-03-06 14:31:46.412341948 -0800 --- /usr/local/share/emacs/24.0.94/leim/quail/persian.el 2012-02-13 08:13:25.000000000 -0800 *************** *** 1,9 **** ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- ! ;; Copyright (C) 2011 Free Software Foundation, Inc. ! ;; Author: Mohsen BANAN ! ;; http://mohsen.1.banan.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard --- 1,9 ---- ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- ! ;; Copyright (C) 2011-2012 Free Software Foundation, Inc. ! ;; Author: Mohsen BANAN ! ;; http://mohsen.banan.1.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard *************** *** 27,41 **** ;;; Commentary: ;; ;; This file contains a collection of input methods for ! ;; Persian languages (Farsi, Urdu, Pashto/Afghanic, ...) ;; ;; At this time, the following input methods are specified: ;; ! ;; - (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 ! ;; - (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi ! ;; ! ;; Additional documentaion for these inpput methods can be found at: ! ;; http://www.persoarabic.org/PLPC/120036 ;; ;;; Code: --- 27,38 ---- ;;; Commentary: ;; ;; This file contains a collection of input methods for ! ;; Persian languages - Farsi, Urdu, Pashto (Afghani), ... ;; ;; At this time, the following input methods are specified: ;; ! ;; - (farsi) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 ! ;; - (farsi-translit) Intuitive transliteration keyboard layout for Persian ;; ;;; Code: *************** *** 45,96 **** ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-isiri-9147 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; The keyboard mapping defined here is based on: ;; ! ;; Institute of Standards and Industrial Research of Iran ! ;; Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards ! ;; ISIRI 9147 -- 1st edition ! ;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 ! ;; ! ;; The specification is also republished at ! ;; http://www.farsiweb.ir/wiki/Image:Isiri-9147.pdf ! ;; and various other sites. ! ;; ! ;; ISIRI-6219 is also relevant. ! ;; ! ;; Layers 1, 2 and 3 of ISIRI-9147 are fully implemented with the exception of the Backslash, ! ;; Alt-Backslash, Shift-Space and Alt-Space keys. ! ;; ! ;; The Backslash key is used to replace کلید با دگر ساز راست‌ -- the Alt or ! ;; Meta key. ! ;; ! ;; Layer 3 is then entered with the Backslash key and Layer 3 is implemented as two letter ! ;; keys as specified in ISIRI-9147. ! ;; ! ;; The character corresponding to Backslash is entered with Backslash-Backslash. ! ;; Alt-Backslash has been moved to Backslash-r. ! ;; Alt-Space has been moved to Backslash-t. ! ;; Shift-Space has been moved to Backslash-y. ! ;; ! ;; With these modifications, farsi-isiri-9147 is a full implementation of ISIRI-9147. ! ;; Additionally, these modifications allow for this implementation to be ascii input stream ! ;; based -- in addition to being a keyboard layout. ! ;; ! ;; If a key on Layer 1 was reserved to replace دگر ساز راست‌ (the Alt or ! ;; Meta key), then farsi-isiri-9147 could have claimed full compliance -- without the need for ! ;; the above description. Perhaps this can be considered a flaw in the base ISIRI-9147 ! ;; specification to be addressed in the next revision. ;; (quail-define-package ! "farsi-isiri-9147" "Farsi" " ف" nil "Farsi input method. ! Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) ;; +----------------------------------------------------------------+ --- 42,73 ---- ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; The keyboard mapping defined here is based on: ;; ! ;; Institute of Standards and Industrial Research of Iran ! ;; Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards ! ;; ISIRI 9147 -- 1st edition ! ;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 ! ;; ! ;; Only layers 1 and 2 of ISIRI-9147 are applicable to emacs. ! ;; ! ;; This input method was built using the Farsi table in X Keyboard Configuration Data Base. ! ;; ! ;; 0) Selected gnome keyboard "USA" ! ;; 1) Created a list of all keys ! ;; 2) Selected gnome keyboard "Iran" ! ;; 3) For each key just press it and get the mapped persian character ;; (quail-define-package ! "farsi" "Farsi" " ف" nil "Farsi input method. ! Based on ISIRI-9149 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) ;; +----------------------------------------------------------------+ *************** *** 98,106 **** ;; +----------------------------------------------------------------+ ;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | ;; +------------------------------------------------------------+ ! ;; | ش‌ؤ | س‌ئ | ی‌ي | ب‌إ | لأ | اآ | ت‌ة | ن» | م« | ک: | گ؛ | \| | ;; +-----------------------------------------------------------+ ! ;; | ظ‌ك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | ;; +-------------------------------------------+ (quail-define-rules --- 75,83 ---- ;; +----------------------------------------------------------------+ ;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | ;; +------------------------------------------------------------+ ! ;; | شؤ | سئ | یي | بإ | لأ | اآ | تة | ن» | م« | ک: | گ؛ | \| | ;; +-----------------------------------------------------------+ ! ;; | ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | ;; +-------------------------------------------+ (quail-define-rules *************** *** 116,122 **** ("0" ?۰) ("-" ?-) ("=" ?=) ! ("`" ?\u200D) ;; ZWJ -- ZERO WIDTH JOINER اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) --- 93,99 ---- ("0" ?۰) ("-" ?-) ("=" ?=) ! ;;("`" ?‍\)) ;; اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) *************** *** 140,146 **** ("l" ?م) (";" ?ک) ("'" ?گ) ! ("z" ?ظ) ("x" ?ط) ("c" ?ز) --- 117,123 ---- ("l" ?م) (";" ?ک) ("'" ?گ) ! ("\\" ?\\) ;; خط اريب وارو ("z" ?ظ) ("x" ?ط) ("c" ?ز) *************** *** 193,396 **** ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) ! ("B" ?\u200C) ;; ZWNJ -- ZERO WIDTH NON-JOINER فاصلهٔ مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) - - ;; Level 3 Entered with \ - ;; - ("\\" ?\\) ;; خط اريب وارو - ("\\\\" ?\\) - ("\\~" ?\u007E) - ("\\1" ?\u0060) - ("\\2" ?\u0040) - ("\\3" ?\u0023) - ("\\4" ?\u0024) - ("\\5" ?\u0025) - ("\\6" ?\u005E) - ("\\7" ?\u0026) - ("\\8" ?\u2022) - ("\\9" ?\u200E) - ("\\0" ?\u200F) - ("\\-" ?\u005F) - ("\\+" ?\u2212) - ("\\q" ?\u00B0) - ;;\\w" ?\u0000) - ("\\e" ?\u20AC) - ("\\r" ?\u2010) ;; replacement for Alt-BSL - ("\\t" ?\u00A0) ;; replacement for ALT-SPC - ("\\y" ?\u200C) ;; replacement for SHIFT-SPC - ;;("\\u" ?\u0000) - ("\\i" ?\u202D) - ("\\o" ?\u202E) - ("\\p" ?\u202C) - ("\\[" ?\u202A) - ("\\]" ?\u202B) - ;;("\\a" ?\u0000) - ;;("\\s" ?\u0000) - ("\\d" ?\u0649) - ;;("\\f" ?\u0000) - ;;("\\g" ?\u0000) - ("\\h" ?\u0671) - ;;("\\j" ?\u0000) - ("\\k" ?\uFD3E) - ("\\l" ?\uFD3F) - ("\\;" ?\u003B) - ("\\'" ?\u0022) - ;;("\\z" ?\u0000) - ;;("\\x" ?\u0000) - ;;("\\c" ?\u0000) - ("\\v" ?\u0656) - ("\\b" ?\u200D) - ("\\n" ?\u0655) - ("\\m" ?\u2026) - ("\\," ?\u002C) - ("\\." ?\u0027) - ("\\?" ?\u003F) - ;;("\\\\" ?\u2010) ;; Moved to backslash r to leave room for BSL-BSL ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-transliterate-banan ! ;; ! ;; Given a Qwerty keyboard, use Persian-to-Latin transliteration knowledge ! ;; to reverse transliterate in persian ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ! ;;; See http://www.persoarabic.org/PLPC/120036 document for more complete ! ;;; documentation of keyboard bindings and usage instructions. ;;; ! ;; ! ;; ISIRI-9147 Persian keyboard is generally not well suited for Iranian-Expatriates ! ;; working/living in the West. ! ;; ! ;; The qwetry keyboard is usually second nature to Persian speaking expatriates and they ! ;; don't want to learn/adapt to ISIRI-9147. They expect software to adapt to them. ! ;; ! ;; That is what the ``Banan Multi-Character (Reverse) Transliteration Persian Input Method'' does. ! ;; ! ;; The typical profile of the user is assumed to be one who: ! ;; ! ;; - can write in farsi (not just speak it). ! ;; - is fully comfortable with a qwerty latin keyboard. ! ;; - is not familiar with isir-9147 and does not wish to be trained. ! ;; - communicatates and writes in a mixed globish/persian -- not pure persian. ! ;; - is intuitively familiar with transliteration of farsi/persian into latin based on two letter ! ;; phonetic mapping to persian characters (e.g., gh ق -- kh خ -- sh ش -- ch چ -- zh ژ. ! ;; ! ;; This transliteration keyboard is designed to be intuitive such that ! ;; mapping are easy and natural to remember for a persian writer. ! ;; It is designed to be equivalent in capability to farsi-isiri-9147 ! ;; and provide for inputing all characters enumerated in ISIRI-6219. ! ;; ! ;; farsi-transliterate-banan is of course phonetic oriented. But it is very different from ! ;; pinglish. Pinglish is word oriented where you sound out the word with latin letters -- ! ;; incuding the vowels. farsi-transliterate-banan is letter oriented where you enter the ! ;; latin letter/letters closest to the persian letter. And usually omit vowels. ! ;; ! ;; For some persian characters there are multiple ways of inputing ! ;; the same character. For example both ``i'' and ``y'' produce ی. ! ;; For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural. ! ;; ! ;; The more frequently used keys are mapped to lower case. The less frequently used letter moves to ! ;; upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ح and ``H'' ! ;; is ه. ! ;; ! ;; Multi-character input is based on \, &, and / prefix ! ;; characters. The letter 'h' is used as a postfix for the following two character mappings: ! ;; gh ق -- kh خ -- sh ش -- ch چ -- zh ژ -- Th ة -- Yh ى. ! ;; ! ;; ! ;; Prefix letter \ is used for two character inputs when an alternate form of a letter ! ;; is desired for exampe \% is: ‌÷ when % is: ٪. ! ;; ! ;; Prefix letter & is used for multi-character inputs when special characters are ! ;; desired based on their abbreviate name. For example you can enter ‎ to enter the ! ;; ``LEFT-TO-RIGHT MARK'' character. ! ;; ! ;; Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER'' ! ;; and // is /. ! ;; ! ;; The letter 'h' is used in a number of two character postfix mappings, ! ;; for example ``sh'' ش. So if you need the sequence of ``s'' and ``h'' you ! ;; need to repeat the ``s''. For example: سحر = 's' 's' 'h' 'r'. ! ;; (quail-define-package ! "farsi-transliterate-banan" "Farsi" "ب" t "Intuitive transliteration keyboard layout for persian/farsi. " nil t t t t nil nil nil nil nil t) (quail-define-rules ! ;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی ! ("W" ?ء) ;; hamzeh ! ("A" ?آ) ;; U+0622 & ARABIC LETTER ALEF WITH MADDA ABOVE & الف با کلاه ! ("a" ?ا) ;; U+0627 & ARABIC LETTER ALEF & الف ! ("\\a" ?أ) ! ("b" ?ب) ;; U+0628 & ARABIC LETTER BEH & ! ("p" ?پ) ;; U+067e & ARABIC LETTER PEH & ("t" ?ت) - ("tt" ?ت) ("c" ?ث) - ("cc" ?ث) ("j" ?ج) ("ch" ?چ) ! ("h" ?ح) ("kh" ?خ) ("d" ?د) ("Z" ?ذ) ("r" ?ر) ("z" ?ز) - ("zz" ?ز) ("zh" ?ژ) ("s" ?س) - ("ss" ?س) ("sh" ?ش) ("S" ?ص) ("x" ?ض) ("T" ?ط) - ("TT" ?ط) ("X" ?ظ) ("w" ?ع) ! ("q" ?غ) ("f" ?ف) ! ("Q" ?ق) ("gh" ?ق) ("k" ?ک) ! ("kk" ?ک) ("g" ?گ) - ("gg" ?گ) ("l" ?ل) ("m" ?م) ("n" ?ن) ("v" ?و) - ("u" ?و) ("V" ?ؤ) ("H" ?ه) ! ("y" ?ی) ! ("i" ?ی) ("I" ?ئ) - - ;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی - ("F" ?إ) - ("D" ?\u0671) ;; (ucs-insert #x0671)ٱ named: حرفِ الفِ وصل - ("K" ?ك) ;; Arabic kaf - ("Th" ?ة) ;; ta marbuteh - ("Y" ?ي) - ("YY" ?ي) - ("Yh" ?ى) - - ;;;;;;;;;;; isiri-6219 Table 4 -- جدول ۴ - ارقام و علائم ریاضی - ("0" ?۰) ("1" ?۱) ("2" ?۲) ("3" ?۳) --- 170,262 ---- ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) ! ;; ("B" ?‌‌) ;; فاصلهً مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-translit ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ! ;;; This is a persian/farsi transliteration keyboard designed ! ;;; for people who: ! ;;; - Know how to write in farsi ! ;;; - Are comfortable with the qwerty keyboard ! ;;; - Are familiar with two letter phonetic mapping to persian characters ! ;;; (e.g.: gh, kh, ch, sh, zh, hh, lh) ;;; ! ;;; This translit keyboard is designed to be intuitive such that ! ;;; mapping are easy and natural to remember for a persian writer. ! ;;; For some persian characters there are multiple ways of inputting ! ;;; the same character. ! ;;; ! ;;; The letter 'h' is used for a number of two character mappings, ! ;;; this means that some character sequence inputs need to be repeated ! ;;; followed by a backspace followed by the 'h'. ! ;;; For example: سحر = 's' 's' '' 'h' 'h' 'r' ! ;;; In practice such sequences are rare. ! ;;; ! (quail-define-package ! "farsi-translit" "Farsi" "پ" t "Intuitive transliteration keyboard layout for persian/farsi. " nil t t t t nil nil nil nil nil t) (quail-define-rules ! ("a" ?ا) ! ("A" ?آ) ;; alef madde ! ("b" ?ب) ! ("p" ?پ) ("t" ?ت) ("c" ?ث) ("j" ?ج) ("ch" ?چ) ! ("hh" ?ح) ("kh" ?خ) ("d" ?د) ("Z" ?ذ) ("r" ?ر) ("z" ?ز) ("zh" ?ژ) ("s" ?س) ("sh" ?ش) ("S" ?ص) ("x" ?ض) ("T" ?ط) ("X" ?ظ) ("w" ?ع) ! ("Q" ?غ) ("f" ?ف) ! ("q" ?ق) ("gh" ?ق) ("k" ?ک) ! ("K" ?ك) ;; Arabic kaf ("g" ?گ) ("l" ?ل) + ("lh" ?ﻻ) ("m" ?م) ("n" ?ن) ("v" ?و) ("V" ?ؤ) + ("u" ?و) ("H" ?ه) ! ("h" ?ه) ! ("th" ?ة) ;; ta marbuteh ! ("yh" ?ۀ) ;; he ye ! ("y" ?ى) ! ("i" ?ي) ("I" ?ئ) ("1" ?۱) ("2" ?۲) ("3" ?۳) *************** *** 400,505 **** ("7" ?۷) ("8" ?۸) ("9" ?۹) ! ("\\/" ?\u066B) ;; (ucs-insert #x066B)٫ named: ممیزِ فارسی ! ("\\," ?\u066C) ;; (ucs-insert #x066C)٬ named: جداکننده‌ی هزارهای فارسی ! ("%" ?\u066A) ;; (ucs-insert #x066A)٪ named: درصدِ فارسی ! ("+" ?\u002B) ;; (ucs-insert #x002B)+ named: علامتِ به‌اضافه ! ("-" ?\u2212) ;; (ucs-insert #x2212)− named: علامتِ منها ! ("\\*" ?\u00D7) ;; (ucs-insert #x00D7)× named: علامتِ ضرب ! ("\\%" ?\u007F) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم ! ("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر ! ("=" ?\u003D) ;; (ucs-insert #x003D)= named: علامتِ مساوی ! (">" ?\u003E) ;; (ucs-insert #x003E)> named: علامتِ بزرگتر ! ! ! ;;;;;;;;;;; isiri-6219 Table 2 -- جدول ۲ - علائم نقطه گذاریِ مشترک ! ;;; Space ! ("." ?.) ;; ! (":" ?\u003A) ;; (ucs-insert #x003A): named: ! ("!" ?\u0021) ;; (ucs-insert #x0021)! named: ! ("\\." ?\u2026) ;; (ucs-insert #x2026)… named: ! ("\\-" ?\u2010) ;; (ucs-insert #x2010)‐ named: ! ("-" ?\u002D) ;; (ucs-insert #x002D)- named: ! ("|" ?|) ! ;;("\\\\" ?\) ! ("//" ?/) ! ("*" ?\u002A) ;; (ucs-insert #x002A)* named: ! ("(" ?\u0028) ;; (ucs-insert #x0028)( named: ! (")" ?\u0029) ;; (ucs-insert #x0029)) named: ! ("[" ?\u005B) ;; (ucs-insert #x005B)[ named: ! ("[" ?\u005D) ;; (ucs-insert #x005D)] named: ! ("{" ?\u007B) ;; (ucs-insert #x007B){ named: ! ("}" ?\u007D) ;; (ucs-insert #x007D)} named: ! ("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named: ! ("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named: ! ! ! ;;;;;;;;;;; isiri-6219 Table 3 -- جدول ۳ - علائم نقطه گذاریِ فارسی ! ("," ?،) ;; farsi ! (";" ?؛) ;; ! ("?" ?؟) ;; alamat soal ! ("_" ?ـ) ;; ! ! ;;;;;;;;;;; isiri-6219 Table 1 -- جدول ۱ - نویسه‌های کنترلی ! ;; LF ! ;; CR ! ("‌" ?\u200C) ;; (ucs-insert #x200C)‌ named: فاصله‌ی مجازی ! ("/" ?\u200C) ;; ! ("‍" ?\u200D) ;; (ucs-insert #x200D)‍ named: اتصالِ مجازی ! ("J" ?\u200D) ;; ! ("‎" ?\u200E) ;; (ucs-insert #x200E)‎ named: نشانه‌ی چپ‌به‌راست ! ("‏" ?\u200F) ;; (ucs-insert #x200F)‏ named: نشانه‌ی راست‌به‌چپ ! ("&ls;" ?\u2028) ;; (ucs-insert #x2028)
 named: جداکننده‌ی سطرها ! ("&ps;" ?\u2028) ;; (ucs-insert #x2029)
 named: جداکننده‌ی بندها ! ("&lre;" ?\u202A) ;; (ucs-insert #x202A)‪ named: زیرمتنِ چپ‌به‌راست ! ("&rle;" ?\u202B) ;; (ucs-insert #x202B) named: زیرمتنِ راست‌به‌چپ ! ("&pdf;" ?\u202C) ;; (ucs-insert #x202C) named: پایانِ زیرمتن ! ("&lro;" ?\u202D) ;; (ucs-insert #x202D) named: زیرمتنِ اکیداً چپ‌به‌راست ! ("&rlo;" ?\u202D) ;; (ucs-insert #x202E) named: زیرمتنِ اکیداً راست‌به‌چپ ! ("&bom;" ?\uFEFF) ;; (ucs-insert #xFEFF) named: نشانه‌ی ترتیبِ بایت‌ها ! ! ! ;;;;;;;;;;; isiri-6219 Table 7 -- جدول ۷ - نشانه‌هایِ فارسی ! ("^" ?َ) ;; zbar ;; زبر فارسى ! ("e" ?ِ) ;; zir زير فارسى ! ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر ! ("#" ?ً) ;; دو زبر ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع ! ("~" ?ّ) ;; tashdid ;; تشديد فارسى ! ("@" ?ْ) ;; ساکن فارسى ! ("U" ?\u0653) ;; (ucs-insert #x0653)ٓ named: مدِ فارسی ! ("`" ?ٔ) ;; همزه فارسى بالا ! ("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین ! ("$" ?\u0670) ;; (ucs-insert #x0670)ٰ named: الفِ مقصوره‌ی فارسی ! ! ! ;;;;;;;;;;; isiri-6219 Table 8 - Forbiden Characters -- جدول ۸ - نویسه‌هایِ ممنوع ! ;; ;; he ye (ucs-insert 1728) kills emacs-24.0.90 ! ;; arabic digits 0-9 ! ! ! ;;;;;;; Latin Extensions ! ("\\" ?\\) ;; خط اريب وارو ! ("\\\\" ?\\) ! ("\\~" ?~) ! ("\\@" ?@) ! ("\\#" ?#) ! ("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named: ! ("\\^" ?^) ! ("\\1" ?1) ! ("\\2" ?2) ! ("\\3" ?3) ! ("\\4" ?4) ! ("\\5" ?5) ! ("\\6" ?6) ! ("\\7" ?7) ! ("\\8" ?8) ! ("\\9" ?9) ! ("\\0" ?0) ! ) ;;; persian.el ends here --- 266,296 ---- ("7" ?۷) ("8" ?۸) ("9" ?۹) + ("0" ?۰) ! ("F" ?إ) ! ("G" ?أ) ! ("~" ?ّ) ;; tashdid ;; تشديد فارسى ! ("`" ?ٓ) ! ("e" ?ِ) ;; zir زير فارسى -- فتحه ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر ! ("#" ?ً) ;; ً tanvin nasb ;; دو زبر فارسى -- تنوين نصب ! ("@" ?ْ) ;; ساکن فارسى ! ("^" ?َ) ;; zbar ;; زبر فارسى -- فتحه ! ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع ! ("?" ?؟) ;; alamat soal ! ("&" ?ٔ) ;; همزه فارسى بالا ! ("$" ?ء) ;; hamzeh ! ("%" ?÷) ;; ! ("*" ?×) ;; ! (";" ?؛) ;; ! (",h" ?،) ;; farsi ! (",h" ?,) ;; latin ! ("." ?.) ;; ! ("_" ?ـ) ;; ) + ;;; persian.el ends here --=-=-=-- From unknown Sat Aug 16 17:00:24 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Mohsen BANAN Subject: bug#10966: closed (Re: bug#10966: Fixes for persian/Farsi Input Methods -- leim/quail/persian.el) Message-ID: References: <83ty1yynd8.fsf@gnu.org> X-Gnu-PR-Message: they-closed 10966 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 10966@debbugs.gnu.org Date: Fri, 09 Mar 2012 12:26:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1331295963-5061-1" This is a multi-part message in MIME format... ------------=_1331295963-5061-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #10966: Fixes for persian/Farsi Input Methods -- leim/quail/persian.el which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 10966@debbugs.gnu.org. --=20 10966: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D10966 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1331295963-5061-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 10966-done) by debbugs.gnu.org; 9 Mar 2012 12:25:19 +0000 Received: from localhost ([127.0.0.1]:40139 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S5ysp-0001II-7A for submit@debbugs.gnu.org; Fri, 09 Mar 2012 07:25:19 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]:54938) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S5ysm-0001I4-9S for 10966-done@debbugs.gnu.org; Fri, 09 Mar 2012 07:25:18 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0M0M00400A63TJ00@a-mtaout22.012.net.il> for 10966-done@debbugs.gnu.org; Fri, 09 Mar 2012 14:23:09 +0200 (IST) Received: from HOME-C4E4A596F7 ([84.229.138.42]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0M0M004CHAEKQE50@a-mtaout22.012.net.il>; Fri, 09 Mar 2012 14:23:09 +0200 (IST) Date: Fri, 09 Mar 2012 14:23:15 +0200 From: Eli Zaretskii Subject: Re: bug#10966: Fixes for persian/Farsi Input Methods -- leim/quail/persian.el In-reply-to: X-012-Sender: halo1@inter.net.il To: Mohsen BANAN Message-id: <83ty1yynd8.fsf@gnu.org> References: X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 10966-done Cc: 10966-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > From: Mohsen BANAN > Date: Wed, 07 Mar 2012 15:56:35 -0800 > > Attached are a numbers of bug fixes for > leim/quail/persian.el (emacs 24.0.94) as a context > diff. > > The fixes include: > > - Full compliance to ISIRI-6219. Forbiden > characters were eliminated and missing > characters were added. > > - Layer 3 of ISIRI-9147 is now implemented > with a '\' prefix. > > - Double entry of characters which were > postfixed with 'h' is now supported. > > - Lots of comment and additional pointers have > been added. > > Please apply this context diff. Thanks, I installed this. Please note that the diffs were probably generated from some old copy of the file, not from the one that came with 24.0.94, because the Copyright line did not include 2012. I fixed that. I also fixed a few comments that were way wider than 80 columns, and enclosed the keyboard layout in the comments in a left-to-right override embedding, to prevent reordering by the display engine. After I did that, it turned out the mirrored characters in the layout need to be manually mirrored, so I did that as well. The result is available as bzr revision 107539 on the trunk. I'm closing this bug report. Thank you for your contribution. ------------=_1331295963-5061-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 8 Mar 2012 00:04:41 +0000 Received: from localhost ([127.0.0.1]:38134 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S5QqW-0007C2-2F for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:04:41 -0500 Received: from eggs.gnu.org ([208.118.235.92]:37549) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1S5QnK-00077R-EF for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:01:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S5QmH-0002Pl-Ru for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:00:20 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,BODY_8BITS, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:33479) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S5QmH-0002Ph-OF for submit@debbugs.gnu.org; Wed, 07 Mar 2012 19:00:17 -0500 Received: from eggs.gnu.org ([208.118.235.92]:55873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S5QmA-0007sn-QI for bug-gnu-emacs@gnu.org; Wed, 07 Mar 2012 19:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S5Qm6-0002ON-Ol for bug-gnu-emacs@gnu.org; Wed, 07 Mar 2012 19:00:10 -0500 Received: from plane.gmane.org ([80.91.229.3]:34251) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S5Qm6-0002MH-9V for bug-gnu-emacs@gnu.org; Wed, 07 Mar 2012 19:00:06 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1S5Qm3-0005qW-Ts for bug-gnu-emacs@gnu.org; Thu, 08 Mar 2012 01:00:03 +0100 Received: from 70-90-188-161-cable.librecenter.net ([70.90.188.161]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 08 Mar 2012 01:00:03 +0100 Received: from list-general by 70-90-188-161-cable.librecenter.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 08 Mar 2012 01:00:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Mohsen BANAN Subject: Fixes for persian/Farsi Input Methods -- leim/quail/persian.el Date: Wed, 07 Mar 2012 15:56:35 -0800 Organization: ByStar Federation of Autonomous Libre Services -- http://www.by-star.net Lines: 671 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 70-90-188-161-cable.librecenter.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:wGKRsT99YT9Ve14GLt+FwvNK6do= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Wed, 07 Mar 2012 19:04:28 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) --=-=-= Content-Type: text/plain Attached are a numbers of bug fixes for leim/quail/persian.el (emacs 24.0.94) as a context diff. The fixes include: - Full compliance to ISIRI-6219. Forbiden characters were eliminated and missing characters were added. - Layer 3 of ISIRI-9147 is now implemented with a '\' prefix. - Double entry of characters which were postfixed with 'h' is now supported. - Lots of comment and additional pointers have been added. Please apply this context diff. ...Mohsen --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=persian.el.diff Content-Transfer-Encoding: 8bit Content-Description: Updates to emacs 24.0.94 persian.el *** persian.el 2012-03-06 14:31:46.412341948 -0800 --- /usr/local/share/emacs/24.0.94/leim/quail/persian.el 2012-02-13 08:13:25.000000000 -0800 *************** *** 1,9 **** ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- ! ;; Copyright (C) 2011 Free Software Foundation, Inc. ! ;; Author: Mohsen BANAN ! ;; http://mohsen.1.banan.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard --- 1,9 ---- ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- ! ;; Copyright (C) 2011-2012 Free Software Foundation, Inc. ! ;; Author: Mohsen BANAN ! ;; http://mohsen.banan.1.byname.net/contact ;; Keywords: multilingual, input method, Farsi, Persian, keyboard *************** *** 27,41 **** ;;; Commentary: ;; ;; This file contains a collection of input methods for ! ;; Persian languages (Farsi, Urdu, Pashto/Afghanic, ...) ;; ;; At this time, the following input methods are specified: ;; ! ;; - (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 ! ;; - (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi ! ;; ! ;; Additional documentaion for these inpput methods can be found at: ! ;; http://www.persoarabic.org/PLPC/120036 ;; ;;; Code: --- 27,38 ---- ;;; Commentary: ;; ;; This file contains a collection of input methods for ! ;; Persian languages - Farsi, Urdu, Pashto (Afghani), ... ;; ;; At this time, the following input methods are specified: ;; ! ;; - (farsi) Persian Keyboard based on Islamic Republic of Iran's ISIR-9147 ! ;; - (farsi-translit) Intuitive transliteration keyboard layout for Persian ;; ;;; Code: *************** *** 45,96 **** ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-isiri-9147 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; The keyboard mapping defined here is based on: ;; ! ;; Institute of Standards and Industrial Research of Iran ! ;; Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards ! ;; ISIRI 9147 -- 1st edition ! ;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 ! ;; ! ;; The specification is also republished at ! ;; http://www.farsiweb.ir/wiki/Image:Isiri-9147.pdf ! ;; and various other sites. ! ;; ! ;; ISIRI-6219 is also relevant. ! ;; ! ;; Layers 1, 2 and 3 of ISIRI-9147 are fully implemented with the exception of the Backslash, ! ;; Alt-Backslash, Shift-Space and Alt-Space keys. ! ;; ! ;; The Backslash key is used to replace کلید با دگر ساز راست‌ -- the Alt or ! ;; Meta key. ! ;; ! ;; Layer 3 is then entered with the Backslash key and Layer 3 is implemented as two letter ! ;; keys as specified in ISIRI-9147. ! ;; ! ;; The character corresponding to Backslash is entered with Backslash-Backslash. ! ;; Alt-Backslash has been moved to Backslash-r. ! ;; Alt-Space has been moved to Backslash-t. ! ;; Shift-Space has been moved to Backslash-y. ! ;; ! ;; With these modifications, farsi-isiri-9147 is a full implementation of ISIRI-9147. ! ;; Additionally, these modifications allow for this implementation to be ascii input stream ! ;; based -- in addition to being a keyboard layout. ! ;; ! ;; If a key on Layer 1 was reserved to replace دگر ساز راست‌ (the Alt or ! ;; Meta key), then farsi-isiri-9147 could have claimed full compliance -- without the need for ! ;; the above description. Perhaps this can be considered a flaw in the base ISIRI-9147 ! ;; specification to be addressed in the next revision. ;; (quail-define-package ! "farsi-isiri-9147" "Farsi" " ف" nil "Farsi input method. ! Based on ISIRI-9147 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) ;; +----------------------------------------------------------------+ --- 42,73 ---- ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; The keyboard mapping defined here is based on: ;; ! ;; Institute of Standards and Industrial Research of Iran ! ;; Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards ! ;; ISIRI 9147 -- 1st edition ! ;; http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 ! ;; ! ;; Only layers 1 and 2 of ISIRI-9147 are applicable to emacs. ! ;; ! ;; This input method was built using the Farsi table in X Keyboard Configuration Data Base. ! ;; ! ;; 0) Selected gnome keyboard "USA" ! ;; 1) Created a list of all keys ! ;; 2) Selected gnome keyboard "Iran" ! ;; 3) For each key just press it and get the mapped persian character ;; (quail-define-package ! "farsi" "Farsi" " ف" nil "Farsi input method. ! Based on ISIRI-9149 Layout of Persian Letters and Symbols on Computer Keyboards. " nil t t t t nil nil nil nil nil t) ;; +----------------------------------------------------------------+ *************** *** 98,106 **** ;; +----------------------------------------------------------------+ ;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | ;; +------------------------------------------------------------+ ! ;; | ش‌ؤ | س‌ئ | ی‌ي | ب‌إ | لأ | اآ | ت‌ة | ن» | م« | ک: | گ؛ | \| | ;; +-----------------------------------------------------------+ ! ;; | ظ‌ك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | ;; +-------------------------------------------+ (quail-define-rules --- 75,83 ---- ;; +----------------------------------------------------------------+ ;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج} | چ{ | ;; +------------------------------------------------------------+ ! ;; | شؤ | سئ | یي | بإ | لأ | اآ | تة | ن» | م« | ک: | گ؛ | \| | ;; +-----------------------------------------------------------+ ! ;; | ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و> | .< | /؟ | ;; +-------------------------------------------+ (quail-define-rules *************** *** 116,122 **** ("0" ?۰) ("-" ?-) ("=" ?=) ! ("`" ?\u200D) ;; ZWJ -- ZERO WIDTH JOINER اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) --- 93,99 ---- ("0" ?۰) ("-" ?-) ("=" ?=) ! ;;("`" ?‍\)) ;; اتصال مجازى ("q" ?ض) ("w" ?ص) ("e" ?ث) *************** *** 140,146 **** ("l" ?م) (";" ?ک) ("'" ?گ) ! ("z" ?ظ) ("x" ?ط) ("c" ?ز) --- 117,123 ---- ("l" ?م) (";" ?ک) ("'" ?گ) ! ("\\" ?\\) ;; خط اريب وارو ("z" ?ظ) ("x" ?ط) ("c" ?ز) *************** *** 193,396 **** ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) ! ("B" ?\u200C) ;; ZWNJ -- ZERO WIDTH NON-JOINER فاصلهٔ مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) - - ;; Level 3 Entered with \ - ;; - ("\\" ?\\) ;; خط اريب وارو - ("\\\\" ?\\) - ("\\~" ?\u007E) - ("\\1" ?\u0060) - ("\\2" ?\u0040) - ("\\3" ?\u0023) - ("\\4" ?\u0024) - ("\\5" ?\u0025) - ("\\6" ?\u005E) - ("\\7" ?\u0026) - ("\\8" ?\u2022) - ("\\9" ?\u200E) - ("\\0" ?\u200F) - ("\\-" ?\u005F) - ("\\+" ?\u2212) - ("\\q" ?\u00B0) - ;;\\w" ?\u0000) - ("\\e" ?\u20AC) - ("\\r" ?\u2010) ;; replacement for Alt-BSL - ("\\t" ?\u00A0) ;; replacement for ALT-SPC - ("\\y" ?\u200C) ;; replacement for SHIFT-SPC - ;;("\\u" ?\u0000) - ("\\i" ?\u202D) - ("\\o" ?\u202E) - ("\\p" ?\u202C) - ("\\[" ?\u202A) - ("\\]" ?\u202B) - ;;("\\a" ?\u0000) - ;;("\\s" ?\u0000) - ("\\d" ?\u0649) - ;;("\\f" ?\u0000) - ;;("\\g" ?\u0000) - ("\\h" ?\u0671) - ;;("\\j" ?\u0000) - ("\\k" ?\uFD3E) - ("\\l" ?\uFD3F) - ("\\;" ?\u003B) - ("\\'" ?\u0022) - ;;("\\z" ?\u0000) - ;;("\\x" ?\u0000) - ;;("\\c" ?\u0000) - ("\\v" ?\u0656) - ("\\b" ?\u200D) - ("\\n" ?\u0655) - ("\\m" ?\u2026) - ("\\," ?\u002C) - ("\\." ?\u0027) - ("\\?" ?\u003F) - ;;("\\\\" ?\u2010) ;; Moved to backslash r to leave room for BSL-BSL ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-transliterate-banan ! ;; ! ;; Given a Qwerty keyboard, use Persian-to-Latin transliteration knowledge ! ;; to reverse transliterate in persian ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ! ;;; See http://www.persoarabic.org/PLPC/120036 document for more complete ! ;;; documentation of keyboard bindings and usage instructions. ;;; ! ;; ! ;; ISIRI-9147 Persian keyboard is generally not well suited for Iranian-Expatriates ! ;; working/living in the West. ! ;; ! ;; The qwetry keyboard is usually second nature to Persian speaking expatriates and they ! ;; don't want to learn/adapt to ISIRI-9147. They expect software to adapt to them. ! ;; ! ;; That is what the ``Banan Multi-Character (Reverse) Transliteration Persian Input Method'' does. ! ;; ! ;; The typical profile of the user is assumed to be one who: ! ;; ! ;; - can write in farsi (not just speak it). ! ;; - is fully comfortable with a qwerty latin keyboard. ! ;; - is not familiar with isir-9147 and does not wish to be trained. ! ;; - communicatates and writes in a mixed globish/persian -- not pure persian. ! ;; - is intuitively familiar with transliteration of farsi/persian into latin based on two letter ! ;; phonetic mapping to persian characters (e.g., gh ق -- kh خ -- sh ش -- ch چ -- zh ژ. ! ;; ! ;; This transliteration keyboard is designed to be intuitive such that ! ;; mapping are easy and natural to remember for a persian writer. ! ;; It is designed to be equivalent in capability to farsi-isiri-9147 ! ;; and provide for inputing all characters enumerated in ISIRI-6219. ! ;; ! ;; farsi-transliterate-banan is of course phonetic oriented. But it is very different from ! ;; pinglish. Pinglish is word oriented where you sound out the word with latin letters -- ! ;; incuding the vowels. farsi-transliterate-banan is letter oriented where you enter the ! ;; latin letter/letters closest to the persian letter. And usually omit vowels. ! ;; ! ;; For some persian characters there are multiple ways of inputing ! ;; the same character. For example both ``i'' and ``y'' produce ی. ! ;; For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural. ! ;; ! ;; The more frequently used keys are mapped to lower case. The less frequently used letter moves to ! ;; upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ح and ``H'' ! ;; is ه. ! ;; ! ;; Multi-character input is based on \, &, and / prefix ! ;; characters. The letter 'h' is used as a postfix for the following two character mappings: ! ;; gh ق -- kh خ -- sh ش -- ch چ -- zh ژ -- Th ة -- Yh ى. ! ;; ! ;; ! ;; Prefix letter \ is used for two character inputs when an alternate form of a letter ! ;; is desired for exampe \% is: ‌÷ when % is: ٪. ! ;; ! ;; Prefix letter & is used for multi-character inputs when special characters are ! ;; desired based on their abbreviate name. For example you can enter ‎ to enter the ! ;; ``LEFT-TO-RIGHT MARK'' character. ! ;; ! ;; Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER'' ! ;; and // is /. ! ;; ! ;; The letter 'h' is used in a number of two character postfix mappings, ! ;; for example ``sh'' ش. So if you need the sequence of ``s'' and ``h'' you ! ;; need to repeat the ``s''. For example: سحر = 's' 's' 'h' 'r'. ! ;; (quail-define-package ! "farsi-transliterate-banan" "Farsi" "ب" t "Intuitive transliteration keyboard layout for persian/farsi. " nil t t t t nil nil nil nil nil t) (quail-define-rules ! ;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی ! ("W" ?ء) ;; hamzeh ! ("A" ?آ) ;; U+0622 & ARABIC LETTER ALEF WITH MADDA ABOVE & الف با کلاه ! ("a" ?ا) ;; U+0627 & ARABIC LETTER ALEF & الف ! ("\\a" ?أ) ! ("b" ?ب) ;; U+0628 & ARABIC LETTER BEH & ! ("p" ?پ) ;; U+067e & ARABIC LETTER PEH & ("t" ?ت) - ("tt" ?ت) ("c" ?ث) - ("cc" ?ث) ("j" ?ج) ("ch" ?چ) ! ("h" ?ح) ("kh" ?خ) ("d" ?د) ("Z" ?ذ) ("r" ?ر) ("z" ?ز) - ("zz" ?ز) ("zh" ?ژ) ("s" ?س) - ("ss" ?س) ("sh" ?ش) ("S" ?ص) ("x" ?ض) ("T" ?ط) - ("TT" ?ط) ("X" ?ظ) ("w" ?ع) ! ("q" ?غ) ("f" ?ف) ! ("Q" ?ق) ("gh" ?ق) ("k" ?ک) ! ("kk" ?ک) ("g" ?گ) - ("gg" ?گ) ("l" ?ل) ("m" ?م) ("n" ?ن) ("v" ?و) - ("u" ?و) ("V" ?ؤ) ("H" ?ه) ! ("y" ?ی) ! ("i" ?ی) ("I" ?ئ) - - ;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی - ("F" ?إ) - ("D" ?\u0671) ;; (ucs-insert #x0671)ٱ named: حرفِ الفِ وصل - ("K" ?ك) ;; Arabic kaf - ("Th" ?ة) ;; ta marbuteh - ("Y" ?ي) - ("YY" ?ي) - ("Yh" ?ى) - - ;;;;;;;;;;; isiri-6219 Table 4 -- جدول ۴ - ارقام و علائم ریاضی - ("0" ?۰) ("1" ?۱) ("2" ?۲) ("3" ?۳) --- 170,262 ---- ("X" ?ٓ) ("C" ?ژ) ("V" ?ٰ) ! ;; ("B" ?‌‌) ;; فاصلهً مجازى ("N" ?ٔ) ;; همزه فارسى بالا ("M" ?ء) ;; harf farsi hamzeh ("<" ?>) (">" ?<) ("?" ?؟) ) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ! ;; farsi-translit ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ! ;;; This is a persian/farsi transliteration keyboard designed ! ;;; for people who: ! ;;; - Know how to write in farsi ! ;;; - Are comfortable with the qwerty keyboard ! ;;; - Are familiar with two letter phonetic mapping to persian characters ! ;;; (e.g.: gh, kh, ch, sh, zh, hh, lh) ;;; ! ;;; This translit keyboard is designed to be intuitive such that ! ;;; mapping are easy and natural to remember for a persian writer. ! ;;; For some persian characters there are multiple ways of inputting ! ;;; the same character. ! ;;; ! ;;; The letter 'h' is used for a number of two character mappings, ! ;;; this means that some character sequence inputs need to be repeated ! ;;; followed by a backspace followed by the 'h'. ! ;;; For example: سحر = 's' 's' '' 'h' 'h' 'r' ! ;;; In practice such sequences are rare. ! ;;; ! (quail-define-package ! "farsi-translit" "Farsi" "پ" t "Intuitive transliteration keyboard layout for persian/farsi. " nil t t t t nil nil nil nil nil t) (quail-define-rules ! ("a" ?ا) ! ("A" ?آ) ;; alef madde ! ("b" ?ب) ! ("p" ?پ) ("t" ?ت) ("c" ?ث) ("j" ?ج) ("ch" ?چ) ! ("hh" ?ح) ("kh" ?خ) ("d" ?د) ("Z" ?ذ) ("r" ?ر) ("z" ?ز) ("zh" ?ژ) ("s" ?س) ("sh" ?ش) ("S" ?ص) ("x" ?ض) ("T" ?ط) ("X" ?ظ) ("w" ?ع) ! ("Q" ?غ) ("f" ?ف) ! ("q" ?ق) ("gh" ?ق) ("k" ?ک) ! ("K" ?ك) ;; Arabic kaf ("g" ?گ) ("l" ?ل) + ("lh" ?ﻻ) ("m" ?م) ("n" ?ن) ("v" ?و) ("V" ?ؤ) + ("u" ?و) ("H" ?ه) ! ("h" ?ه) ! ("th" ?ة) ;; ta marbuteh ! ("yh" ?ۀ) ;; he ye ! ("y" ?ى) ! ("i" ?ي) ("I" ?ئ) ("1" ?۱) ("2" ?۲) ("3" ?۳) *************** *** 400,505 **** ("7" ?۷) ("8" ?۸) ("9" ?۹) ! ("\\/" ?\u066B) ;; (ucs-insert #x066B)٫ named: ممیزِ فارسی ! ("\\," ?\u066C) ;; (ucs-insert #x066C)٬ named: جداکننده‌ی هزارهای فارسی ! ("%" ?\u066A) ;; (ucs-insert #x066A)٪ named: درصدِ فارسی ! ("+" ?\u002B) ;; (ucs-insert #x002B)+ named: علامتِ به‌اضافه ! ("-" ?\u2212) ;; (ucs-insert #x2212)− named: علامتِ منها ! ("\\*" ?\u00D7) ;; (ucs-insert #x00D7)× named: علامتِ ضرب ! ("\\%" ?\u007F) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم ! ("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر ! ("=" ?\u003D) ;; (ucs-insert #x003D)= named: علامتِ مساوی ! (">" ?\u003E) ;; (ucs-insert #x003E)> named: علامتِ بزرگتر ! ! ! ;;;;;;;;;;; isiri-6219 Table 2 -- جدول ۲ - علائم نقطه گذاریِ مشترک ! ;;; Space ! ("." ?.) ;; ! (":" ?\u003A) ;; (ucs-insert #x003A): named: ! ("!" ?\u0021) ;; (ucs-insert #x0021)! named: ! ("\\." ?\u2026) ;; (ucs-insert #x2026)… named: ! ("\\-" ?\u2010) ;; (ucs-insert #x2010)‐ named: ! ("-" ?\u002D) ;; (ucs-insert #x002D)- named: ! ("|" ?|) ! ;;("\\\\" ?\) ! ("//" ?/) ! ("*" ?\u002A) ;; (ucs-insert #x002A)* named: ! ("(" ?\u0028) ;; (ucs-insert #x0028)( named: ! (")" ?\u0029) ;; (ucs-insert #x0029)) named: ! ("[" ?\u005B) ;; (ucs-insert #x005B)[ named: ! ("[" ?\u005D) ;; (ucs-insert #x005D)] named: ! ("{" ?\u007B) ;; (ucs-insert #x007B){ named: ! ("}" ?\u007D) ;; (ucs-insert #x007D)} named: ! ("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named: ! ("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named: ! ! ! ;;;;;;;;;;; isiri-6219 Table 3 -- جدول ۳ - علائم نقطه گذاریِ فارسی ! ("," ?،) ;; farsi ! (";" ?؛) ;; ! ("?" ?؟) ;; alamat soal ! ("_" ?ـ) ;; ! ! ;;;;;;;;;;; isiri-6219 Table 1 -- جدول ۱ - نویسه‌های کنترلی ! ;; LF ! ;; CR ! ("‌" ?\u200C) ;; (ucs-insert #x200C)‌ named: فاصله‌ی مجازی ! ("/" ?\u200C) ;; ! ("‍" ?\u200D) ;; (ucs-insert #x200D)‍ named: اتصالِ مجازی ! ("J" ?\u200D) ;; ! ("‎" ?\u200E) ;; (ucs-insert #x200E)‎ named: نشانه‌ی چپ‌به‌راست ! ("‏" ?\u200F) ;; (ucs-insert #x200F)‏ named: نشانه‌ی راست‌به‌چپ ! ("&ls;" ?\u2028) ;; (ucs-insert #x2028)
 named: جداکننده‌ی سطرها ! ("&ps;" ?\u2028) ;; (ucs-insert #x2029)
 named: جداکننده‌ی بندها ! ("&lre;" ?\u202A) ;; (ucs-insert #x202A)‪ named: زیرمتنِ چپ‌به‌راست ! ("&rle;" ?\u202B) ;; (ucs-insert #x202B) named: زیرمتنِ راست‌به‌چپ ! ("&pdf;" ?\u202C) ;; (ucs-insert #x202C) named: پایانِ زیرمتن ! ("&lro;" ?\u202D) ;; (ucs-insert #x202D) named: زیرمتنِ اکیداً چپ‌به‌راست ! ("&rlo;" ?\u202D) ;; (ucs-insert #x202E) named: زیرمتنِ اکیداً راست‌به‌چپ ! ("&bom;" ?\uFEFF) ;; (ucs-insert #xFEFF) named: نشانه‌ی ترتیبِ بایت‌ها ! ! ! ;;;;;;;;;;; isiri-6219 Table 7 -- جدول ۷ - نشانه‌هایِ فارسی ! ("^" ?َ) ;; zbar ;; زبر فارسى ! ("e" ?ِ) ;; zir زير فارسى ! ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر ! ("#" ?ً) ;; دو زبر ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع ! ("~" ?ّ) ;; tashdid ;; تشديد فارسى ! ("@" ?ْ) ;; ساکن فارسى ! ("U" ?\u0653) ;; (ucs-insert #x0653)ٓ named: مدِ فارسی ! ("`" ?ٔ) ;; همزه فارسى بالا ! ("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین ! ("$" ?\u0670) ;; (ucs-insert #x0670)ٰ named: الفِ مقصوره‌ی فارسی ! ! ! ;;;;;;;;;;; isiri-6219 Table 8 - Forbiden Characters -- جدول ۸ - نویسه‌هایِ ممنوع ! ;; ;; he ye (ucs-insert 1728) kills emacs-24.0.90 ! ;; arabic digits 0-9 ! ! ! ;;;;;;; Latin Extensions ! ("\\" ?\\) ;; خط اريب وارو ! ("\\\\" ?\\) ! ("\\~" ?~) ! ("\\@" ?@) ! ("\\#" ?#) ! ("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named: ! ("\\^" ?^) ! ("\\1" ?1) ! ("\\2" ?2) ! ("\\3" ?3) ! ("\\4" ?4) ! ("\\5" ?5) ! ("\\6" ?6) ! ("\\7" ?7) ! ("\\8" ?8) ! ("\\9" ?9) ! ("\\0" ?0) ! ) ;;; persian.el ends here --- 266,296 ---- ("7" ?۷) ("8" ?۸) ("9" ?۹) + ("0" ?۰) ! ("F" ?إ) ! ("G" ?أ) ! ("~" ?ّ) ;; tashdid ;; تشديد فارسى ! ("`" ?ٓ) ! ("e" ?ِ) ;; zir زير فارسى -- فتحه ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر ! ("#" ?ً) ;; ً tanvin nasb ;; دو زبر فارسى -- تنوين نصب ! ("@" ?ْ) ;; ساکن فارسى ! ("^" ?َ) ;; zbar ;; زبر فارسى -- فتحه ! ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع ! ("?" ?؟) ;; alamat soal ! ("&" ?ٔ) ;; همزه فارسى بالا ! ("$" ?ء) ;; hamzeh ! ("%" ?÷) ;; ! ("*" ?×) ;; ! (";" ?؛) ;; ! (",h" ?،) ;; farsi ! (",h" ?,) ;; latin ! ("." ?.) ;; ! ("_" ?ـ) ;; ) + ;;; persian.el ends here --=-=-=-- ------------=_1331295963-5061-1--