From unknown Fri Sep 05 11:51:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#8863 <8863@debbugs.gnu.org> To: bug#8863 <8863@debbugs.gnu.org> Subject: Status: 23.3; Strikethrough won't display on MacOS Reply-To: bug#8863 <8863@debbugs.gnu.org> Date: Fri, 05 Sep 2025 18:51:50 +0000 retitle 8863 23.3; Strikethrough won't display on MacOS reassign 8863 emacs,ns submitter 8863 Dave Abrahams severity 8863 important thanks From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 14 12:05:57 2011 Received: (at submit) by debbugs.gnu.org; 14 Jun 2011 16:05:57 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWW7m-0007Di-RL for submit@debbugs.gnu.org; Tue, 14 Jun 2011 12:05:57 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWW7i-0007DV-Jw for submit@debbugs.gnu.org; Tue, 14 Jun 2011 12:05:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWW7Y-0003Q0-AP for submit@debbugs.gnu.org; Tue, 14 Jun 2011 12:05:45 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:51114) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWW7Y-0003Pq-0M for submit@debbugs.gnu.org; Tue, 14 Jun 2011 12:05:40 -0400 Received: from eggs.gnu.org ([140.186.70.92]:41436) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWW7T-0007Pc-W3 for bug-gnu-emacs@gnu.org; Tue, 14 Jun 2011 12:05:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWW7P-0003Om-Ur for bug-gnu-emacs@gnu.org; Tue, 14 Jun 2011 12:05:35 -0400 Received: from mail-qw0-f41.google.com ([209.85.216.41]:37949) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWW7P-0003OV-Ea for bug-gnu-emacs@gnu.org; Tue, 14 Jun 2011 12:05:31 -0400 Received: by qwa26 with SMTP id 26so3790724qwa.0 for ; Tue, 14 Jun 2011 09:05:30 -0700 (PDT) Received: by 10.224.218.202 with SMTP id hr10mr4983230qab.28.1308067528439; Tue, 14 Jun 2011 09:05:28 -0700 (PDT) Received: from pluto.luannocracy.com (207-172-223-249.c3-0.smr-ubr3.sbo-smr.ma.static.cable.rcn.com [207.172.223.249]) by mx.google.com with ESMTPS id j18sm5445787qck.27.2011.06.14.09.05.27 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 14 Jun 2011 09:05:27 -0700 (PDT) Received: by pluto.luannocracy.com (Postfix, from userid 501) id 740D34F6F32; Tue, 14 Jun 2011 12:05:26 -0400 (EDT) From: Dave Abrahams To: bug-gnu-emacs@gnu.org Subject: 23.3; Strikethrough won't display on MacOS Date: Tue, 14 Jun 2011 12:05:26 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -5.5 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.5 (-----) Title says it all. Faces with the "strikethrough" property set show up as un-struck-through. In GNU Emacs 23.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.35) of 2011-03-09 on black.porkrind.org Windowing system distributor `Apple', version 10.3.1038 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: nil value of $XMODIFIERS: nil locale-coding-system: nil default enable-multibyte-characters: t Major mode: Magit Minor modes in effect: magit-status-mode: t diff-auto-refine-mode: t shell-dirtrack-mode: t me-minor-mode: t show-paren-mode: t server-mode: t ido-everywhere: t global-auto-revert-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-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: SPC t h a t SPC w h o s e SPC c o n t e n t s SPC w o u l d n ' t SPC c h a n g e C-n C-n C-n C-n C-n C-n C-e C-p C-p C-p C-p C-p C-p C-p C-e C-n C-n C-n C-n C-n C-n C-n C-n C-p C-x C-s C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p M-! M-p C-n C-n C-n C-p C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-e C-, C-p C-e C-x g C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-n C-n C-n C-n C-p C-p M-x r e p o r t - e m Recent messages: Auto-saving...done Mark set Mark saved where search started Mark set [3 times] Auto-saving...done Mark activated Saving file /Users/dave/.emacs.d/el-get/initsplit/initsplit.el... Wrote /Users/dave/.emacs.d/el-get/initsplit/initsplit.el (Shell command succeeded with no output) (No files need saving) Load-path shadows: /Users/dave/.emacs.d/el-get/wl-gravatar/gravatar hides /Users/dave/.emacs.d/el-get/gravatar/gravatar /Users/dave/.emacs.d/el-get/wl-gravatar/gravatar hides /Users/dave/.emacs.d/el-get/nognus/lisp/gravatar /Users/dave/.emacs.d/el-get/nognus/lisp/utf7 hides /Users/dave/.emacs.d/el-get/wanderlust/site-lisp/wl/utf7 /Users/dave/.emacs.d/el-get/nognus/lisp/smime hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/smime /Users/dave/.emacs.d/el-get/nognus/lisp/pgg hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp5 hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-pgp5 /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-pgp /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-parse hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-parse /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-gpg hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-gpg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-def hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-def /Users/dave/.emacs.d/el-get/nognus/lisp/sha1 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sha1 /Users/dave/.emacs.d/el-get/nognus/lisp/sasl hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-ntlm hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-digest hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-digest /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-cram hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-cram /Users/dave/.emacs.d/el-get/nognus/lisp/ntlm hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/md4 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/md4 /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-md5 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hmac-md5 /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-def hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hmac-def /Users/dave/.emacs.d/el-get/nognus/lisp/hex-util hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hex-util /Users/dave/.emacs.d/el-get/nognus/lisp/sha1 hides /Applications/Emacs.app/Contents/Resources/lisp/sha1 /Users/dave/.emacs.d/el-get/nognus/lisp/pgg hides /Applications/Emacs.app/Contents/Resources/lisp/pgg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp5 hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-pgp5 /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-pgp /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-parse hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-parse /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-gpg hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-gpg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-def hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-def /Users/dave/.emacs.d/el-get/nognus/lisp/password-cache hides /Applications/Emacs.app/Contents/Resources/lisp/password-cache /Users/dave/.emacs.d/el-get/nognus/lisp/md4 hides /Applications/Emacs.app/Contents/Resources/lisp/md4 /Users/dave/.emacs.d/el-get/nognus/lisp/hex-util hides /Applications/Emacs.app/Contents/Resources/lisp/hex-util /Users/dave/.emacs.d/el-get/nognus/lisp/format-spec hides /Applications/Emacs.app/Contents/Resources/lisp/format-spec /Users/dave/.emacs.d/el-get/nognus/lisp/dns-mode hides /Applications/Emacs.app/Contents/Resources/lisp/textmodes/dns-mode /Users/dave/.emacs.d/el-get/org-mode/lisp/org hides /Applications/Emacs.app/Contents/Resources/lisp/org/org /Users/dave/.emacs.d/el-get/org-mode/lisp/org-xoxo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-xoxo /Users/dave/.emacs.d/el-get/org-mode/lisp/org-wl hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-wl /Users/dave/.emacs.d/el-get/org-mode/lisp/org-w3m hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m /Users/dave/.emacs.d/el-get/org-mode/lisp/org-vm hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-vm /Users/dave/.emacs.d/el-get/org-mode/lisp/org-timer hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-timer /Users/dave/.emacs.d/el-get/org-mode/lisp/org-table hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-table /Users/dave/.emacs.d/el-get/org-mode/lisp/org-src hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-src /Users/dave/.emacs.d/el-get/org-mode/lisp/org-rmail hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail /Users/dave/.emacs.d/el-get/org-mode/lisp/org-remember hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-remember /Users/dave/.emacs.d/el-get/org-mode/lisp/org-publish hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-publish /Users/dave/.emacs.d/el-get/org-mode/lisp/org-protocol hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol /Users/dave/.emacs.d/el-get/org-mode/lisp/org-plot hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-plot /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mouse hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mobile hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mhe hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mew hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mew /Users/dave/.emacs.d/el-get/org-mode/lisp/org-macs hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-macs /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mac-message hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mac-message /Users/dave/.emacs.d/el-get/org-mode/lisp/org-list hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-list /Users/dave/.emacs.d/el-get/org-mode/lisp/org-latex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-latex /Users/dave/.emacs.d/el-get/org-mode/lisp/org-jsinfo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-jsinfo /Users/dave/.emacs.d/el-get/org-mode/lisp/org-irc hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-irc /Users/dave/.emacs.d/el-get/org-mode/lisp/org-install hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-install /Users/dave/.emacs.d/el-get/org-mode/lisp/org-inlinetask hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask /Users/dave/.emacs.d/el-get/org-mode/lisp/org-info hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-info /Users/dave/.emacs.d/el-get/org-mode/lisp/org-indent hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-indent /Users/dave/.emacs.d/el-get/org-mode/lisp/org-id hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-id /Users/dave/.emacs.d/el-get/org-mode/lisp/org-icalendar hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-icalendar /Users/dave/.emacs.d/el-get/org-mode/lisp/org-html hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-html /Users/dave/.emacs.d/el-get/org-mode/lisp/org-habit hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-habit /Users/dave/.emacs.d/el-get/org-mode/lisp/org-gnus hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus /Users/dave/.emacs.d/el-get/org-mode/lisp/org-freemind hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-freemind /Users/dave/.emacs.d/el-get/org-mode/lisp/org-footnote hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote /Users/dave/.emacs.d/el-get/org-mode/lisp/org-feed hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-feed /Users/dave/.emacs.d/el-get/org-mode/lisp/org-faces hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-faces /Users/dave/.emacs.d/el-get/org-mode/lisp/org-exp hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp /Users/dave/.emacs.d/el-get/org-mode/lisp/org-exp-blocks hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp-blocks /Users/dave/.emacs.d/el-get/org-mode/lisp/org-docbook hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-docbook /Users/dave/.emacs.d/el-get/org-mode/lisp/org-datetree hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree /Users/dave/.emacs.d/el-get/org-mode/lisp/org-crypt hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt /Users/dave/.emacs.d/el-get/org-mode/lisp/org-compat hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-compat /Users/dave/.emacs.d/el-get/org-mode/lisp/org-colview hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-colview /Users/dave/.emacs.d/el-get/org-mode/lisp/org-clock hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-clock /Users/dave/.emacs.d/el-get/org-mode/lisp/org-bibtex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex /Users/dave/.emacs.d/el-get/org-mode/lisp/org-bbdb hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb /Users/dave/.emacs.d/el-get/org-mode/lisp/org-attach hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-attach /Users/dave/.emacs.d/el-get/org-mode/lisp/org-ascii hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-ascii /Users/dave/.emacs.d/el-get/org-mode/lisp/org-archive hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-archive /Users/dave/.emacs.d/el-get/org-mode/lisp/org-agenda hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda /Users/dave/.emacs.d/el-get/nognus/lisp/tls hides /Applications/Emacs.app/Contents/Resources/lisp/net/tls /Users/dave/.emacs.d/el-get/nognus/lisp/sasl hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-ntlm hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-digest hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-digest /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-cram hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-cram /Users/dave/.emacs.d/el-get/nognus/lisp/ntlm hides /Applications/Emacs.app/Contents/Resources/lisp/net/ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/netrc hides /Applications/Emacs.app/Contents/Resources/lisp/net/netrc /Users/dave/.emacs.d/el-get/nognus/lisp/imap hides /Applications/Emacs.app/Contents/Resources/lisp/net/imap /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-md5 hides /Applications/Emacs.app/Contents/Resources/lisp/net/hmac-md5 /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-def hides /Applications/Emacs.app/Contents/Resources/lisp/net/hmac-def /Users/dave/.emacs.d/el-get/nognus/lisp/dns hides /Applications/Emacs.app/Contents/Resources/lisp/net/dns /Users/dave/.emacs.d/el-get/nognus/lisp/dig hides /Applications/Emacs.app/Contents/Resources/lisp/net/dig /Users/dave/.emacs.d/el-get/nognus/lisp/uudecode hides /Applications/Emacs.app/Contents/Resources/lisp/mail/uudecode /Users/dave/.emacs.d/el-get/wanderlust/site-lisp/wl/rfc2368 hides /Applications/Emacs.app/Contents/Resources/lisp/mail/rfc2368 /Users/dave/.emacs.d/el-get/nognus/lisp/hashcash hides /Applications/Emacs.app/Contents/Resources/lisp/mail/hashcash /Users/dave/.emacs.d/el-get/nognus/lisp/binhex hides /Applications/Emacs.app/Contents/Resources/lisp/mail/binhex /Users/dave/.emacs.d/el-get/nognus/lisp/yenc hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/yenc /Users/dave/.emacs.d/el-get/nognus/lisp/utf7 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/utf7 /Users/dave/.emacs.d/el-get/nognus/lisp/starttls hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/starttls /Users/dave/.emacs.d/el-get/nognus/lisp/spam hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam /Users/dave/.emacs.d/el-get/nognus/lisp/spam-wash hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-wash /Users/dave/.emacs.d/el-get/nognus/lisp/spam-stat hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-stat /Users/dave/.emacs.d/el-get/nognus/lisp/spam-report hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-report /Users/dave/.emacs.d/el-get/nognus/lisp/smime hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/smime /Users/dave/.emacs.d/el-get/nognus/lisp/smiley hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/smiley /Users/dave/.emacs.d/el-get/nognus/lisp/sieve hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve /Users/dave/.emacs.d/el-get/nognus/lisp/sieve-mode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve-mode /Users/dave/.emacs.d/el-get/nognus/lisp/sieve-manage hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve-manage /Users/dave/.emacs.d/el-get/nognus/lisp/score-mode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/score-mode /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2231 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2231 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2104 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2104 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2047 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2047 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2045 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2045 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc1843 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc1843 /Users/dave/.emacs.d/el-get/nognus/lisp/qp hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/qp /Users/dave/.emacs.d/el-get/nognus/lisp/pop3 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/pop3 /Users/dave/.emacs.d/el-get/nognus/lisp/nnweb hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnweb /Users/dave/.emacs.d/el-get/nognus/lisp/nnvirtual hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnvirtual /Users/dave/.emacs.d/el-get/nognus/lisp/nntp hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nntp /Users/dave/.emacs.d/el-get/nognus/lisp/nnspool hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnspool /Users/dave/.emacs.d/el-get/nognus/lisp/nnrss hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnrss /Users/dave/.emacs.d/el-get/nognus/lisp/nnoo hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnoo /Users/dave/.emacs.d/el-get/nognus/lisp/nnnil hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnnil /Users/dave/.emacs.d/el-get/nognus/lisp/nnml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnml /Users/dave/.emacs.d/el-get/nognus/lisp/nnmh hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmh /Users/dave/.emacs.d/el-get/nognus/lisp/nnmbox hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmbox /Users/dave/.emacs.d/el-get/nognus/lisp/nnmairix hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmairix /Users/dave/.emacs.d/el-get/nognus/lisp/nnmaildir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmaildir /Users/dave/.emacs.d/el-get/nognus/lisp/nnmail hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmail /Users/dave/.emacs.d/el-get/nognus/lisp/nnir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnir /Users/dave/.emacs.d/el-get/nognus/lisp/nnimap hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnimap /Users/dave/.emacs.d/el-get/nognus/lisp/nnheader hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnheader /Users/dave/.emacs.d/el-get/nognus/lisp/nngateway hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nngateway /Users/dave/.emacs.d/el-get/nognus/lisp/nnfolder hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnfolder /Users/dave/.emacs.d/el-get/nognus/lisp/nneething hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nneething /Users/dave/.emacs.d/el-get/nognus/lisp/nndraft hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndraft /Users/dave/.emacs.d/el-get/nognus/lisp/nndoc hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndoc /Users/dave/.emacs.d/el-get/nognus/lisp/nndir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndir /Users/dave/.emacs.d/el-get/nognus/lisp/nndiary hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndiary /Users/dave/.emacs.d/el-get/nognus/lisp/nnbabyl hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnbabyl /Users/dave/.emacs.d/el-get/nognus/lisp/nnagent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnagent /Users/dave/.emacs.d/el-get/nognus/lisp/mml2015 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml2015 /Users/dave/.emacs.d/el-get/nognus/lisp/mml1991 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml1991 /Users/dave/.emacs.d/el-get/nognus/lisp/mml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml /Users/dave/.emacs.d/el-get/nognus/lisp/mml-smime hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml-smime /Users/dave/.emacs.d/el-get/nognus/lisp/mml-sec hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml-sec /Users/dave/.emacs.d/el-get/nognus/lisp/mm-view hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-view /Users/dave/.emacs.d/el-get/nognus/lisp/mm-uu hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-uu /Users/dave/.emacs.d/el-get/nognus/lisp/mm-util hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-util /Users/dave/.emacs.d/el-get/nognus/lisp/mm-url hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-url /Users/dave/.emacs.d/el-get/nognus/lisp/mm-partial hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-partial /Users/dave/.emacs.d/el-get/nognus/lisp/mm-extern hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-extern /Users/dave/.emacs.d/el-get/nognus/lisp/mm-encode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-encode /Users/dave/.emacs.d/el-get/nognus/lisp/mm-decode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-decode /Users/dave/.emacs.d/el-get/nognus/lisp/mm-bodies hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-bodies /Users/dave/.emacs.d/el-get/nognus/lisp/messcompat hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/messcompat /Users/dave/.emacs.d/el-get/nognus/lisp/message hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/message /Users/dave/.emacs.d/el-get/nognus/lisp/mailcap hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mailcap /Users/dave/.emacs.d/el-get/nognus/lisp/mail-source hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-source /Users/dave/.emacs.d/el-get/nognus/lisp/mail-prsvr hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-prsvr /Users/dave/.emacs.d/el-get/nognus/lisp/mail-parse hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-parse /Users/dave/.emacs.d/el-get/nognus/lisp/legacy-gnus-agent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/legacy-gnus-agent /Users/dave/.emacs.d/el-get/nognus/lisp/ietf-drums hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/ietf-drums /Users/dave/.emacs.d/el-get/nognus/lisp/html2text hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/html2text /Users/dave/.emacs.d/el-get/nognus/lisp/gnus hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-win hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-win /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-vm hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-vm /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-uu hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-uu /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-util hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-util /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-undo hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-undo /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-topic hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-topic /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-sum hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-sum /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-start hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-start /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-srvr hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-srvr /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-spec hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-spec /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-sieve hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-sieve /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-setup hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-setup /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-score hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-score /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-salt hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-salt /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-registry hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-registry /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-range hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-range /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-picon hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-picon /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-msg hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-msg /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-mlspl hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-mlspl /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-ml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-ml /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-mh hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-mh /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-logic hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-logic /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-kill hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-kill /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-int hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-int /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-group hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-group /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-fun hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-fun /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-ems hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-ems /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-eform hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-eform /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-dup hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-dup /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-draft hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-draft /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-dired hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-dired /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-diary hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-diary /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-demon hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-demon /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-delay hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-delay /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cus hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cus /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cite hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cite /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cache hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cache /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-bookmark hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-bookmark /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-bcklg hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-bcklg /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-async hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-async /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-art hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-art /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-agent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-agent /Users/dave/.emacs.d/el-get/nognus/lisp/gmm-utils hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gmm-utils /Users/dave/.emacs.d/el-get/nognus/lisp/flow-fill hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/flow-fill /Users/dave/.emacs.d/el-get/nognus/lisp/ecomplete hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/ecomplete /Users/dave/.emacs.d/el-get/nognus/lisp/deuglify hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/deuglify /Users/dave/.emacs.d/el-get/nognus/lisp/compface hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/compface /Users/dave/.emacs.d/el-get/nognus/lisp/canlock hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/canlock /Users/dave/.emacs.d/el-get/nognus/lisp/auth-source hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/auth-source /Users/dave/.emacs.d/el-get/nognus/lisp/time-date hides /Applications/Emacs.app/Contents/Resources/lisp/calendar/time-date /Users/dave/.emacs.d/el-get/nognus/lisp/parse-time hides /Applications/Emacs.app/Contents/Resources/lisp/calendar/parse-time Features: (shadow sort mail-extr emacsbug magit diff-mode log-edit pcvs-util add-log magit-bisect magit-key-mode shell eieio-custom eieio wid-browse tree-widget newcomment dabbrev color-theme-zenburn cus-edit apropos jka-compr multi-isearch vc-git thingatpt smiley gnus-cite gnus-art mm-uu mml2015 mm-view mml-smime smime password-cache dig nnir gnus-sum macroexp nnoo gnus-group gnus-undo nnmail mail-source gnus-start gnus-spec gnus-int message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win gnus-range gnus gnus-ems nnheader gnus-util url-http tls url-auth mail-parse rfc2231 rfc2047 rfc2045 ietf-drums url-gw wl-score ssl elmo-nntp elmo-sendlog elmo-internal elmo-imap4 time-stamp elmo-net elmo-dop elmo-cache elmo-map hl-line modb-standard wl-mime mime-edit pgg-parse mail-utils mailalias mime-setup mail-mime-setup semi-setup mime-pgp pgg-def mime-play filename mime-image signature wl-spam elmo-spam elsp-header elsp-generic org-wl bookmark org-mac-message org-habit org-agenda org-id org-crypt org 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 org-list org-faces org-compat org-entities org-macs cal-menu calendar cal-loaddefs filladapt wl-demo wl-draft eword-encode wl-template sendmail wl-news derived wl-address wl-thread wl-action wl-summary ps-print ps-def lpr wl-refile wl-message elmo-mime mmelmo-buffer mmelmo-imap compile comint ring mime-view mime-conf calist semi-def mmimap mime-parse mmbuffer mmgeneric wl-highlight elmo-multi wl-folder wl wl-e21 wl-util pp elmo-flag elmo-localdir wl-vars epg-config wl-version elmo elmo-signal elmo-msgdb modb modb-generic modb-entity mime elmo-util emu invisible inv-23 poem poem-e20 poem-e20_3 utf7 eword-decode mel mime-def alist std11 mcharset mcs-20 mcs-e20 pces pces-e20 pces-20 broken pcustom elmo-date timezone path-util elmo-vars poe elmo-version pym static apel-ver product luna zenburn maxframe system-type-darwin-theme .loaddefs find-func browse-kill-ring byte-code-cache byte-opt warnings gravatar time-date url-cache url url-proxy url-privacy url-expand url-methods url-history url-cookie url-util url-parse url-vars mm-util mail-prsvr mailcap org-install gnus-load info markdown-mode noutline outline yasnippet advice advice-preload edmacro kmacro help-mode view assoc color-theme wid-edit el-get autoload help-fns bytecomp byte-compile cl cl-19 dired regexp-opt easy-mmode paren server ido autorevert delsel cus-start cus-load elhome tooltip ediff-hook vc-hooks lisp-float-type mwheel ns-win easymenu tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mldrag 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 loaddefs button minibuffer faces cus-face files text-properties overlay md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process ns multi-tty emacs) -- Dave Abrahams BoostPro Computing http://www.boostpro.com From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 18 17:48:49 2011 Received: (at 8863) by debbugs.gnu.org; 18 Jun 2011 21:48:50 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QY3Np-00052G-Hl for submit@debbugs.gnu.org; Sat, 18 Jun 2011 17:48:49 -0400 Received: from vm-emlprdomr-02.its.yale.edu ([130.132.50.143]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QY3Nn-000524-Mw for 8863@debbugs.gnu.org; Sat, 18 Jun 2011 17:48:48 -0400 Received: from furball (dhcp128036226133.central.yale.edu [128.36.226.133]) (authenticated bits=0) by vm-emlprdomr-02.its.yale.edu (8.14.4/8.14.4) with ESMTP id p5ILmfRl031489 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Sat, 18 Jun 2011 17:48:42 -0400 Received: by furball (Postfix, from userid 1000) id B00A916041A; Sat, 18 Jun 2011 17:48:41 -0400 (EDT) From: Chong Yidong To: Dave Abrahams Subject: Re: bug#8863: 23.3; Strikethrough won't display on MacOS References: Date: Sat, 18 Jun 2011 17:48:41 -0400 In-Reply-To: (Dave Abrahams's message of "Tue, 14 Jun 2011 12:05:26 -0400") Message-ID: <87aade24li.fsf@stupidchicken.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.71 on 130.132.50.143 X-Spam-Score: -2.7 (--) X-Debbugs-Envelope-To: 8863 Cc: 8863@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.7 (--) Dave Abrahams writes: > Title says it all. Faces with the "strikethrough" property set show up > as un-struck-through. Does this (100% untested) patch do the right thing? *** src/nsfont.m 2011-01-02 23:50:46 +0000 --- src/nsfont.m 2011-06-18 21:48:28 +0000 *************** *** 1188,1193 **** --- 1188,1207 ---- /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */ } + /* do strike-through */ + if (face->strike_through_p) + { + float line_y = r.origin.y - 0.5 * font->height; + if (face->strike_through_color != 0) + [ns_lookup_indexed_color (face->strike_through_color, s->f) set]; + else + [col set]; + DPSmoveto (context, r.origin.x, line_y); + DPSlineto (context, r.origin.x + r.size.width, line_y); + if (face->strike_through_color != 0) + [col set]; + } + /* do underline */ if (face->underline_p) { From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 22 14:07:34 2011 Received: (at 8863) by debbugs.gnu.org; 22 Jun 2011 18:07:34 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QZRpu-0005ic-JA for submit@debbugs.gnu.org; Wed, 22 Jun 2011 14:07:34 -0400 Received: from exprod7og122.obsmtp.com ([64.18.2.22]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1QZRpr-0005iP-UL for 8863@debbugs.gnu.org; Wed, 22 Jun 2011 14:07:32 -0400 Received: from mb2i1.ns.pitt.edu ([136.142.11.153]) by exprod7ob122.postini.com ([64.18.6.12]) with SMTP ID DSNKTgIvXUMcJ3YA5H/lPZuJNhuKrxC3ijNz@postini.com; Wed, 22 Jun 2011 11:07:31 PDT Received: from unixs1.cis.pitt.edu ([136.142.4.246]) by pitt.edu (PMDF V6.3-x11 #31505) with ESMTP id <0LN700B3TECD5D@mb2i1.ns.pitt.edu> for 8863@debbugs.gnu.org; Wed, 22 Jun 2011 14:07:25 -0400 (EDT) Date: Wed, 22 Jun 2011 14:07:25 -0400 (EDT) From: Alp Aker Subject: bug#8863: 23.3; Strikethrough won't display on MacOS X-X-Sender: aker@unixs1.cis.pitt.edu To: 8863@debbugs.gnu.org, cyd@stupidchicken.com Message-id: MIME-version: 1.0 Content-type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Spam-Score: -6.6 (------) X-Debbugs-Envelope-To: 8863 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) Chong Yidong writes: > Does this (100% untested) patch do the right thing? That will only work on GnuStep; it won't do anything on Cocoa. Also, it will only do strikethrough on char and composite char glyphs. I'm working on a patch for this and related issues. (In addition to strike-through, the overline face attribute isn't implemented on NS either. Also, underlining only works with char and comp. char glyphs; so, e.g., tabs are never underlined.) I should have it ready next week. From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 01 22:03:24 2011 Received: (at 8863) by debbugs.gnu.org; 2 Jul 2011 02:03:24 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QcpYJ-00022u-VV for submit@debbugs.gnu.org; Fri, 01 Jul 2011 22:03:24 -0400 Received: from mail-qy0-f179.google.com ([209.85.216.179]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QcpYH-00022f-5k for 8863@debbugs.gnu.org; Fri, 01 Jul 2011 22:03:21 -0400 Received: by qyk29 with SMTP id 29so2232266qyk.3 for <8863@debbugs.gnu.org>; Fri, 01 Jul 2011 19:03:15 -0700 (PDT) Received: by 10.224.46.11 with SMTP id h11mr2948958qaf.229.1309572195566; Fri, 01 Jul 2011 19:03:15 -0700 (PDT) Received: from pluto.luannocracy.com (207-172-223-249.c3-0.smr-ubr3.sbo-smr.ma.static.cable.rcn.com [207.172.223.249]) by mx.google.com with ESMTPS id u15sm3014731qcq.0.2011.07.01.19.03.13 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 01 Jul 2011 19:03:14 -0700 (PDT) Received: by pluto.luannocracy.com (Postfix, from userid 501) id 0A0DB645FE8; Fri, 1 Jul 2011 22:03:12 -0400 (EDT) From: Dave Abrahams To: Chong Yidong Subject: Re: bug#8863: 23.3; Strikethrough won't display on MacOS References: <87aade24li.fsf@stupidchicken.com> Date: Fri, 01 Jul 2011 22:03:12 -0400 In-Reply-To: <87aade24li.fsf@stupidchicken.com> (Chong Yidong's message of "Sat, 18 Jun 2011 17:48:41 -0400") Message-ID: User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/23.3 (darwin) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -4.3 (----) X-Debbugs-Envelope-To: 8863 Cc: 8863@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.3 (----) --=-=-= Content-Type: text/plain on Sat Jun 18 2011, Chong Yidong wrote: > Dave Abrahams writes: > >> Title says it all. Faces with the "strikethrough" property set show up >> as un-struck-through. > > Does this (100% untested) patch do the right thing? > > *** src/nsfont.m 2011-01-02 23:50:46 +0000 > --- src/nsfont.m 2011-06-18 21:48:28 +0000 > *************** > *** 1188,1193 **** > --- 1188,1207 ---- > /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */ > } > > + /* do strike-through */ > + if (face->strike_through_p) > + { > + float line_y = r.origin.y - 0.5 * font->height; > + if (face->strike_through_color != 0) > + [ns_lookup_indexed_color (face->strike_through_color, s->f) set]; > + else > + [col set]; > + DPSmoveto (context, r.origin.x, line_y); > + DPSlineto (context, r.origin.x + r.size.width, line_y); > + if (face->strike_through_color != 0) > + [col set]; > + } > + > /* do underline */ > if (face->underline_p) > { No, but the enclosed 2 patches, together, seem to. Would somebody apply these, please? --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=patch-src_nsterm.h.diff Content-Description: MacOS strikethrough patch #1 of 2 --- src/nsterm.h 2011-01-08 17:45:14.000000000 +0000 +++ src/nsterm.h 2011-07-02 01:46:06.000000000 +0000 @@ -435,6 +435,7 @@ char bold, ital; /* convenience flags */ char synthItal; float voffset; /* mean of ascender/descender offsets */ + float xheight; /* used to position the strikethrough line */ XCharStruct max_bounds; /* we compute glyph codes and metrics on-demand in blocks of 256 indexed by hibyte, lobyte */ --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=patch-src_nsfont.m.diff Content-Description: MacOS strikethrough patch #2 of 2 --- src/nsfont.m.old 2011-07-02 01:52:29.000000000 +0000 +++ src/nsfont.m 2011-07-02 01:53:51.000000000 +0000 @@ -840,6 +840,7 @@ font_info->underwidth = [sfont underlineThickness]; font_info->size = font->pixel_size; font_info->voffset = lrint (hshrink * [sfont ascender] + expand * hd / 2); + font_info->xheight = lrint (hshrink * [sfont xHeight] + expand * hd / 2); /* max bounds */ font_info->max_bounds.ascent = @@ -1188,6 +1189,22 @@ /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */ } + /* do strike-through */ + if (face->strike_through_p) + { + float line_y = lrint (r.origin.y - 0.5 * font->xheight); + if (face->strike_through_color != 0) + [ns_lookup_indexed_color (face->strike_through_color, s->f) set]; + else + [col set]; + DPSmoveto (context, r.origin.x, line_y); + DPSlineto (context, r.origin.x + r.size.width, line_y); + if (face->strike_through_color != 0) + [col set]; + } + else + [col set]; + /* do underline */ if (face->underline_p) { @@ -1248,6 +1265,23 @@ CGContextSetTextDrawingMode (gcontext, kCGTextFill); } + if (face->strike_through_p) + { + float line_y = lrint (r.origin.y - 0.5 * font->xheight); + if (face->strike_through_color != 0) + [ns_lookup_indexed_color (face->strike_through_color, s->f) set]; + else + [col set]; + CGContextBeginPath (gcontext); + CGContextMoveToPoint (gcontext, r.origin.x, line_y); + CGContextAddLineToPoint (gcontext, r.origin.x + r.size.width, line_y); + CGContextStrokePath (gcontext); + if (face->strike_through_color != 0) + [col set]; + } + else + [col set]; + if (face->underline_p) { if (face->underline_color != 0) --=-=-= Content-Type: text/plain -- Dave Abrahams BoostPro Computing http://www.boostpro.com --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 02 01:53:57 2011 Received: (at submit) by debbugs.gnu.org; 2 Jul 2011 05:53:57 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qct9R-00074W-1F for submit@debbugs.gnu.org; Sat, 02 Jul 2011 01:53:57 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qct9O-00074I-EY for submit@debbugs.gnu.org; Sat, 02 Jul 2011 01:53:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qct9H-0001s3-Sz for submit@debbugs.gnu.org; Sat, 02 Jul 2011 01:53:48 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_MED,T_RP_MATCHES_RCVD,T_TO_NO_BRKTS_FREEMAIL autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:43449) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qct9H-0001rz-KX for submit@debbugs.gnu.org; Sat, 02 Jul 2011 01:53:47 -0400 Received: from eggs.gnu.org ([140.186.70.92]:38016) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qct9F-00082a-UP for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 01:53:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qct9E-0001rY-DI for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 01:53:45 -0400 Received: from lo.gmane.org ([80.91.229.12]:36313) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qct9D-0001rQ-U5 for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 01:53:44 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Qct9C-00038v-2T for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 07:53:42 +0200 Received: from pool-72-95-250-103.pitbpa.east.verizon.net ([72.95.250.103]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 02 Jul 2011 07:53:42 +0200 Received: from alp.tekin.aker by pool-72-95-250-103.pitbpa.east.verizon.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 02 Jul 2011 07:53:42 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Alp Aker Subject: Re: bug#8863: 23.3; Strikethrough won't display on MacOS Date: Sat, 02 Jul 2011 01:53:28 -0400 Lines: 24 Message-ID: References: <87aade24li.fsf@stupidchicken.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: pool-72-95-250-103.pitbpa.east.verizon.net User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (darwin) Cancel-Lock: sha1:eDrFWcrN/yUK/ygMSGtdO6dhV+s= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -5.9 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.9 (-----) > Dave Abrahams writes: > > No, but the enclosed 2 patches, together, seem to. Would somebody apply > these, please? I mentioned some problems with Chong Yidong's suggestion, one of which still applies here: this patch won't work with stretch or image glyphs (so, e.g., it won't do strike-through on tab characters). Also (something I didn't mention in the earlier post), this uses the same Quartz drawing API as the existing code for underlining, and so suffers from a problem that exists in that case as well; this kind of line-drawing is subject to anti-aliasing effects that will cause lines whose requested thickness is 1 pixel to appear thicker than that (specifically, the line-drawing commands in question stroke lines so that they're centered on their specified paths, and so a line whose thickness is an odd number of pixels is dithered, making it look thicker). Last week I promised a patch that would implement strike-through and overline face attributes and address problems with the existing implementation of underlining. I'll try to finish that up and post it tomorrow. From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 02 22:45:22 2011 Received: (at submit) by debbugs.gnu.org; 3 Jul 2011 02:45:22 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QdCgT-0005J3-JO for submit@debbugs.gnu.org; Sat, 02 Jul 2011 22:45:22 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QdCgR-00058U-7X for submit@debbugs.gnu.org; Sat, 02 Jul 2011 22:45:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QdCgK-0000zw-NJ for submit@debbugs.gnu.org; Sat, 02 Jul 2011 22:45:13 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:46352) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QdCgK-0000zs-51 for submit@debbugs.gnu.org; Sat, 02 Jul 2011 22:45:12 -0400 Received: from eggs.gnu.org ([140.186.70.92]:45493) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QdCgI-0005H9-2R for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 22:45:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QdCgG-0000yo-Lj for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 22:45:09 -0400 Received: from lo.gmane.org ([80.91.229.12]:50708) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QdCgG-0000x2-63 for bug-gnu-emacs@gnu.org; Sat, 02 Jul 2011 22:45:08 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1QdCgC-0005ND-Pp for bug-gnu-emacs@gnu.org; Sun, 03 Jul 2011 04:45:04 +0200 Received: from 207-172-223-249.c3-0.smr-ubr3.sbo-smr.ma.static.cable.rcn.com ([207.172.223.249]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 03 Jul 2011 04:45:04 +0200 Received: from dave by 207-172-223-249.c3-0.smr-ubr3.sbo-smr.ma.static.cable.rcn.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 03 Jul 2011 04:45:04 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Dave Abrahams Subject: Re: bug#8863: 23.3; Strikethrough won't display on MacOS Date: Sat, 02 Jul 2011 22:27:31 -0400 Lines: 41 Message-ID: References: <87aade24li.fsf@stupidchicken.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 207-172-223-249.c3-0.smr-ubr3.sbo-smr.ma.static.cable.rcn.com User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/23.3 (darwin) Cancel-Lock: sha1:K2uCaG5OtnQQ050KLOCALA4H0eY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -5.4 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.4 (-----) on Sat Jul 02 2011, Alp Aker wrote: >> Dave Abrahams writes: >> >> No, but the enclosed 2 patches, together, seem to. Would somebody apply >> these, please? > > I mentioned some problems with Chong Yidong's suggestion, one of which > still applies here: this patch won't work with stretch or image glyphs > (so, e.g., it won't do strike-through on tab characters). > > Also (something I didn't mention in the earlier post), this uses the > same Quartz drawing API as the existing code for underlining, and so > suffers from a problem that exists in that case as well; this kind of > line-drawing is subject to anti-aliasing effects that will cause lines > whose requested thickness is 1 pixel to appear thicker than that > (specifically, the line-drawing commands in question stroke lines so > that they're centered on their specified paths, and so a line whose > thickness is an odd number of pixels is dithered, making it look > thicker). On my screen it's just grayscaled. However, as long as you're in that code, you might also consider whether there's too much rounding off (calls to lrint) going on in there. It certainly did look suspicious to me, but it worked "well enough" that I wasn't going to mess with it. > Last week I promised a patch that would implement strike-through and > overline face attributes and address problems with the existing > implementation of underlining. I'll try to finish that up and post it > tomorrow. Wow, I missed that post and wasted a day implementing this :( Thanks for your work on it. Will you apply this to the 23.3 branch as well as trunk? -- Dave Abrahams BoostPro Computing http://www.boostpro.com From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 08 22:52:56 2011 Received: (at control) by debbugs.gnu.org; 9 Jul 2011 02:52:56 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QfNf5-0006vh-6A for submit@debbugs.gnu.org; Fri, 08 Jul 2011 22:52:55 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.183] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QfNf2-0006vR-SV for control@debbugs.gnu.org; Fri, 08 Jul 2011 22:52:53 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgYHAD7BF05MCqt8/2dsb2JhbABTmFyOcXiIdMAAhjgEnweELw X-IronPort-AV: E=Sophos;i="4.65,502,1304308800"; d="scan'208";a="123910394" Received: from 76-10-171-124.dsl.teksavvy.com (HELO ceviche.home) ([76.10.171.124]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 08 Jul 2011 22:52:46 -0400 Received: by ceviche.home (Postfix, from userid 20848) id B683E660D5; Fri, 8 Jul 2011 22:52:46 -0400 (EDT) From: Stefan Monnier To: control@debbugs.gnu.org Subject: Re: bug#8651: `raise' properties on NextStep Message-ID: References: Date: Fri, 08 Jul 2011 22:52:46 -0400 In-Reply-To: (Alp Aker's message of "Wed, 22 Jun 2011 14:21:24 -0400 (EDT)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) severity 8651 important severity 8863 important severity 8680 important tags 8680 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 27 15:10:25 2011 Received: (at 8863) by debbugs.gnu.org; 27 Jul 2011 19:10:25 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qm9Ut-000725-SX for submit@debbugs.gnu.org; Wed, 27 Jul 2011 15:10:25 -0400 Received: from mail-qw0-f44.google.com ([209.85.216.44]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QlnVg-0005xx-Dc for 8863@debbugs.gnu.org; Tue, 26 Jul 2011 15:41:45 -0400 Received: by qwc23 with SMTP id 23so451563qwc.3 for <8863@debbugs.gnu.org>; Tue, 26 Jul 2011 12:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=l5pH6WAj8H3VOQ4vm4pCwapA8309WSj85lFG2e3A4+8=; b=iN15fSfbVZsd/IqdHvNKqnSqMRikUp9OksBcZucZP8vg7+oSi9IkyM7pKKjb1CdgCt 1wyOo+XZ7Z7TJy6Nwt2j5RKV5nCDtxwSo6KbHWCEHmSTxJwceJNTZJfVD1GVg9PsQfZq vHSwm/ClypaZUL4AXld6RRQ6YQLA6i+LhKNVc= MIME-Version: 1.0 Received: by 10.229.221.197 with SMTP id id5mr4615460qcb.166.1311709298974; Tue, 26 Jul 2011 12:41:38 -0700 (PDT) Received: by 10.229.250.132 with HTTP; Tue, 26 Jul 2011 12:41:38 -0700 (PDT) Date: Tue, 26 Jul 2011 15:41:38 -0400 Message-ID: Subject: [PATCH] bug#8863: 23.3; Strikethrough won't display on MacOS From: Alp Aker To: 8863@debbugs.gnu.org Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Score: -4.8 (----) X-Debbugs-Envelope-To: 8863 X-Mailman-Approved-At: Wed, 27 Jul 2011 15:10:22 -0400 Cc: Dave Abrahams , Chong Yidong X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.5 (----) Dave Abrahams wrote: > Thanks for your work on it. Will you apply this to the 23.3 branch as > well as trunk? I'm not a committer, so that will be up to whoever decides to apply the patch. I should note the code below has only been tested on 24.0.50; I suspect it should work as it on 23.3, but haven't tried it. (About the anti-aliasing issue I mentioned before: Whether it's noticeable depends on factors like font metrics and the degree of contrast between background and foreground. I've done everything with exact pixel drawing, so it shouldn't be an issue.) A quick implementation note: This patch implements strike-through and overline face attributes on NS. It also implements underlining for stretch and image glyphs (the existing implementation does underlining only for char and composite char glyphs). It also adds support for the user options underline-minimum-offset, x-use-underline-position-properties, and x-underline-at-descent-line, which are currently ignored on NextStep. Sorry for the delay in posting this. This patch is large enough that I need a copyright assignment, which has taken a few weeks. The signed papers should have arrived as FSF today, so hopefully the way will soon be clear to incorporate this code. 2011-07-26 Alp Aker Implement strike-through and overline face attributes on NextStep. Extend implemention of underlining to include stretch and image glyphs. Add support for user options underline-minimum-offset, x-use-underline-position-properties, and x-underline-at-descent-line. * nsfont.m (nsfont_open): Use underline position provided by font, instead of hard-coded value of 2. (nsfont_draw): Remove underlining code. Call ns_draw_text_decoration instead. * nsterm.h: Add declaration for ns_draw_text_decoration. * nsterm.m (ns_draw_text_decoration): New function for drawing underline, overline, and strike-through. (ns_dumpglyphs_image, ns_dumpglyphs_stretch): Add call to ns_draw_text_decoration. Change treatment of cursor drawing to accomodate underlining, etc. === modified file 'src/nsfont.m' --- src/nsfont.m 2011-04-16 03:14:08 +0000 +++ src/nsfont.m 2011-07-25 01:29:36 +0000 @@ -845,7 +845,7 @@ expand = 0.0; hshrink = 1.0; - font_info->underpos = 2; /*[sfont underlinePosition] is often clipped out */ + font_info->underpos = [sfont underlinePosition]; font_info->underwidth = [sfont underlineThickness]; font_info->size = font->pixel_size; font_info->voffset = lrint (hshrink * [sfont ascender] + expand * hd / 2); @@ -1196,20 +1196,7 @@ /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */ } - /* do underline */ - if (face->underline_p) - { - if (face->underline_color != 0) - [ns_lookup_indexed_color (face->underline_color, s->f) set]; - else - [col set]; - DPSmoveto (context, r.origin.x, r.origin.y + font->underpos); - DPSlineto (context, r.origin.x+r.size.width, r.origin.y+font->underpos); - if (face->underline_color != 0) - [col set]; - } - else - [col set]; + [col set]; /* draw with DPSxshow () */ DPSmoveto (context, r.origin.x, r.origin.y); @@ -1255,23 +1242,7 @@ CGContextSetTextDrawingMode (gcontext, kCGTextFill); } - if (face->underline_p) - { - if (face->underline_color != 0) - [ns_lookup_indexed_color (face->underline_color, s->f) set]; - else - [col set]; - CGContextBeginPath (gcontext); - CGContextMoveToPoint (gcontext, - r.origin.x, r.origin.y + font->underpos); - CGContextAddLineToPoint (gcontext, r.origin.x + r.size.width, - r.origin.y + font->underpos); - CGContextStrokePath (gcontext); - if (face->underline_color != 0) - [col set]; - } - else - [col set]; + [col set]; CGContextSetTextPosition (gcontext, r.origin.x, r.origin.y); CGContextShowGlyphsWithAdvances (gcontext, s->char2b + s->cmp_from, @@ -1287,6 +1258,10 @@ CGContextRestoreGState (gcontext); } #endif /* NS_IMPL_COCOA */ + + /* Draw underline, overline, strike-through. */ + ns_draw_text_decoration (s, face, col, r.size.width, r.origin.x); + return to-from; } === modified file 'src/nsterm.h' --- src/nsterm.h 2011-07-08 10:04:23 +0000 +++ src/nsterm.h 2011-07-25 01:29:36 +0000 @@ -825,6 +825,13 @@ float r, float g, float b, float a); extern NSPoint last_mouse_motion_position; +/* From nsterm.m, needed in nsfont.m. */ +#ifdef __OBJC__ +extern void +ns_draw_text_decoration (struct glyph_string *s, struct face *face, + NSColor *defaultCol, CGFloat width, CGFloat x); +#endif + #ifdef NS_IMPL_GNUSTEP extern char gnustep_base_version[]; /* version tracking */ #endif === modified file 'src/nsterm.m' --- src/nsterm.m 2011-07-23 08:33:06 +0000 +++ src/nsterm.m 2011-07-25 06:33:54 +0000 @@ -263,8 +263,6 @@ static void ns_judge_scroll_bars (struct frame *f); void x_set_frame_alpha (struct frame *f); -/* FIXME: figure out what to do with underline_minimum_offset. */ - /* ========================================================================== @@ -2597,6 +2595,107 @@ return n; } +void +ns_draw_text_decoration (struct glyph_string *s, struct face *face, + NSColor *defaultCol, CGFloat width, CGFloat x) +/* -------------------------------------------------------------------------- + Draw underline, overline, and strike-through on glyph string s. + -------------------------------------------------------------------------- */ +{ + if (s->for_overlaps) + return; + + /* Do underline. */ + if (face->underline_p) + { + NSRect r; + unsigned long thickness, position; + + /* If the prev was underlined, match its appearance. */ + if (s->prev && s->prev->face->underline_p + && s->prev->underline_thickness > 0) + { + thickness = s->prev->underline_thickness; + position = s->prev->underline_position; + } + else + { + struct font *font; + unsigned long descent; + + font=s->font; + descent = s->y + s->height - s->ybase; + + /* Use underline thickness of font, defaulting to 1. */ + thickness = (font && font->underline_thickness > 0) + ? font->underline_thickness : 1; + + /* Determine the offset of underlining from the baseline. */ + if (x_underline_at_descent_line) + position = descent - thickness; + else if (x_use_underline_position_properties + && font && font->underline_position >= 0) + position = font->underline_position; + else if (font) + position = lround (font->descent / 2); + else + position = underline_minimum_offset; + + position = max (position, underline_minimum_offset); + + /* Ensure underlining is not cropped. */ + if (descent <= position) + { + position = descent - 1; + thickness = 1; + } + else if (descent < position + thickness) + thickness = 1; + } + + s->underline_thickness = thickness; + s->underline_position = position; + + r = NSMakeRect (x, s->ybase + position, width, thickness); + + if (face->underline_defaulted_p) + [defaultCol set]; + else + [ns_lookup_indexed_color (face->underline_color, s->f) set]; + NSRectFill (r); + } + + /* Do overline. We follow other terms in using a thickness of 1 + and ignoring overline_margin. */ + if (face->overline_p) + { + NSRect r; + r = NSMakeRect (x, s->y, width, 1); + + if (face->overline_color_defaulted_p) + [defaultCol set]; + else + [ns_lookup_indexed_color (face->overline_color, s->f) set]; + NSRectFill (r); + } + + /* Do strike-through. We follow other terms for thickness and + vertical position.*/ + if (face->strike_through_p) + { + NSRect r; + unsigned long dy; + + dy = lrint ((s->height - 1) / 2); + r = NSMakeRect (x, s->y + dy, width, 1); + + if (face->strike_through_color_defaulted_p) + [defaultCol set]; + else + [ns_lookup_indexed_color (face->strike_through_color, s->f) set]; + NSRectFill (r); + } +} static void ns_draw_box (NSRect r, float thickness, NSColor *col, char left_p, char right_p) @@ -2854,6 +2953,7 @@ char raised_p; NSRect br; struct face *face; + NSColor *tdCol; NSTRACE (ns_dumpglyphs_image); @@ -2882,10 +2982,7 @@ else face = FACE_FROM_ID (s->f, s->first_glyph->face_id); - if (s->hl == DRAW_CURSOR) - [FRAME_CURSOR_COLOR (s->f) set]; - else - [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set]; + [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set]; if (bg_height > s->slice.height || s->img->hmargin || s->img->vmargin || s->img->mask || s->img->pixmap == 0 || s->width != s->background_width) @@ -2923,6 +3020,27 @@ [img compositeToPoint: NSMakePoint (x, y + s->slice.height) operation: NSCompositeSourceOver]; + if (s->hl == DRAW_CURSOR) + { + [FRAME_CURSOR_COLOR (s->f) set]; + if (s->w->phys_cursor_type == FILLED_BOX_CURSOR) + tdCol = ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f); + else + /* Currently on NS img->mask is always 0. Since + get_window_cursor_type specifies a hollow box cursor when on + a non-masked image we never reach this clause. But we put it + in in antipication of better support for image masks on + NS. */ + tdCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f); + } + else + { + tdCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f); + } + + /* Draw underline, overline, strike-through. */ + ns_draw_text_decoration (s, face, tdCol, br.size.width, br.origin.x); + /* Draw relief, if requested */ if (s->img->relief || s->hl ==DRAW_IMAGE_RAISED || s->hl ==DRAW_IMAGE_SUNKEN) { @@ -2967,12 +3085,27 @@ NSRect r[2]; int n, i; struct face *face; + NSColor *fgCol, *bgCol; if (!s->background_filled_p) { n = ns_get_glyph_string_clip_rect (s, r); *r = NSMakeRect (s->x, s->y, s->background_width, s->height); + ns_focus (s->f, r, n); + + if (s->hl == DRAW_MOUSE_FACE) + { + face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id); + if (!face) + face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); + } + else + face = FACE_FROM_ID (s->f, s->first_glyph->face_id); + + bgCol = ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f); + fgCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f); + for (i=0; irow->full_width_p) @@ -2998,30 +3131,37 @@ FRAME_PIXEL_WIDTH (s->f)); } + [bgCol set]; + /* NOTE: under NS this is NOT used to draw cursors, but we must avoid overwriting cursor (usually when cursor on a tab) */ if (s->hl == DRAW_CURSOR) { - r[i].origin.x += s->width; - r[i].size.width -= s->width; - } + CGFloat x, width; + + x = r[i].origin.x; + width = s->w->phys_cursor_width; + r[i].size.width -= width; + r[i].origin.x += width; + + NSRectFill (r[i]); + + /* Draw overlining, etc. on the cursor. */ + if (s->w->phys_cursor_type == FILLED_BOX_CURSOR) + ns_draw_text_decoration (s, face, bgCol, width, x); + else + ns_draw_text_decoration (s, face, fgCol, width, x); + } + else + { + NSRectFill (r[i]); + } + + /* Draw overlining, etc. on the stretch glyph (or the part + of the stretch glyph after the cursor). */ + ns_draw_text_decoration (s, face, fgCol, r[i].size.width, + r[i].origin.x); } - - ns_focus (s->f, r, n); - - if (s->hl == DRAW_MOUSE_FACE) - { - face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id); - if (!face) - face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); - } - else - face = FACE_FROM_ID (s->f, s->first_glyph->face_id); - - [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set]; - - NSRectFill (r[0]); - NSRectFill (r[1]); ns_unfocus (s->f); s->background_filled_p = 1; } @@ -6556,23 +6696,17 @@ Vx_toolkit_scroll_bars = Qnil; #endif - /* these are unsupported but we need the declarations to avoid whining - messages from cus-start.el */ DEFVAR_BOOL ("x-use-underline-position-properties", x_use_underline_position_properties, - doc: /* NOT SUPPORTED UNDER NS. -*Non-nil means make use of UNDERLINE_POSITION font properties. + doc: /*Non-nil means make use of UNDERLINE_POSITION font properties. A value of nil means ignore them. If you encounter fonts with bogus UNDERLINE_POSITION font properties, for example 7x13 on XFree prior -to 4.1, set this to nil. - -NOTE: Not supported on Mac yet. */); +to 4.1, set this to nil. */); x_use_underline_position_properties = 0; DEFVAR_BOOL ("x-underline-at-descent-line", x_underline_at_descent_line, - doc: /* NOT SUPPORTED UNDER NS. -*Non-nil means to draw the underline at the same place as the descent line. + doc: /* Non-nil means to draw the underline at the same place as the descent line. A value of nil means to draw the underline according to the value of the variable `x-use-underline-position-properties', which is usually at the baseline level. The default value is nil. */); From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 28 14:26:37 2011 Received: (at 8863) by debbugs.gnu.org; 28 Jul 2011 18:26:37 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QmVI5-0002S6-1c for submit@debbugs.gnu.org; Thu, 28 Jul 2011 14:26:37 -0400 Received: from vm-emlprdomr-05.its.yale.edu ([130.132.50.146]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QmVI2-0002Rz-G1 for 8863@debbugs.gnu.org; Thu, 28 Jul 2011 14:26:35 -0400 Received: from furball ([128.36.14.95]) (authenticated bits=0) by vm-emlprdomr-05.its.yale.edu (8.14.4/8.14.4) with ESMTP id p6SIQVNV014895 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Thu, 28 Jul 2011 14:26:31 -0400 From: Chong Yidong To: Alp Aker Subject: Re: [PATCH] bug#8863: 23.3; Strikethrough won't display on MacOS References: Date: Thu, 28 Jul 2011 14:26:31 -0400 In-Reply-To: (Alp Aker's message of "Tue, 26 Jul 2011 15:41:38 -0400") Message-ID: <87zkjyl0rs.fsf@stupidchicken.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.71 on 130.132.50.146 X-Spam-Score: -2.7 (--) X-Debbugs-Envelope-To: 8863 Cc: Dave Abrahams , 8863@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.7 (--) Alp Aker writes: > I'm not a committer, so that will be up to whoever decides to apply > the patch. I should note the code below has only been tested on > 24.0.50; I suspect it should work as it on 23.3, but haven't tried it. > > Sorry for the delay in posting this. This patch is large enough that > I need a copyright assignment, which has taken a few weeks. The > signed papers should have arrived as FSF today, so hopefully the way > will soon be clear to incorporate this code. Committed to trunk, thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 28 14:26:49 2011 Received: (at control) by debbugs.gnu.org; 28 Jul 2011 18:26:49 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QmVIG-0002SS-8A for submit@debbugs.gnu.org; Thu, 28 Jul 2011 14:26:48 -0400 Received: from vm-emlprdomr-06.its.yale.edu ([130.132.50.147]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QmVID-0002SL-PH for control@debbugs.gnu.org; Thu, 28 Jul 2011 14:26:46 -0400 Received: from furball ([128.36.14.95]) (authenticated bits=0) by vm-emlprdomr-06.its.yale.edu (8.14.4/8.14.4) with ESMTP id p6SIQiVK001702 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Thu, 28 Jul 2011 14:26:45 -0400 From: Chong Yidong To: control@debbugs.gnu.org Subject: close 8863 Date: Thu, 28 Jul 2011 14:26:44 -0400 Message-ID: <877h72mfbv.fsf@stupidchicken.com> MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.71 on 130.132.50.147 X-Spam-Score: -2.7 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.7 (--) close 8863 thanks From unknown Fri Sep 05 11:51:50 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 26 Aug 2011 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator