Subject: 25.0.50; `compose-string-internal` does not work properly on OSX.

From: Keith David Bershatsky <[email-masked]>
Date: Sat, 09 May 2015 11:27:15 -0700

The function `compose-string-internal` does not work properly when running Emacs built on OSX.  The following example works on Windows, but not OSX -- it "should be" the letter A with a pipe running through the center of the letter A.  Depending upon the arguments passed to `compose-string-internal` when using Emacs on OSX, the pipe is either displayed to the right (at various distances) or is not visible at all -- it never displays "on top of" the target character.

(defun test-fn ()
(interactive)
  (message (compose-string-internal "A|" 0 (length "A|"))))

And here is another version of the same concept using `compose-chars`, which uses `compose-string-internal`.

(defun test-fn ()
(interactive)
  (message (compose-chars (string-to-char "A") '(tc . tc) (string-to-char "|"))))

Thanks,

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

In GNU Emacs 25.0.50.1 (x86_64-apple-darwin10.8.0, NS appkit-1038.36 Version 10.6.8 (Build 10K549))
 of 2014-10-01 on MP.local
Repository revision: 117996 [email-masked]
Windowing system distributor `Apple', version 10.3.1038
Configured using:
 `configure --with-ns'

Configured features:
ACL LIBXML2 ZLIB

Important settings:
  locale-coding-system: utf-8-unix

Major mode: FM

Minor modes in effect:
  tb-mode: t
  sb-mode: t
  ml-mode: t
  ds-mode: t
  sd-mode: t
  cm-mode: t
  bc-mode: t

Recent input:
<s-down> <S-up> <S-up> <S-up> <S-up> <S-up> <S-right> 
s-c <up> <up> <escape> C-g <escape> x r e p o r t - 
e m a c s <tab> <return>

Recent messages:
Wrote /Users/HOME/.0.data/.0.emacs/.lock
Emacs:  (global-set-key [f5] 'test-fn)

(defun tes . . .
*beep*
ESC C-g is undefined

Load-path shadows:
None found.

Features:
(shadow emacsbug sendmail lawlist-ztree lawlist-yas lawlist-ws
lawlist-wl elmo-imap4 elmo-localdir modb-standard modb-legacy
elmo-internal elmo-flag mmelmo-imap mmelmo-buffer elsp-generic
disp-table enriched ps-print ps-def lpr parse-time lawlist-w3m
browse-url doc-view ccl lawlist-window lawlist-vl lawlist-undo
lawlist-txt lawlist-tm lawlist-tex skeleton compare-w lawlist-tabbar
lawlist-sb lawlist-ruler mule-util lawlist-replace lawlist-re-builder
lawlist-print lawlist-parens lawlist-org lawlist-calendar org
org-macro org-footnote org-pcomplete org-list org-faces org-entities
noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref
ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat
org-macs org-loaddefs holidays hol-loaddefs cal-menu calendar
cal-loaddefs lawlist-movement lawlist-ml lawlist-misc lawlist-mc rect
lawlist-lorem lawlist-ln lawlist-keymap lawlist-jit-lock
lawlist-ispell lawlist-isearch help-macro lawlist-hl lawlist-help-fns
lawlist-help lawlist-grep lawlist-git ido view vc-git vc vc-dispatcher
url-http tls url url-proxy url-privacy url-expand url-methods
url-history mailcap url-auth url-cookie url-domsuf url-gw thingatpt
time-stamp log-view log-edit message mml mml-sec mm-decode mm-bodies
mm-encode gmm-utils mailheader pcvs-util add-log json grep compile
find-lisp epa epg epg-config ediff-merg ediff-wind ediff-diff
ediff-mult ediff-help ediff-init ediff-util ediff ert find-func ewoc
debug eieio-base diff-mode conf-mode autorevert filenotify
lawlist-frame lawlist-frame-bufs lawlist-font-lock lawlist-fm
lawlist-find-func lawlist-files-tramp zeroconf url-util url-parse
url-vars dbus xml dired lawlist-elscreen lawlist-elisp lawlist-dv
jka-compr image-mode lawlist-ds lawlist-dired tramp-sh tramp
tramp-compat auth-source eieio byte-opt bytecomp byte-compile cconv
eieio-core password-cache tramp-loaddefs trampver format-spec
lawlist-desktop frameset lawlist-descr-text lawlist-help-mode quail
help-mode lawlist-compile rx lawlist-colors lawlist-cm pcase
lawlist-calc easymenu lawlist-button lawlist-bk derived edmacro kmacro
lawlist-bc lawlist-bbdb gnus gnus-ems nnheader gnus-util mail-utils
wid-edit mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mailabbrev cl-macs mail-extr rfc822 cl cl-loaddefs cl-lib
timezone lawlist-as lawlist-arc lawlist-+ easy-mmode savehist shell
pcomplete comint ansi-color ring saveplace advice help-fns server gv
time-date tooltip electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel ns-win tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment elisp-mode lisp-mode prog-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 nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
cocoa ns multi-tty emacs)

Memory information:
((conses 16 1392036 113091)
 (symbols 48 65272 0)
 (miscs 40 103 152)
 (strings 32 144125 15463)
 (string-bytes 1 5147780)
 (vectors 16 33975)
 (vector-slots 8 890440 30007)
 (floats 8 1484 154)
 (intervals 56 253 0)
 (buffers 976 11))