From c1ecc4e67977b43cc418f151d845538fd0f197d1 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 28 Nov 2021 14:06:20 -0500 Subject: Update --- ...acs-apps-bidi-aware--mohsen-banan--chapters.vtt | 55 + ...e-emacs-apps-bidi-aware--mohsen-banan--main.vtt | 1093 ++++++++++++++++++++ 2021/info/bidi-schedule.md | 10 +- 2021/info/test-schedule.md | 2 +- 2021/schedule-details.md | 4 +- 5 files changed, 1158 insertions(+), 6 deletions(-) create mode 100644 2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--chapters.vtt create mode 100644 2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--main.vtt diff --git a/2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--chapters.vtt b/2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--chapters.vtt new file mode 100644 index 00000000..40c8b472 --- /dev/null +++ b/2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--chapters.vtt @@ -0,0 +1,55 @@ +WEBVTT + +00:00:02.960 --> 00:00:58.319 +Introduction + +00:00:58.320 --> 00:01:57.679 +Contours of this presentation + +00:01:57.680 --> 00:02:27.359 +Intended audience + +00:02:27.360 --> 00:04:32.079 +Shaping and bidirectionality + +00:04:32.080 --> 00:05:30.638 +Emacs: a truly multilingual capable editor and environment + +00:05:30.639 --> 00:06:09.918 +Significance of Emacs support for Perso-Arabic scripts + +00:06:09.919 --> 00:06:49.918 +About Emacs input methods + +00:06:49.919 --> 00:07:27.839 +Emacs Persian input methods + +00:07:27.840 --> 00:12:00.159 +Selecting Persian input methods - gif-screencast + +00:12:00.160 --> 00:12:27.999 +Emacs built-in documentation + +00:12:28.000 --> 00:12:43.999 +Pointers to code + +00:12:44.000 --> 00:14:48.958 +Keyboard layouts for Persian input methods - gif-screencast + +00:14:48.959 --> 00:16:17.518 +Complete documentation + +00:16:17.519 --> 00:17:25.279 +Ramification Of BIDI and Perso-Arabic on Emacs applications + +00:17:25.280 --> 00:17:53.519 +BIDI-aware Emacs applications + +00:17:53.520 --> 00:18:44.639 +Emacs Native Markup Language (ENML) + +00:18:44.640 --> 00:19:24.239 +About ByStar And BISOS + +00:19:24.240 --> 00:19:25.240 +About Blee and Persian Blee diff --git a/2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--main.vtt b/2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--main.vtt new file mode 100644 index 00000000..2a7f0863 --- /dev/null +++ b/2021/captions/emacsconf-2021-bidi--perso-arabic-input-methods-and-making-more-emacs-apps-bidi-aware--mohsen-banan--main.vtt @@ -0,0 +1,1093 @@ +WEBVTT + +00:02.960 --> 00:00:10.240 +Greetings. Salaam. This is Mohsen Banan. + +00:00:10.240 --> 00:00:14.080 +I am an Iranian software and internet engineer. + +00:14.080 --> 00:17.199 +I converted to Emacs in 1986. + +00:17.199 --> 00:20.480 +It was Emacs version 17 then. + +00:20.480 --> 00:00:23.920 +By around 1988, when Emacs version 18 + +00:00:23.920 --> 00:00:25.680 +was well in place, + +00:00:25.680 --> 00:00:28.960 +I started living inside of Emacs. + +00:00:28.960 --> 00:00:31.119 +My primary digital environment + +00:00:31.119 --> 00:00:33.680 +has been Emacs ever since. + +00:33.680 --> 00:36.559 +It has been a good life. + +00:36.559 --> 00:40.000 +I'm a native Farsi speaker and writer. + +00:40.000 --> 00:00:41.520 +I'm not a linguist, + +00:00:41.520 --> 00:00:43.800 +and I do not specialize in + +00:43.800 --> 00:46.719 +multilingualization, internationalization, + +00:46.719 --> 00:48.879 +and localization. + +00:48.879 --> 00:52.239 +My favorite programming language is Lisp, + +00:52.239 --> 00:00:58.319 +and I am a bit of an Emacs developer. + +00:58.320 --> 01:00.719 +This presentation is about use of + +01:00.719 --> 01:04.000 +Perso-Arabic Scripts with Emacs. + +01:04.000 --> 01:06.720 +It's an overview presentation. + +01:06.720 --> 00:01:08.320 +I won't be digging deep + +00:01:08.320 --> 00:01:11.360 +in many of the mentioned topics. + +01:11.360 --> 00:01:13.119 +My goal is to make you aware + +00:01:13.119 --> 00:01:16.159 +of what can be done with Emacs today, + +01:16.159 --> 01:19.280 +and the potentials that Emacs presents + +01:19.280 --> 01:22.640 +for Perso-Arabic writers. + +01:22.640 --> 01:25.759 +The main topics that i'll cover are: + +01:25.759 --> 00:01:30.320 +- a brief introduction to Perso-Arabic scripts + +01:30.320 --> 01:35.119 +- two existing Emacs Persian input methods + +01:35.119 --> 00:01:36.960 +- the challenges involved with + +00:01:36.960 --> 00:01:42.960 +making Emacs applications bidirectional-aware + +01:42.960 --> 00:01:45.280 +- the ultimate goal of creating + +00:01:45.280 --> 00:01:47.759 +a complete digital environment + +00:01:47.759 --> 00:01:51.200 +for Perso-Arabic writers + +01:51.200 --> 00:01:57.679 +I'll also be including various pointers. + +01:57.680 --> 00:02:00.320 +So first, let's make sure + +00:02:00.320 --> 00:02:02.079 +that what I'm presenting + +00:02:02.079 --> 00:02:04.560 +is of interest to you. + +02:04.560 --> 00:02:07.040 +if you are a Perso-Arabic writer + +00:02:07.040 --> 00:02:08.879 +and if you use Emacs, + +00:02:08.879 --> 00:02:12.720 +you're definitely my intended audience. + +02:12.720 --> 00:02:15.120 +If you're an Emacs developer + +00:02:15.120 --> 00:02:19.120 +who wishes to make her Emacs apps + +02:19.120 --> 00:02:22.000 +multilingual and bidi-aware, + +00:02:22.000 --> 00:02:27.359 +you're also my intended audience. + +02:27.360 --> 00:02:30.480 +For the purposes of this presentation, + +00:02:30.480 --> 00:02:34.160 +in this slide, I'm categorizing scripts + +02:34.160 --> 02:39.040 +based on directionality and shaping. + +02:39.040 --> 00:02:41.280 +Latin letters are not shaped. + +00:02:41.280 --> 00:02:43.120 +Generally speaking, + +00:02:43.120 --> 00:02:44.800 +the shape of a Latin letter + +00:02:44.800 --> 00:02:49.599 +is independent of its position in a word. + +02:49.599 --> 00:02:53.280 +Perso-Arabic letters are subject to shaping. + +02:53.280 --> 02:56.319 +For example the letter mim-- + +02:56.319 --> 02:58.800 +sounding similar to M-- + +02:58.800 --> 03:01.840 +takes three shapes depending on whether + +03:01.840 --> 03:04.720 +it is in the beginning of a word, + +03:04.720 --> 00:03:06.480 +in the middle of a word, + +00:03:06.480 --> 00:03:09.200 +or at the end of a word. + +03:09.200 --> 00:03:12.159 +I'll be showing more of how shaping works + +00:03:12.159 --> 00:03:16.400 +in an Emacs session screencast later. + +03:16.400 --> 00:03:18.159 +Shaping has ramifications + +00:03:18.159 --> 00:03:21.040 +for Emacs application developers. + +03:21.040 --> 00:03:23.760 +For example, if you are combining + +00:03:23.760 --> 00:03:26.720 +initial letters to create a label, + +03:26.720 --> 03:29.680 +those letters can be shaped together-- + +03:29.680 --> 03:31.760 +which is not what you want. + +03:31.760 --> 03:34.000 +In such cases, you would need to + +03:34.000 --> 03:37.840 +explicitly keep them separate. + +03:37.840 --> 00:03:40.799 +Latin-based scripts are always + +00:03:40.799 --> 00:03:42.560 +left-to-right. + +03:42.560 --> 00:03:46.560 +Perso-Arabic scripts are right-to-left + +03:46.560 --> 00:03:51.040 +with letters, but numbers are left-to-right. + +03:51.040 --> 00:03:53.040 +So, Perso-Arabic scripts + +00:03:53.040 --> 00:03:56.319 +are bi-directional (BIDI). + +03:56.319 --> 00:03:58.879 +Hebrew is also bi-directional, + +00:03:58.879 --> 00:04:02.159 +but Hebrew is not shaped. + +04:02.159 --> 00:04:05.680 +More recently, it has become very common + +00:04:05.680 --> 00:04:10.400 +to mix Perso-Arabic and Latin text. + +04:10.400 --> 00:04:12.560 +This can become very confusing + +00:04:12.560 --> 00:04:14.959 +if paragraph directionality + +00:04:14.959 --> 00:04:17.759 +is not properly observed. + +04:17.759 --> 00:04:20.000 +I'll be providing some examples + +00:04:20.000 --> 00:04:23.120 +as screencasts. + +04:23.120 --> 00:04:24.880 +The Emacs display engine + +00:04:24.880 --> 00:04:27.280 +now fully and well supports + +00:04:27.280 --> 00:04:32.079 +both shaping and BIDI. + +04:32.080 --> 00:04:37.120 +Since 2012, starting with Emacs version 24, + +04:37.120 --> 00:04:38.639 +we can say that Emacs + +00:04:38.639 --> 00:04:43.600 +is a truly multilingual-capable environment. + +04:43.600 --> 00:04:45.040 +Like everything else, + +00:04:45.040 --> 00:04:46.880 +multilingual support for Emacs + +00:04:46.880 --> 00:04:49.280 +was added gradually. + +04:49.280 --> 04:52.560 +Unicode support was added early on. + +04:52.560 --> 04:55.520 +The framework for input methods evolved + +04:55.520 --> 00:05:00.320 +in the 1990s. But it was not till version 24 + +00:05:00.320 --> 00:05:03.360 +in 2012 that the display engine + +00:05:03.360 --> 00:05:06.240 +could fully support BIDI. + +05:06.240 --> 00:05:08.800 +Hats off to Eli Zaretskii + +00:05:08.800 --> 00:05:12.960 +for his work on Emacs BIDI. + +05:12.960 --> 00:05:15.600 +Once full BIDI support was in place + +00:05:15.600 --> 00:05:19.199 +in 2012, I went ahead and added + +00:05:19.199 --> 00:05:24.000 +two Persian input methods to Emacs 24. + +05:24.000 --> 00:05:26.400 +So now Emacs fully supports + +00:05:26.400 --> 00:05:30.638 +Perso-Arabic scripts. + +05:30.639 --> 00:05:34.080 +By Perso-Arabic script, we're referring to + +00:05:34.080 --> 00:05:36.320 +the Arabic writing system + +05:36.320 --> 00:05:38.160 +with various extensions + +00:05:38.160 --> 00:05:42.240 +used by a large number of languages. + +05:42.240 --> 00:05:44.479 +Perso-Arabic is the second most + +00:05:44.479 --> 00:05:47.520 +widely used writing system in the world + +05:47.520 --> 05:50.479 +by the number of countries. + +05:50.479 --> 05:54.000 +It is the third by the number of users + +05:54.000 --> 05:59.039 +after the Latin and Chinese scripts. + +05:59.039 --> 06:02.160 +So, by well supporting Perso-Arabic, + +06:02.160 --> 00:06:04.720 +Emacs's potential user base + +00:06:04.720 --> 00:06:09.918 +can be greatly enhanced. + +06:09.919 --> 00:06:12.960 +Before focusing on the Persian input methods, + +00:06:12.960 --> 00:06:14.960 +let me quickly summarize + +00:06:14.960 --> 00:06:18.319 +Emacs's input methods model. + +06:18.319 --> 00:06:21.360 +Input methods allow you to enter characters + +00:06:21.360 --> 00:06:25.120 +that are not supported by your keyboard. + +06:25.120 --> 00:06:29.280 +With Quail maps, we can map ASCII key strings + +00:06:29.280 --> 00:06:31.919 +to multilingual characters. + +06:31.919 --> 00:06:34.080 +So we can input any text + +00:06:34.080 --> 00:06:36.960 +from an ASCII keyboard. + +06:36.960 --> 00:06:38.960 +You select an input method + +00:06:38.960 --> 00:06:44.400 +with C-x RET C-\ . + +06:44.400 --> 00:06:49.918 +We'll try that in a screencast shortly. + +06:49.919 --> 00:06:53.919 +Since version 24, Emacs comes loaded with + +00:06:53.919 --> 00:06:56.880 +two Persian input methods: + +06:56.880 --> 00:07:01.520 +farsi-isiri-9147 is the standard + +00:07:01.520 --> 00:07:04.960 +traditional Iranian keyboard. + +07:04.960 --> 00:07:09.199 +farsi-transliterate-banan is an intuitive + +00:07:09.199 --> 00:07:12.319 +transliteration keyboard for Farsi + +00:07:12.319 --> 00:07:16.960 +which requires near-zero training for use. + +07:16.960 --> 00:07:18.960 +I'll be mostly focused on + +00:07:18.960 --> 00:07:21.520 +farsi-transliterate-banan + +00:07:21.520 --> 00:07:23.919 +in this presentation. + +07:23.919 --> 00:07:27.839 +So let's try this out. + +07:27.840 --> 07:30.319 +In this gif-cast, we're going to select + +07:30.319 --> 00:07:32.240 +a Persian input method + +00:07:32.240 --> 00:07:35.280 +and write a few simple sentences. + +07:35.280 --> 07:38.160 +With no training and no documentation, + +07:38.160 --> 00:07:41.360 +any Farsi writer familiar with Emacs + +00:07:41.360 --> 00:07:45.440 +can write these, as farsi-transliterate-banan + +00:07:45.440 --> 00:07:48.560 +input method is intuitive. + +07:48.560 --> 00:07:50.400 +I'll be using keycast + +00:07:50.400 --> 00:07:54.160 +to show you keys as they are used. + +07:54.160 --> 07:56.560 +Let me first describe as to what we have + +07:56.560 --> 07:58.720 +on the screen. + +07:58.720 --> 08:01.520 +There are three windows in one frame. + +08:01.520 --> 00:08:04.639 +Keycast will show commands and keys + +00:08:04.639 --> 00:08:06.319 +on the mode line. + +08:06.319 --> 00:08:08.639 +The leftmost window is showing + +00:08:08.639 --> 00:08:10.879 +logs of keycast. + +08:10.879 --> 08:14.639 +Transformed individual unshaped letters + +08:14.639 --> 08:17.360 +will appear here. + +08:17.360 --> 00:08:21.120 +The middle window is running a tail -f + +00:08:21.120 --> 00:08:27.440 +on the dribble file piped to fold -w1. + +08:27.440 --> 00:08:30.720 +This lets you see the raw ASCII characters + +00:08:30.720 --> 00:08:34.479 +as I type them. + +08:34.479 --> 00:08:37.839 +The right window is the empty buffer + +00:08:37.839 --> 00:08:41.680 +on the ex.fa file. + +08:41.680 --> 00:08:44.560 +Anything that I described here + +00:08:44.560 --> 00:08:49.040 +can be done with virgin Emacs distribution + +08:49.040 --> 08:51.360 +with nothing added, + +08:51.360 --> 08:53.760 +but I'm using Blee + +08:53.760 --> 08:57.120 +(By* Libre-Halaal Emacs Environment) + +08:57.120 --> 00:09:02.720 +to show things. You don't need to have blee + +00:09:02.720 --> 00:09:07.600 +for writing the equivalent of the text + +00:09:07.600 --> 00:09:10.800 +in this gif-cast. + +09:10.800 --> 00:09:13.440 +First, I'm going to select + +00:09:13.440 --> 00:09:16.800 +the farsi-transliterate-banan. + +09:16.800 --> 00:09:22.080 +I'm entering C-x RET C-\ . + +09:22.080 --> 00:09:23.839 +Notice the mode -ine + +00:09:23.839 --> 00:09:27.040 +and the prompt at mini-buffer. + +09:27.040 --> 09:30.399 +With completion, I'm going to select + +09:30.399 --> 09:34.000 +farsi-transliterate-banan. + +09:34.000 --> 00:09:38.560 +Notice that farsi-isiri-9147 + +09:38.560 --> 09:43.360 +was also provided as a choice. + +09:43.360 --> 00:09:47.440 +Also notice that the letter 'b' appears + +00:09:47.440 --> 00:09:51.760 +in the left of the mode line of ex.fa. + +09:51.760 --> 00:09:54.000 +This indicates which input method + +00:09:54.000 --> 00:09:56.320 +has been selected. + +09:56.320 --> 00:09:58.560 +Also notice that cursor is on + +00:09:58.560 --> 00:10:04.399 +the top left corner of ex.fa. + +10:04.399 --> 10:08.800 +Next, I'm going to enter the 's' character. + +10:08.800 --> 10:12.000 +Notice the cursor moved to the right, + +10:12.000 --> 00:10:15.120 +and unshaped ’seen’ appeared + +00:10:15.120 --> 00:10:20.079 +in the ex.fa buffer, on the mode-line, + +10:20.079 --> 10:23.760 +and in the keycast log buffer. + +10:23.760 --> 00:10:28.000 +Next, I'm going to enter 'l'. + +10:28.000 --> 00:10:32.800 +Notice ل in the mode-line, + +10:32.800 --> 00:10:39.920 +and notice how س was subjected to shaping. + +10:39.920 --> 10:42.640 +Next I'm going to write the letter + +10:42.640 --> 10:44.640 +to write the following: + +10:44.640 --> 10:50.560 + سلام –حال شما چه طوره؟ –با ایمکس همه کار میشه کرد + +10:50.560 --> 10:52.480 +"Hello, how are you?" + +10:52.480 --> 00:10:56.720 +You can do everything with Emacs. + +10:56.720 --> 11:00.000 +Generally, same-sounding Latin characters + +11:00.000 --> 00:11:03.920 +are used. As usual, vowels are ignored + +00:11:03.920 --> 00:11:06.720 +unless called for. + +11:06.720 --> 11:10.800 +Notice that in order to get ح, + +11:10.800 --> 11:14.560 +i repeated 'h' twice. + +11:14.560 --> 11:15.440 +ش + +11:15.440 --> 11:18.560 +is the obvious 'sh'. + +11:18.560 --> 11:19.519 +چ + +11:19.519 --> 11:22.480 +is the obvious 'ch'. + +11:22.480 --> 00:11:28.640 +t, that's the ط is upper case T. + +11:28.640 --> 00:11:29.439 + ت + +00:11:29.439 --> 00:11:31.839 +is lowercase t. + +11:31.839 --> 11:34.880 +That's it. We managed to write in Farsi + +11:34.880 --> 11:38.640 +with a QWERTY keyboard, intuitively. + +11:38.640 --> 11:40.959 +Next, we are going to switch back to + +11:40.959 --> 00:11:45.680 +globish and write "back to globish". + +11:45.680 --> 00:11:47.920 +Notice that the globish sentence + +00:11:47.920 --> 00:11:50.959 +started from the left side. + +11:50.959 --> 00:11:53.279 +This is due to proper detection + +00:11:53.279 --> 00:12:00.159 +of paragraph directionality by Emacs. + +12:00.160 --> 00:12:05.600 +For the most part, Emacs is self-documenting. + +12:05.600 --> 12:07.920 +Here we are pointing you to some + +12:07.920 --> 12:12.880 +relevant self-contained Emacs resources. + +12:12.880 --> 00:12:15.680 +The BIDI documentation applies to + +00:12:15.680 --> 00:12:18.000 +all BIDI scripts, + +12:18.000 --> 12:22.079 +not just Perso-Arabic scripts. + +12:22.079 --> 00:12:23.279 +Referring to the code + +00:12:23.279 --> 00:12:27.999 +can also be useful for some. + +12:28.000 --> 12:30.079 +Here are some pointers. + +12:30.079 --> 00:12:32.399 +The Quail translation code + +00:12:32.399 --> 00:12:35.519 +for Persian input methods: + +00:12:35.519 --> 00:12:39.120 +the persian.el file has full details + +00:12:39.120 --> 00:12:43.999 +of the mapping and some documentation. + +12:44.000 --> 00:12:46.639 +Next, we'll show the keyboard layouts + +00:12:46.639 --> 00:12:51.519 +as a gif-cast. You can get + +00:12:51.519 --> 00:12:55.519 +relevant documentation for any input method + +12:55.519 --> 00:13:00.320 +with the describe-input-method command. + +13:00.320 --> 00:13:05.920 +So, let's try that for farsi-transliterate-banan. + +00:13:05.920 --> 00:13:09.360 +We are back in the ex.fa buffer + +00:13:09.360 --> 00:13:11.279 +as one window. + +13:11.279 --> 13:13.839 +We don't need the keycast logging + +13:13.839 --> 13:17.040 +and the dribble windows any more. + +13:17.040 --> 13:20.320 +With the C-\, I reactivate + +13:20.320 --> 13:23.360 +the farsi input method. + +13:23.360 --> 00:13:26.399 +Notice that keycast is still active + +00:13:26.399 --> 00:13:29.360 +on the mode line. + +13:29.360 --> 00:13:34.240 +Next, with the C-h C-\ , + +00:13:34.240 --> 00:13:38.560 +I get the input methods documentation. + +13:38.560 --> 00:13:40.639 +I then delete other windows + +00:13:40.639 --> 00:13:45.440 +and keep the help buffer visible. + +13:45.440 --> 00:13:47.279 +Notice that beh + +00:13:47.279 --> 00:13:52.720 +in this input methods identifier. + +13:52.720 --> 13:55.920 +Here is the URL for full documentation + +13:55.920 --> 00:14:00.639 +on the web. The keyboard layout itself + +00:14:00.639 --> 00:14:03.760 +is a one-to-one mapping, but towards + +00:14:03.760 --> 00:14:07.360 +making transliteration intuitive. + +14:07.360 --> 14:10.240 +Multiple keys are sometimes mapped to + +14:10.240 --> 14:12.079 +the same letter. + +14:12.079 --> 00:14:19.760 +For example, both 'i' and 'y' produce yeh. + +14:19.760 --> 14:22.959 +The usual two letter transliterations + +14:22.959 --> 00:14:29.600 +ending with 'h' -- zh, ch, sh, and kh + +00:14:29.600 --> 00:14:34.160 +are provided. The ampersand prefix + +00:14:34.160 --> 00:14:37.440 +is used to support often invisible + +14:37.440 --> 00:14:41.600 +BIDI markings. In addition to this + +00:14:41.600 --> 00:14:43.920 +internal documentation, + +00:14:43.920 --> 00:14:48.958 +full documentation is also available. + +14:48.959 --> 00:14:50.560 +Complete documentation + +00:14:50.560 --> 00:14:52.240 +for Persian input methods + +00:14:52.240 --> 00:14:58.560 +is available as PLPC-120036. + +14:58.560 --> 00:15:00.880 +Next, we'll take a quick look at this + +00:15:00.880 --> 00:15:03.600 +on the web. + +15:03.600 --> 00:15:05.440 +You can click on links + +00:15:05.440 --> 00:15:07.440 +in the reveal web-based form + +00:15:07.440 --> 00:15:09.839 +of this presentation. + +15:09.839 --> 15:15.440 +So let's visit PLPC-120036. + +15:15.440 --> 00:15:17.600 +This document fully describes + +00:15:17.600 --> 00:15:20.560 +Persian input methods. + +15:20.560 --> 00:15:22.320 +In addition to HTML, + +00:15:22.320 --> 00:15:26.079 +you can also obtain it in PDF. + +00:15:26.079 --> 00:15:30.079 +Let's do that. Of particular interest + +00:15:30.079 --> 00:15:33.120 +in this document are various tables + +15:33.120 --> 00:15:35.839 +that enumerate lists of letters + +00:15:35.839 --> 00:15:37.120 +with their association + +00:15:37.120 --> 00:15:41.839 +to both Persian input methods. + +15:41.839 --> 15:46.240 +Let's take a look at a few of these. + +15:46.240 --> 00:15:51.360 +Table 3, mapping of isiri-6219 + +15:51.360 --> 15:53.680 +(the Farsi character set) + +15:53.680 --> 00:15:55.680 +to Emacs version input methods + +00:15:55.680 --> 00:15:58.720 +could be of interest to you, + +15:58.720 --> 16:01.040 +as well as table 8 + +16:01.040 --> 16:04.720 +for BIDI-related control markups, + +16:04.720 --> 00:16:17.518 +and table 9, for vowels and other signs. + +16:17.519 --> 00:16:19.759 +Having covered input methods, + +00:16:19.759 --> 00:16:21.279 +let's turn our attention + +00:16:21.279 --> 00:16:25.199 +to ramifications of BIDI and Perso-Arabic + +00:16:25.199 --> 00:16:28.480 +on various Emacs applications. + +16:28.480 --> 00:16:32.160 +Since 2012, I have been using Persian text + +00:16:32.160 --> 00:16:35.839 +in various Emacs applications. + +16:35.839 --> 00:16:38.079 +In short, my experience has been + +00:16:38.079 --> 00:16:42.399 +that most Emacs apps are usable, + +16:42.399 --> 16:44.880 +but they all have glitches + +16:44.880 --> 00:16:47.279 +that could at a minimum + +00:16:47.279 --> 00:16:51.279 +annoy Perso-Arabic users. + +16:51.279 --> 16:54.639 +In this slide, I'm presenting a summary. + +16:54.639 --> 00:16:56.399 +The glitches with Gnus + +00:16:56.399 --> 00:17:00.079 +are not all that significant for me. + +17:00.079 --> 17:04.240 +BBDB glitches can easily be fixed. + +17:04.240 --> 00:17:07.679 +For Calendar, I have customized my own setup + +00:17:07.679 --> 00:17:10.799 +to support Persian and Islamic dates + +00:17:10.799 --> 00:17:14.079 +in Perso-Arabic. Perhaps they should be + +00:17:14.079 --> 00:17:17.039 +merged upstream, instead of + +00:17:17.039 --> 00:17:19.679 +dealing with apps one at a time. + +00:17:19.679 --> 00:17:21.439 +I think it's more reasonable + +00:17:21.439 --> 00:17:25.279 +to consider them collectively. + +17:25.280 --> 00:17:26.880 +The glitches that I mentioned + +00:17:26.880 --> 00:17:28.799 +in the previous slide + +17:28.799 --> 17:30.480 +have two routes: + +17:30.480 --> 17:32.480 +some are BIDI-specific + +17:32.480 --> 17:35.919 +and some are Perso-Arabic-specific. + +17:35.919 --> 00:17:36.720 +In this slide, + +00:17:36.720 --> 00:17:39.280 +I have classified them as such + +17:39.280 --> 17:42.960 +and have made some general suggestions, + +17:42.960 --> 00:17:45.679 +but all of these at best amount to + +00:17:45.679 --> 00:17:47.679 +tactical approaches. + +17:47.679 --> 00:17:50.160 +I think a more strategic approach + +00:17:50.160 --> 00:17:53.519 +is called for. + +17:53.520 --> 17:56.240 +The right way to address BIDI-awareness + +17:56.240 --> 17:58.559 +and other awarenesses + +17:58.559 --> 00:18:00.559 +is to build them in frameworks + +00:18:00.559 --> 00:18:04.160 +that Emacs apps can then use. + +18:04.160 --> 00:18:08.480 +So, I'm proposing that we first create ENML, + +00:18:08.480 --> 00:18:11.520 +the Emacs Native Markup Language, + +00:18:11.520 --> 00:18:16.880 +as a Lisp-ish (perhaps even not fully secure) + +18:16.880 --> 18:20.320 +super-set of HTML5. + +18:20.320 --> 18:22.960 +With that in place, we can then build on + +18:22.960 --> 00:18:25.360 +the two decades of experience + +00:18:25.360 --> 00:18:27.600 +that have produced various + +00:18:27.600 --> 00:18:31.039 +web application development frameworks + +18:31.039 --> 18:33.919 +by mimicking one of them. + +18:33.919 --> 00:18:35.679 +I don't have any running code + +00:18:35.679 --> 00:18:39.440 +for any of these, but discussing strategy + +00:18:39.440 --> 00:18:44.639 +need not always be futile. + +18:44.640 --> 18:47.679 +Emacs has immense potentials, + +18:47.679 --> 18:51.120 +but those potentials cannot be realized + +18:51.120 --> 00:18:54.640 +unless we integrate Emacs in the totality + +00:18:54.640 --> 00:18:59.840 +of a specific complete digital ecosystem. + +18:59.840 --> 19:02.000 +Over the past two decades, I've been + +19:02.000 --> 00:19:03.440 +building the contours + +00:19:03.440 --> 00:19:06.240 +of The Libre-Halaal By* (ByStar) + +00:19:06.240 --> 00:19:10.240 +digital ecosystem. + +19:10.240 --> 19:13.039 +Emacs can then be fully integrated into + +19:13.039 --> 00:19:16.799 +ByStar. It's through such integration + +00:19:16.799 --> 00:19:19.679 +that full conviviality of Emacs + +00:19:19.679 --> 00:19:24.239 +can be experienced. + +19:24.240 --> 00:19:26.640 +Blee, the ByStar Libre-Halaal + +00:19:26.640 --> 00:19:30.000 +Emacs environment is Emacs + +00:19:30.000 --> 00:19:32.720 +plus a whole lot of Emacs apps + +00:19:32.720 --> 00:19:34.880 +integrated with Debian, + +00:19:34.880 --> 00:19:38.320 +With ByStar services and with BISOS, + +00:19:38.320 --> 00:19:42.480 +the ByStar Internet Services OS. + +19:42.480 --> 00:19:43.600 +Perhaps this could be + +00:19:43.600 --> 00:19:45.840 +the topic of a presentation + +00:19:45.840 --> 00:19:46.840 +for the 2022 Emacs Conference. + +00:19:46.840 --> 00:19:51.559 +[captions by Mohsen Banan] diff --git a/2021/info/bidi-schedule.md b/2021/info/bidi-schedule.md index a4504914..0657e4ef 100644 --- a/2021/info/bidi-schedule.md +++ b/2021/info/bidi-schedule.md @@ -1,13 +1,17 @@ Q&A: live -Status: Captions added to video +Status: Now playing Duration: 19:52 -
Sunday, Nov 28 2021, ~ 2:05 PM - 2:25 PM EST
Sunday, Nov 28 2021, ~11:05 AM - 11:25 AM PST
Sunday, Nov 28 2021, ~ 7:05 PM - 7:25 PM UTC
Sunday, Nov 28 2021, ~ 8:05 PM - 8:25 PM CET
Sunday, Nov 28 2021, ~ 9:05 PM - 9:25 PM EET
Monday, Nov 29 2021, ~12:35 AM - 12:55 AM IST
Monday, Nov 29 2021, ~ 3:05 AM - 3:25 AM +08
Monday, Nov 29 2021, ~ 4:05 AM - 4:25 AM JST
Find out how to watch and participate
-If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at and we'll forward your question to the speaker. +If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at and we'll forward your question to the speaker. + # Description diff --git a/2021/info/test-schedule.md b/2021/info/test-schedule.md index 59bda0ce..8c31ba08 100644 --- a/2021/info/test-schedule.md +++ b/2021/info/test-schedule.md @@ -1,7 +1,7 @@ Q&A: IRC -Status: Now playing +Status: Finished Duration: 6:04 diff --git a/2021/schedule-details.md b/2021/schedule-details.md index 6b3f70e9..815404be 100644 --- a/2021/schedule-details.md +++ b/2021/schedule-details.md @@ -44,8 +44,8 @@ Sunday afternoon done~ 1:01 PMOld McCarthy Had a FormIan Eure done~ 1:19 PMTurbo BindatStefan Monnier -now playing~ 1:55 PMTest blocksEduardo Ochs -captioned~ 2:05 PMPerso-Arabic Input Methods And Making More Emacs Apps BIDI AwareMohsen BANAN +done~ 1:55 PMTest blocksEduardo Ochs +now playing~ 2:03 PMPerso-Arabic Input Methods And Making More Emacs Apps BIDI AwareMohsen BANAN captioned~ 2:35 PMEmacs Application Framework: A 2021 UpdateMatthew Zeng captioned~ 2:49 PMImaginary ProgrammingShane Mulligan received~ 3:05 PMCLEDE: the Common Lisp Emacs Development EnvironmentFermin MF -- cgit v1.2.3