summaryrefslogblamecommitdiffstats
path: root/2021/talks/bidi.md
blob: 7bff4e8f90e4877ca179158f8bb040e8d1f0e036 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                                                





                                                                                 
                                                
                                  
 
                                                                         
                                                                                
                       








                                                  
                                                  
                                      

                                                
                                                  
                                   



                                                 

                                                        




                                                
    

                             
                                                                    


                                                                            
    




                                                         


                                                                               
    

                                                                      
    


                                                               
    
                                                          
    

                                         

                                                         

                                            
                                                                                    

           
 
                            



                                                                                   
                                                                              
                                                                       


                                                                           

                                                                                            


                                     
                                                                                    
                                                  
                                                                                                   
                                                        

                                                                                    
                                                                                       

                                        


                                                         
 


                                                               
[[!meta title="Perso-Arabic Input Methods And BIDI Aware Apps"]]
[[!meta copyright="Copyright © 2021 Mohsen BANAN"]]
[[!inline pages="internal(2021/info/bidi-nav)" raw="yes"]]

<!-- You can manually edit this file to update the abstract, add links, etc. --->


# Perso-Arabic Input Methods And BIDI Aware Apps
Mohsen BANAN --  محسن بنان

Emacs is a multilingual user environment. A true multilingual editor must
support bidirectionality and shaping of characters. Perso-Arabic scripts require
both of these features.

Starting with Emacs 24, full native bidi
(bidirectional) support became available.  For
many years prior to that Unicode support was
available and by around year 2000, reasonable
open-source shaping libraries were also available.

With these in place at around 2012, I developed
two Persian input methods for emacs. These input
methods or variations of them can also be used for
Arabic and other Perso-Arabic scripts.

With all of these in place, Emacs has now become
the ne plus ultra Libre-Halaal and Convivial usage
environment for Perso-Arabic users.

Since emacs comes loaded with everything (Gnus
for email, Bbdb for address books, XeLaTeX modes
for typesetting, org-mode for organization, spell
checkers, completion systems, calendar, etc.), all basic
computing and communication needs of Perso-Arabic
users can be addressed in one place and
cohesively.

In this talk I will demonstrate what a wonderful
environment that can be.
    
My talk will be in two parts.
    
In Part 1, I cover Persian input methods. With an emphasis on "Banan
Multi-Character (Reverse) Transliteration Persian Input Method". The
software is part of base emacs distribution. Full documentation is available
at:
    
           Persian Input Methods
           For Emacs And More Broadly Speaking
           شیوه‌هایِ درج به فارسی‌
           <http://mohsen.1.banan.byname.net/PLPC/120036>
    
In Part 2, I'll demonstrate that Emacs is far more than an editor. Emacs can be
a complete Perso-Arabic usage environment. I will also cover the ramifications
of bidi on existing emacs applications, including:
    
-   Spell Checking, Dictionaries And Completion Frameworks:
    - Existing emacs facilities can be extended to cover Perso-Arabic.
    
-   Gnus:
    -   Perso-Arabic rich email sending in HTML.
    -   Ramifications of bidi on from:, to: and subject: lines.
    
-   Bbdb: Ramifications of bidi on display and completion.
    
-   Calendar:
    -   Ramifications of bidi on display.
    -   Use of Persian text for Persian (solar) calendar.
    -   Use of Arabic text for Muslem (lunar)  calendar.
    
-   AUCTeX: Persian typesetting with XeLaTeX
    -   Option of having right-to-left  Perso-Arabic aliases for all latex commands.

References:

    - Persian Input Methods:
      <http://mohsen.1.banan.byname.net/PLPC/120036>
      <http://www.persoarabic.org/PLPC/120036> -- Persian Input Methods Access Page
      <http://www.persoarabic.org> -- Various Perso-Arabic resources
      <http://www.freeprotocols.org/Repub/fpf-isiri-6219> -- Re-Publication Of 
          Persian Information Interchange and Display Mechanism, using Unicode
      <https://github.com/bx-blee/persian-input-method> -- Git repo for
          persian.el -- Quail package for inputting Persian/Farsi keyboards
      
    - BIDI:
      <http://www.unicode.org/reports/tr9/> -- Annex #9 of the Unicode standard
      <https://www.gnu.org/software/emacs/manual/html_node/elisp/Bidirectional-Display.html>
          Emacs Bidirectional Display
          
    - Blee and Persian-Blee:
      <https://github.com/bx-blee/env2> -- Very messy work-in-progress git repo for:
          Blee: By* Libre-Halaal Emacs Environment
      <http://www.by-star.net> -- A Moral Alternative To The Proprietary American Digital Ecosystem
      <http://mohsen.1.banan.byname.net/PLPC/120033> -- 
            Nature of Polyexistentials: 
            Basis for Abolishment of The Western Intellectual Property Rights Regime
      <http://mohsen.1.banan.byname.net/PLPC/120039> -- Defining The Libre-Halaal Label
          
    - Mohsen BANAN -- محسن بنان:
      <http://mohsen.1.banan.byname.net/> -- Globish
      <http://mohsen.1.banan.byname.net/persian> -- Farsi
      <http://mohsen.1.banan.byname.net/french> -- French

[[!inline pages="internal(2021/info/bidi-schedule)" raw="yes"]]

[[!inline pages="internal(2021/info/bidi-nav)" raw="yes"]]