EmacsConf 2021: Perso-Arabic Input Methods And Making More Emacs Apps BIDI Aware - Mohsen BANAN
Channel: EmacsConf and Emacs hangouts
Date: 2021-11-28

You can view this and other resources using free/libre source software at https://emacsconf.org/2021/talks/bidi/

This video is available under the terms of the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

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