Subject: 24.0.94; Arabic character composition

From: Joost Kremers <[email-masked]>
Date: Fri, 23 Mar 2012 16:44:01 +0100

Please describe exactly what actions triggered the bug, and
the precise symptoms of the bug.  If you can, give a recipe
starting from `emacs -Q':

Although Emacs 24 has bidi support (yay!), character composition for Arabic
does not work for me on OS X. (In the Arabic script, each character has
different forms depending on its position in the word: beginning, middle or
end. These shapes should be selected automatically by the software, but
they are not.)

On Linux, Emacs needs to be compiled with libotf in order to provide the
necessary character composition, which then works perfectly.

Joost Kremers

In GNU Emacs 24.0.94.1 (x86_64-apple-darwin, NS apple-appkit-1038.36)
 of 2012-02-28 on bob.porkrind.org
Windowing system distributor `Apple', version 10.3.1138
Configured using:
 `configure '--host=x86_64-apple-darwin' '--build=i686-apple-darwin'
 '--with-ns' 'build_alias=i686-apple-darwin'
 'host_alias=x86_64-apple-darwin' 'CC=gcc -mmacosx-version-min=10.5''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: de_DE.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: nil
  default enable-multibyte-characters: t

Major mode: Text

Minor modes in effect:
  diff-auto-refine-mode: t
  yas/global-mode: t
  yas/minor-mode: t
  show-paren-mode: t
  delete-selection-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<home> C-SPC <end> M-w C-c C-c n C-y C-SPC M-n C-w 
<home> C-SPC M-n C-n C-w M-n M-n M-n M-n <next> C-x 
C-c C-g C-c C-c n C-x C-f d r o <tab> w o <tab> s t 
i <tab> a <tab> <return> M-x r e p o <tab> r <tab> 
<return>

Recent messages:
Do you want to attach anything? (y or n)  n
(No changes need to be saved)
Modification-flag cleared
When done with a buffer, type C-x #
Mark set [4 times]
Auto-saving...done
Quit
Do you want to attach anything? (y or n)  n
Wrote /Users/joost/tmp/mutt-pc201-501-47762-811386051884762191
Making completion list...

Load-path shadows:
/Applications/Emacs.app/Contents/Resources/site-lisp/org hides /Applications/Emacs.app/Contents/Resources/lisp/org/org
/Applications/Emacs.app/Contents/Resources/site-lisp/org-xoxo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-xoxo
/Applications/Emacs.app/Contents/Resources/site-lisp/org-wl hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-wl
/Applications/Emacs.app/Contents/Resources/site-lisp/org-w3m hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Applications/Emacs.app/Contents/Resources/site-lisp/org-vm hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-vm
/Applications/Emacs.app/Contents/Resources/site-lisp/org-timer hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-timer
/Applications/Emacs.app/Contents/Resources/site-lisp/org-taskjuggler hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-taskjuggler
/Applications/Emacs.app/Contents/Resources/site-lisp/org-table hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-table
/Applications/Emacs.app/Contents/Resources/site-lisp/org-src hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-src
/Applications/Emacs.app/Contents/Resources/site-lisp/org-special-blocks hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-special-blocks
/Applications/Emacs.app/Contents/Resources/site-lisp/org-rmail hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Applications/Emacs.app/Contents/Resources/site-lisp/org-remember hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-remember
/Applications/Emacs.app/Contents/Resources/site-lisp/org-publish hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-publish
/Applications/Emacs.app/Contents/Resources/site-lisp/org-protocol hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Applications/Emacs.app/Contents/Resources/site-lisp/org-plot hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-plot
/Applications/Emacs.app/Contents/Resources/site-lisp/org-pcomplete hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
/Applications/Emacs.app/Contents/Resources/site-lisp/org-odt hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-odt
/Applications/Emacs.app/Contents/Resources/site-lisp/org-mouse hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Applications/Emacs.app/Contents/Resources/site-lisp/org-mobile hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Applications/Emacs.app/Contents/Resources/site-lisp/org-mks hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mks
/Applications/Emacs.app/Contents/Resources/site-lisp/org-mhe hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Applications/Emacs.app/Contents/Resources/site-lisp/org-mew hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mew
/Applications/Emacs.app/Contents/Resources/site-lisp/org-macs hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-macs
/Applications/Emacs.app/Contents/Resources/site-lisp/org-mac-message hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mac-message
/Applications/Emacs.app/Contents/Resources/site-lisp/org-lparse hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-lparse
/Applications/Emacs.app/Contents/Resources/site-lisp/org-list hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-list
/Applications/Emacs.app/Contents/Resources/site-lisp/org-latex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-latex
/Applications/Emacs.app/Contents/Resources/site-lisp/org-jsinfo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-jsinfo
/Applications/Emacs.app/Contents/Resources/site-lisp/org-irc hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-irc
/Applications/Emacs.app/Contents/Resources/site-lisp/org-install hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-install
/Applications/Emacs.app/Contents/Resources/site-lisp/org-inlinetask hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Applications/Emacs.app/Contents/Resources/site-lisp/org-info hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-info
/Applications/Emacs.app/Contents/Resources/site-lisp/org-indent hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-indent
/Applications/Emacs.app/Contents/Resources/site-lisp/org-id hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-id
/Applications/Emacs.app/Contents/Resources/site-lisp/org-icalendar hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-icalendar
/Applications/Emacs.app/Contents/Resources/site-lisp/org-html hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-html
/Applications/Emacs.app/Contents/Resources/site-lisp/org-habit hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-habit
/Applications/Emacs.app/Contents/Resources/site-lisp/org-gnus hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Applications/Emacs.app/Contents/Resources/site-lisp/org-freemind hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-freemind
/Applications/Emacs.app/Contents/Resources/site-lisp/org-footnote hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Applications/Emacs.app/Contents/Resources/site-lisp/org-feed hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-feed
/Applications/Emacs.app/Contents/Resources/site-lisp/org-faces hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-faces
/Applications/Emacs.app/Contents/Resources/site-lisp/org-exp hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp
/Applications/Emacs.app/Contents/Resources/site-lisp/org-exp-blocks hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp-blocks
/Applications/Emacs.app/Contents/Resources/site-lisp/org-eshell hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-eshell
/Applications/Emacs.app/Contents/Resources/site-lisp/org-entities hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-entities
/Applications/Emacs.app/Contents/Resources/site-lisp/org-docview hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-docview
/Applications/Emacs.app/Contents/Resources/site-lisp/org-docbook hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-docbook
/Applications/Emacs.app/Contents/Resources/site-lisp/org-datetree hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Applications/Emacs.app/Contents/Resources/site-lisp/org-ctags hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-ctags
/Applications/Emacs.app/Contents/Resources/site-lisp/org-crypt hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Applications/Emacs.app/Contents/Resources/site-lisp/org-compat hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-compat
/Applications/Emacs.app/Contents/Resources/site-lisp/org-colview hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-colview
/Applications/Emacs.app/Contents/Resources/site-lisp/org-clock hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-clock
/Applications/Emacs.app/Contents/Resources/site-lisp/org-capture hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-capture
/Applications/Emacs.app/Contents/Resources/site-lisp/org-bibtex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Applications/Emacs.app/Contents/Resources/site-lisp/org-beamer hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-beamer
/Applications/Emacs.app/Contents/Resources/site-lisp/org-bbdb hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Applications/Emacs.app/Contents/Resources/site-lisp/org-attach hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-attach
/Applications/Emacs.app/Contents/Resources/site-lisp/org-ascii hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-ascii
/Applications/Emacs.app/Contents/Resources/site-lisp/org-archive hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-archive
/Applications/Emacs.app/Contents/Resources/site-lisp/org-agenda hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Applications/Emacs.app/Contents/Resources/site-lisp/ob hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-tangle hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-tangle
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-table hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-table
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-sqlite hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-sql hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sql
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-shen hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-shen
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-sh hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sh
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-screen hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-screen
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-scheme hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-scheme
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-sass hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sass
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-ruby hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ruby
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-ref hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ref
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-R hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-R
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-python hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-python
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-plantuml hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-picolisp hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-picolisp
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-perl hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-perl
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-org hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-org
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-octave hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-octave
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-ocaml hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-mscgen hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-mscgen
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-maxima hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-maxima
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-matlab hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-matlab
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-lob hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-lob
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-lisp hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-lisp
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-lilypond hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-ledger hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ledger
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-latex hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-latex
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-keys hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-keys
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-js hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-js
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-java hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-java
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-haskell hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-haskell
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-gnuplot hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-fortran hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-fortran
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-exp hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-exp
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-eval hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-eval
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-emacs-lisp hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-dot hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-dot
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-ditaa hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-css hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-css
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-comint hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-comint
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-clojure hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-clojure
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-calc hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-calc
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-C hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-C
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-awk hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-awk
/Applications/Emacs.app/Contents/Resources/site-lisp/ob-asymptote hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-asymptote

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader quail ielm pp uniquify actr-mode magit-bisect
magit-key-mode magit diff-mode log-edit pcvs-util add-log pandoc-mode
org-drill org-learn org-id hi-lock org-inlinetask org byte-opt warnings
bytecomp byte-compile cconv macroexp ob-emacs-lisp ob-tangle ob-ref
ob-lob ob-table org-footnote org-src ob-comint ob-keys ob ob-eval
org-pcomplete pcomplete comint ansi-color ring org-list org-faces
org-compat org-entities org-macs cal-menu calendar cal-loaddefs
org-install yasnippet dropdown-list help-mode view assoc markdown-mode
thingatpt noutline outline bm show-wspace windmove paren swbuff post
derived advice help-fns advice-preload ebib easy-mmode bibtex
preview-latex tex-site auto-loads zenburn color-theme edmacro kmacro
wid-edit cl sendmail regexp-opt rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils reporter easymenu server delsel time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer loaddefs button faces cus-face files text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process ns multi-tty
emacs)

-- 
Joost Kremers, PhD
University of Göttingen
Institute for German Philology
Käte-Hamburger-Weg 3
37073 Göttingen, Germany