From unknown Mon Aug 18 11:25:19 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#31588 <31588@debbugs.gnu.org> To: bug#31588 <31588@debbugs.gnu.org> Subject: Status: 26.1; format counts some Unicode characters as two Reply-To: bug#31588 <31588@debbugs.gnu.org> Date: Mon, 18 Aug 2025 18:25:19 +0000 retitle 31588 26.1; format counts some Unicode characters as two reassign 31588 emacs submitter 31588 "James P. Ascher" severity 31588 minor tag 31588 notabug thanks From debbugs-submit-bounces@debbugs.gnu.org Thu May 24 20:37:23 2018 Received: (at submit) by debbugs.gnu.org; 25 May 2018 00:37:23 +0000 Received: from localhost ([127.0.0.1]:47129 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fM0jS-000418-At for submit@debbugs.gnu.org; Thu, 24 May 2018 20:37:23 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36201) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fM0jQ-00040w-QI for submit@debbugs.gnu.org; Thu, 24 May 2018 20:37:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fM0jI-00046n-Ir for submit@debbugs.gnu.org; Thu, 24 May 2018 20:37:15 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:40854) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fM0jI-00046h-F7 for submit@debbugs.gnu.org; Thu, 24 May 2018 20:37:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55394) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fM0jE-0002MO-LY for bug-gnu-emacs@gnu.org; Thu, 24 May 2018 20:37:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fM0jA-00043c-IS for bug-gnu-emacs@gnu.org; Thu, 24 May 2018 20:37:08 -0400 Received: from mail-qt0-x233.google.com ([2607:f8b0:400d:c0d::233]:44801) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fM0jA-00043G-B0 for bug-gnu-emacs@gnu.org; Thu, 24 May 2018 20:37:04 -0400 Received: by mail-qt0-x233.google.com with SMTP id d3-v6so4497098qtp.11 for ; Thu, 24 May 2018 17:37:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virginia-edu.20150623.gappssmtp.com; s=20150623; h=user-agent:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=Z8wzbVWQW29R36WcgedC/X6fhQvqgr5q2db9JTkxmSw=; b=Qx35MHBjptw140T194luqzWKOyFBXkaEJstWdgg1fundqF7MBDoV0vWCBc36hXxKRu Ux1W2ubXLydDGdMe2RbyNdAPsWVTZGFXVOYK1B6/hERtVcotzIli1NeT8xAa/WbNumJ2 UGE5OM6c/tZvP56y6YDh7TFcnLR2jdnMxSRbcwJJJGJ5TI8aAJDS7tJ1/TUhqyAbKL2G cjm4RKgkmqYJJgnJPcOJH7Rzu9FSsqyhasOeAcTbky81DpiuDTqZTEykl0XQvCho3ZvV GKJ1xwqbmakXj6v7rsJL5LrQv/6i+fjPwAnWt8bSRj8D22Gkm/est0ieiiNIMjtbN2n/ lsHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:from:to:subject:date:message-id :mime-version:content-transfer-encoding; bh=Z8wzbVWQW29R36WcgedC/X6fhQvqgr5q2db9JTkxmSw=; b=cBbOyJVAt13Ooj9ymiA/FMBBqRCudqdWBWKxLQcH4Qnvh2cp+UAb3UEjNhDq9aDL+x pWvwIeY5VULQk3y5yzgVZ42F5vNQznr3E1YHgzWL8e844VMK/H9Xp9po8QovmXfKiMjQ Fbv9E/Amsgi/vFm6JN3cxLFz9BZBx8mFCL6/fjfnMddHT+KMAUShPamu304beTyWbkDn v6CGDTeYHpQy4GIx0kN+Y0UGAFTLdbh0TzKkamdLLh+bpKR7mBGO5EL3SUaaSXoFurud myCxVbisqRrUZECPi6paP9yxD9+aXnK81e8HGBgY6lW2vtCyUrMPhoqXTzAqhCcq8wgA Qphw== X-Gm-Message-State: ALKqPwdxSIHEAJLCfNZ5xubkYE9nzNxJJkM3rr+3hRL3hA5+cXqzmHh0 T6tspPe1Ukssg0psWY8Q2vfD80aT X-Google-Smtp-Source: ADUXVKJPpV4UD+oFxqZVbnu4Box63qr1u4hUnrj1FH8CyR6wXRPv1So1q3kMrO33j+pzCgIJL5sNog== X-Received: by 2002:a0c:f64d:: with SMTP id s13-v6mr192364qvm.105.1527208622430; Thu, 24 May 2018 17:37:02 -0700 (PDT) Received: from Grumpys-MacBook.local.gmail.com ([76.104.27.111]) by smtp.gmail.com with ESMTPSA id 29-v6sm18734626qto.42.2018.05.24.17.36.57 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 24 May 2018 17:36:58 -0700 (PDT) User-agent: mu4e 1.0; emacs 26.1 From: "James P. Ascher" To: bug-gnu-emacs@gnu.org Subject: 26.1; format counts some Unicode characters as two Date: Thu, 24 May 2018 20:36:57 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) I've exhausted my ability to debug this one, having ended up in the C source code, which is a bit beyond me. I reproduced it with 'emacs -Q' the following way: 1: Write a dozen x's, i.e. "xxxxxxxxxxxx" on *scratch*. 2: Move pointer to the middle of the line somewhere. 3: M-S-: and call (insert (format "%-2s" '=E2=9E=96)) What I expected: xxxxx=E2=9E=96 xxxxxxxx What results: xxxxxx=E2=9E=96xxxxxxx In comparison, (insert (format "%-2s" 'z)) gives: xxxxxxz xxxxxx And, (insert (format "%-3s" '=E2=9E=96z)) gives: xxxxxx=E2=9E=96zxxxxxx The same problem occurs on my setup with =E2=9D=8C (CROSS MARK). However, these Unicode items characters work as I expect: =E2=96=B6 (BLACK RIGHT-POINTING TRIANGLE), =E2=9C=9A (HEAVY GREEK CROSS), =E2=96=B7 (WHITE R= IGHT-POINTING TRIANGLE), and =E2=97=BC (BLACK MEDIUM SQUARE). As far as I can tell, something is off about the styled_format and how it counts characters- I suspect something about counting multibyte characters, but it's a little beyond me. I observed this bug while trying to fix a bug comes from the headers display of the mu4e package where the overlays that show a deleted flag are one character too narrow, which displays it incorrectly. I'm happy to give more info or try other things. Thanks for all your hard work on Emacs and I hope this is helpful! Respectfully submitted, -James ***The below is NOT my Emacs -Q session, but I left it in case it's useful*** In GNU Emacs 26.1 (build 1, x86_64-apple-darwin17.5.0, NS appkit-1561.40 Ve= rsion 10.13.4 (Build 17E202)) of 2018-05-17 built on Grumpys-MacBook.local Windowing system distributor 'Apple', version 10.3.1561 Recent messages: find-function-C-source: The C source file editfns.c is not available Note: file is write protected Mark saved where search started Quit nil Quit Entering debugger... Back to top level Entering debugger... Back to top level nil [3 times] Configured using: 'configure --disable-dependency-tracking --disable-silent-rules --enable-locallisppath=3D/usr/local/share/emacs/site-lisp --infodir=3D/usr/local/Cellar/emacs/26.1-rc1/share/info/emacs --prefix=3D/usr/local/Cellar/emacs/26.1-rc1 --without-x --with-xml2 --without-dbus --with-gnutls --with-imagemagick --with-rsvg --without-pop --with-ns --disable-ns-self-contained' Configured features: JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS THREADS LCMS2 Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: C/*l Minor modes in effect: shell-dirtrack-mode: t helm-mode: t helm-descbinds-mode: t async-bytecomp-package-mode: t yas-global-mode: t yas-minor-mode: t beacon-mode: t global-diff-hl-mode: t diff-hl-mode: t diff-auto-refine-mode: t global-anzu-mode: t anzu-mode: t volatile-highlights-mode: t save-place-mode: t savehist-mode: t show-smartparens-global-mode: t show-smartparens-mode: t global-auto-revert-mode: t on-screen-global-mode: t global-company-mode: t delete-selection-mode: t auto-insert-mode: t cl-old-struct-compat-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t size-indication-mode: t column-number-mode: t line-number-mode: t global-visual-line-mode: t visual-line-mode: t transient-mark-mode: t abbrev-mode: t Load-path shadows: /Users/james/.emacs.d/elpa/org-20171225/ob-stan hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-stan /Users/james/.emacs.d/elpa/org-20171225/ob-exp hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-exp /Users/james/.emacs.d/elpa/org-20171225/ob-J hides /usr/local/Cellar/emacs/= 26.1-rc1/share/emacs/26.1/lisp/org/ob-J /Users/james/.emacs.d/elpa/org-20171225/org-eshell hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-eshell /Users/james/.emacs.d/elpa/org-20171225/ob-emacs-lisp hides /usr/local/Cell= ar/emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-emacs-lisp /Users/james/.emacs.d/elpa/org-20171225/org-gnus hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-gnus /Users/james/.emacs.d/elpa/org-20171225/ob-css hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-css /Users/james/.emacs.d/elpa/org-20171225/ob-lob hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-lob /Users/james/.emacs.d/elpa/org-20171225/ob-forth hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ob-forth /Users/james/.emacs.d/elpa/org-20171225/org-macs hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-macs /Users/james/.emacs.d/elpa/org-20171225/ob hides /usr/local/Cellar/emacs/26= .1-rc1/share/emacs/26.1/lisp/org/ob /Users/james/.emacs.d/elpa/org-20171225/org-version hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-version /Users/james/.emacs.d/elpa/org-20171225/ob-scheme hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-scheme /Users/james/.emacs.d/elpa/org-20171225/ox hides /usr/local/Cellar/emacs/26= .1-rc1/share/emacs/26.1/lisp/org/ox /Users/james/.emacs.d/elpa/org-20171225/ob-abc hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-abc /Users/james/.emacs.d/elpa/org-20171225/ob-C hides /usr/local/Cellar/emacs/= 26.1-rc1/share/emacs/26.1/lisp/org/ob-C /Users/james/.emacs.d/elpa/org-20171225/org-capture hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-capture /Users/james/.emacs.d/elpa/org-20171225/ob-ref hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-ref /Users/james/.emacs.d/elpa/org-20171225/ob-clojure hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-clojure /Users/james/.emacs.d/elpa/org-20171225/org-mouse hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-mouse /Users/james/.emacs.d/elpa/org-20171225/ob-ledger hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-ledger /Users/james/.emacs.d/elpa/org-20171225/org-ctags hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-ctags /Users/james/.emacs.d/elpa/org-20171225/org-entities hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-entities /Users/james/.emacs.d/elpa/org-20171225/org-archive hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-archive /Users/james/.emacs.d/elpa/org-20171225/ob-screen hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-screen /Users/james/.emacs.d/elpa/org-20171225/ob-haskell hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-haskell /Users/james/.emacs.d/elpa/org-20171225/ob-asymptote hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-asymptote /Users/james/.emacs.d/elpa/org-20171225/org-mhe hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/org-mhe /Users/james/.emacs.d/elpa/org-20171225/org-table hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-table /Users/james/.emacs.d/elpa/org-20171225/ob-keys hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-keys /Users/james/.emacs.d/elpa/org-20171225/ox-org hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ox-org /Users/james/.emacs.d/elpa/org-20171225/org-plot hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-plot /Users/james/.emacs.d/elpa/org-20171225/ob-awk hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-awk /Users/james/.emacs.d/elpa/org-20171225/ob-groovy hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-groovy /Users/james/.emacs.d/elpa/org-20171225/ob-octave hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-octave /Users/james/.emacs.d/elpa/org-20171225/org-faces hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-faces /Users/james/.emacs.d/elpa/org-20171225/org-colview hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-colview /Users/james/.emacs.d/elpa/org-20171225/ob-R hides /usr/local/Cellar/emacs/= 26.1-rc1/share/emacs/26.1/lisp/org/ob-R /Users/james/.emacs.d/elpa/org-20171225/org-timer hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-timer /Users/james/.emacs.d/elpa/org-20171225/ob-ebnf hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-ebnf /Users/james/.emacs.d/elpa/org-20171225/org-mobile hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-mobile /Users/james/.emacs.d/elpa/org-20171225/ob-fortran hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-fortran /Users/james/.emacs.d/elpa/org-20171225/ob-shell hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ob-shell /Users/james/.emacs.d/elpa/org-20171225/ob-perl hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-perl /Users/james/.emacs.d/elpa/org-20171225/ob-sqlite hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-sqlite /Users/james/.emacs.d/elpa/org-20171225/ob-sed hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-sed /Users/james/.emacs.d/elpa/org-20171225/org-list hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-list /Users/james/.emacs.d/elpa/org-20171225/ob-ruby hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-ruby /Users/james/.emacs.d/elpa/org-20171225/ob-eval hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-eval /Users/james/.emacs.d/elpa/org-20171225/org-habit hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-habit /Users/james/.emacs.d/elpa/org-20171225/org-clock hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-clock /Users/james/.emacs.d/elpa/org-20171225/ox-html hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ox-html /Users/james/.emacs.d/elpa/org-20171225/org-src hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/org-src /Users/james/.emacs.d/elpa/org-20171225/ob-lisp hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-lisp /Users/james/.emacs.d/elpa/org-20171225/ob-ditaa hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ob-ditaa /Users/james/.emacs.d/elpa/org-20171225/org-pcomplete hides /usr/local/Cell= ar/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-pcomplete /Users/james/.emacs.d/elpa/org-20171225/org-lint hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-lint /Users/james/.emacs.d/elpa/org-20171225/org-rmail hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-rmail /Users/james/.emacs.d/elpa/org-20171225/ox-latex hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ox-latex /Users/james/.emacs.d/elpa/org-20171225/ob-sass hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-sass /Users/james/.emacs.d/elpa/org-20171225/ob-io hides /usr/local/Cellar/emacs= /26.1-rc1/share/emacs/26.1/lisp/org/ob-io /Users/james/.emacs.d/elpa/org-20171225/ob-tangle hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-tangle /Users/james/.emacs.d/elpa/org-20171225/ob-calc hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-calc /Users/james/.emacs.d/elpa/org-20171225/ob-java hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-java /Users/james/.emacs.d/elpa/org-20171225/ox-icalendar hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/ox-icalendar /Users/james/.emacs.d/elpa/org-20171225/org-eww hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/org-eww /Users/james/.emacs.d/elpa/org-20171225/ox-md hides /usr/local/Cellar/emacs= /26.1-rc1/share/emacs/26.1/lisp/org/ox-md /Users/james/.emacs.d/elpa/org-20171225/ox-beamer hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ox-beamer /Users/james/.emacs.d/elpa/org-20171225/org-element hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-element /Users/james/.emacs.d/elpa/org-20171225/org-protocol hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-protocol /Users/james/.emacs.d/elpa/org-20171225/ob-mscgen hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-mscgen /Users/james/.emacs.d/elpa/org-20171225/ob-gnuplot hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-gnuplot /Users/james/.emacs.d/elpa/org-20171225/ob-latex hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ob-latex /Users/james/.emacs.d/elpa/org-20171225/org-id hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/org-id /Users/james/.emacs.d/elpa/org-20171225/ob-vala hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-vala /Users/james/.emacs.d/elpa/org-20171225/ox-man hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ox-man /Users/james/.emacs.d/elpa/org-20171225/org-feed hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-feed /Users/james/.emacs.d/elpa/org-20171225/ob-lua hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-lua /Users/james/.emacs.d/elpa/org-20171225/ob-table hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ob-table /Users/james/.emacs.d/elpa/org-20171225/ob-ocaml hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ob-ocaml /Users/james/.emacs.d/elpa/org-20171225/ob-coq hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-coq /Users/james/.emacs.d/elpa/org-20171225/ob-picolisp hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-picolisp /Users/james/.emacs.d/elpa/org-20171225/org-indent hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-indent /Users/james/.emacs.d/elpa/org-20171225/ob-lilypond hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-lilypond /Users/james/.emacs.d/elpa/org-20171225/ob-matlab hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-matlab /Users/james/.emacs.d/elpa/org-20171225/org-datetree hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-datetree /Users/james/.emacs.d/elpa/org-20171225/ob-python hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-python /Users/james/.emacs.d/elpa/org-20171225/org-bbdb hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-bbdb /Users/james/.emacs.d/elpa/org-20171225/ob-makefile hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-makefile /Users/james/.emacs.d/elpa/org-20171225/org-duration hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-duration /Users/james/.emacs.d/elpa/org-20171225/org-agenda hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-agenda /Users/james/.emacs.d/elpa/org-20171225/ob-dot hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-dot /Users/james/.emacs.d/elpa/org-20171225/ob-js hides /usr/local/Cellar/emacs= /26.1-rc1/share/emacs/26.1/lisp/org/ob-js /Users/james/.emacs.d/elpa/org-20171225/ox-publish hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ox-publish /Users/james/.emacs.d/elpa/org-20171225/org-inlinetask hides /usr/local/Cel= lar/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-inlinetask /Users/james/.emacs.d/elpa/org-20171225/ob-org hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-org /Users/james/.emacs.d/elpa/org-20171225/ob-core hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-core /Users/james/.emacs.d/elpa/org-20171225/org-compat hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-compat /Users/james/.emacs.d/elpa/org-20171225/org-docview hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-docview /Users/james/.emacs.d/elpa/org-20171225/ox-odt hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ox-odt /Users/james/.emacs.d/elpa/org-20171225/ob-plantuml hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-plantuml /Users/james/.emacs.d/elpa/org-20171225/ox-ascii hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/ox-ascii /Users/james/.emacs.d/elpa/org-20171225/org-loaddefs hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-loaddefs /Users/james/.emacs.d/elpa/org-20171225/org-w3m hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/org-w3m /Users/james/.emacs.d/elpa/org-20171225/org-bibtex hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-bibtex /Users/james/.emacs.d/elpa/org-20171225/org-info hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/org/org-info /Users/james/.emacs.d/elpa/org-20171225/ob-hledger hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-hledger /Users/james/.emacs.d/elpa/org-20171225/ob-maxima hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-maxima /Users/james/.emacs.d/elpa/org-20171225/org hides /usr/local/Cellar/emacs/2= 6.1-rc1/share/emacs/26.1/lisp/org/org /Users/james/.emacs.d/elpa/org-20171225/org-macro hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-macro /Users/james/.emacs.d/elpa/org-20171225/ob-sql hides /usr/local/Cellar/emac= s/26.1-rc1/share/emacs/26.1/lisp/org/ob-sql /Users/james/.emacs.d/elpa/org-20171225/org-attach hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-attach /Users/james/.emacs.d/elpa/org-20171225/ob-processing hides /usr/local/Cell= ar/emacs/26.1-rc1/share/emacs/26.1/lisp/org/ob-processing /Users/james/.emacs.d/elpa/org-20171225/ox-texinfo hides /usr/local/Cellar/= emacs/26.1-rc1/share/emacs/26.1/lisp/org/ox-texinfo /Users/james/.emacs.d/elpa/org-20171225/org-irc hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/org-irc /Users/james/.emacs.d/elpa/org-20171225/org-crypt hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/org-crypt /Users/james/.emacs.d/elpa/org-20171225/org-footnote hides /usr/local/Cella= r/emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-footnote /Users/james/.emacs.d/elpa/org-20171225/org-install hides /usr/local/Cellar= /emacs/26.1-rc1/share/emacs/26.1/lisp/org/org-install /Users/james/.emacs.d/elpa/org-20171225/ob-comint hides /usr/local/Cellar/e= macs/26.1-rc1/share/emacs/26.1/lisp/org/ob-comint /Users/james/.emacs.d/elpa/org-20171225/ob-shen hides /usr/local/Cellar/ema= cs/26.1-rc1/share/emacs/26.1/lisp/org/ob-shen /Users/james/.emacs.d/elpa/seq-20151121.1017/seq hides /usr/local/Cellar/em= acs/26.1-rc1/share/emacs/26.1/lisp/emacs-lisp/seq Features: (shadow company-oddmuse company-keywords company-etags company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-template company-bbdb face-remap bbdb-mu4e emacsbug helm-command cl-print debug cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs image-file tramp tramp-compat tramp-loaddefs trampver shell parse-time eieio-opt help-fns radix-tree winner helm-elisp helm-eval edebug helm-info misearch multi-isearch goto-addr disp-table fill-column-indicator view jpsa-config smartparens-markdown markdown-mode iso-transl helm-mode helm-files helm-buffers helm-tags helm-locate helm-grep helm-regexp helm-types helm-descbinds helm-mu bbdb-mua bbdb-com crm bbdb bbdb-site org-mu4e mu4e desktop frameset mu4e-speedbar speedbar sb-image ezimage dframe mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions rfc2368 smtpmail sendmail mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view mu4e-lists mu4e-vars mu4e-meta darkroom org-ref org-ref-helm-bibtex org-ref-helm helm-utils helm-bibtex bibtex-completion biblio biblio-download biblio-dissemin biblio-hal biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi biblio-core let-alist url-queue ido helm-net browse-url helm-help helm helm-source helm-multi-match helm-lib helm-config helm-easymenu async-bytecomp async org-ref-core reftex-cite reftex reftex-loaddefs reftex-vars parsebib org-ref-glossary org-ref-bibtex org-ref-citeproc message rfc822 mml mml-sec epa derived epg mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader key-chord doi-utils org-ref-utils org-ref-pdf pdf-tools pdf-view bookmark pp jka-compr pdf-cache pdf-info pdf-util image-mode url-http tls gnutls url-auth mail-parse rfc2231 url-gw nsm rmc puny org-bibtex bibtex htmlize f s doremi-cmd cus-theme cus-edit doremi smart-mode-line rich-minority cl-extra yasnippet elec-pair rainbow-mode color move-text flow-fill beacon diff-hl smartrep vc-dir ewoc vc vc-dispatcher diff-mode midnight anzu artbollocks-mode typo flyspell ispell diminish volatile-highlights saveplace savehist smartparens-config smartparens-text smartparens-org smartparens-haskell smartparens help-mode autorevert filenotify paradox paradox-menu paradox-commit-list hydra lv paradox-execute paradox-github paradox-core spinner subr-x server expand-region text-mode-expansions the-org-mode-expansions er-basic-expansions expand-region-core expand-region-custom wc-mode twittering-mode emms-librefm-stream xml emms-librefm-scrobbler emms-playlist-limit emms-volume emms-volume-amixer emms-i18n emms-history emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time emms-lyrics emms-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf mailcap emms-streams emms-show-all emms-tag-editor emms-mark emms-mode-line emms-cache emms-info-opusinfo emms-info-ogginfo emms-info-mp3info emms-info later-do emms-playlist-mode emms-player-vlc emms-player-mpv emms-player-mplayer emms-player-simple emms-source-playlist emms-source-file locate dired dired-loaddefs emms-setup emms emms-compat ox-pandoc ht dash ox-org ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-mobile org-agenda org-element avl-tree generator org advice org-macro org-footnote org-pcomplete pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob-dot 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 format-spec find-func cal-menu calendar cal-loaddefs haskell-interactive-mode haskell-presentation-mode haskell-process haskell-session url-util json map haskell-compile haskell-mode haskell-cabal haskell-utils haskell-font-lock haskell-indentation haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports haskell-compat haskell-complete-module haskell-ghc-support noutline outline easy-mmode etags xref project dabbrev haskell-customize rnc-mode imenu flymake-proc flymake compile comint ansi-color ring warnings thingatpt brew-site-lisp ibuf-ext ibuffer ibuffer-loaddefs on-screen hexrgb gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums time-date mail-utils mm-util mail-prsvr wid-edit hl-line company pcase delsel autoinsert cus-start cus-load finder-inf tex-site gh-common marshal eieio-compat edmacro kmacro kotl-autoloads rx cl info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded 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 kqueue cocoa ns lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 726503 287766) (symbols 48 60406 16) (miscs 40 1370 5657) (strings 32 182852 46734) (string-bytes 1 6300425) (vectors 16 90528) (vector-slots 8 1357542 342774) (floats 8 578 1489) (intervals 56 2034 1087) (buffers 992 28)) From debbugs-submit-bounces@debbugs.gnu.org Thu May 24 20:50:57 2018 Received: (at 31588) by debbugs.gnu.org; 25 May 2018 00:50:57 +0000 Received: from localhost ([127.0.0.1]:47139 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fM0wZ-0006Gj-Gc for submit@debbugs.gnu.org; Thu, 24 May 2018 20:50:57 -0400 Received: from mail-it0-f41.google.com ([209.85.214.41]:56112) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fM0wX-0006GW-Qj for 31588@debbugs.gnu.org; Thu, 24 May 2018 20:50:54 -0400 Received: by mail-it0-f41.google.com with SMTP id 144-v6so4753302iti.5 for <31588@debbugs.gnu.org>; Thu, 24 May 2018 17:50:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=+uw0QJMF/eC6wPUaB7ZpZtoiAecmu3yynoGado01uIY=; b=sdnL1cEfCIJRZO67ENksHXZPsXt+yVRRv1WvncirFIym0CTyhopnsBJ70JmOH87r7N fgbkK0ntc/xmbDcpzfgNKlm3CJ1GUHpRdn15T5oOW/EF/5uQc2F2lcmNTzxqbVz/WsHj rTsx3avY+J518vnQ50/RGZDTZul9D57RFDFu1ajXsZsK6zh19gqsagqVtguzU8aIlEcC cEfgzOHF/jRBgjGAwadYQRQGYzH43DHk2dp3J76+grJXY4IOzGjzL2ONGXsPMTuG5vNb owQnnFcTibrnhdfZUzIWp4xYNYQLsGOhlSKYmw8DDY7sayU97OIE+Hv3F0Ye3UaLBizk cQqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=+uw0QJMF/eC6wPUaB7ZpZtoiAecmu3yynoGado01uIY=; b=Wctl7+1NLd62YlOudb3BZZTc3LdWQg1bsIisujwZcQVYX3YuTmAioWqGGo4ZnRhh6r ODBmdW1fnxTE+UxkCHGE7U25kiMIfgPIlICvuiReWLncqxvu9jCAgPuQzbO50ujvl7GC O7GQxGU8VYWz5K056gryC5WoInk1c+56jlqBK4iKx0tqJdxJHZkrc3FHS4+2hoD3dB3X GTqNLMAcuV22D2P76aU5ygu/GuhjQFADIi3sXw2vHgulgbBTqoSDy50tqENplfZ39Mhj Tm2+p4scADolSJUqJNM8hGlPBBSNSwJDDQWENkjbAsvZ7VzEPXIVWkQndBoGAPQpny3h hL/Q== X-Gm-Message-State: ALKqPwfqDaIGTMsdJNzgoSMz1NTUwS9LHoGm9KSiNli+0x6uZbjnVTOA HaBy9mKJarzSeMTz83rBf16tIg== X-Google-Smtp-Source: ADUXVKK4EP3sQ4VKnDmxUEWVPHj7gBiPGp+Mu4glKrIgrBND47aP0Keu5ua+hNh1AckuvVAj9PMgog== X-Received: by 2002:a24:61ce:: with SMTP id s197-v6mr193056itc.10.1527209448037; Thu, 24 May 2018 17:50:48 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id e139-v6sm6858624ite.1.2018.05.24.17.50.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 24 May 2018 17:50:47 -0700 (PDT) From: Noam Postavsky To: "James P. Ascher" Subject: Re: bug#31588: 26.1; format counts some Unicode characters as two References: Date: Thu, 24 May 2018 20:50:45 -0400 In-Reply-To: (James P. Ascher's message of "Thu, 24 May 2018 20:36:57 -0400") Message-ID: <87in7cfti2.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 31588 Cc: 31588@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable "James P. Ascher" writes: > 3: M-S-: and call (insert (format "%-2s" '=E2=9E=96)) > > What I expected: > > xxxxx=E2=9E=96 xxxxxxxx > > What results: > > xxxxxx=E2=9E=96xxxxxxx > > > In comparison, (insert (format "%-2s" 'z)) gives: > > xxxxxxz xxxxxx > The same problem occurs on my setup with =E2=9D=8C (CROSS MARK). > > However, these Unicode items characters work as I expect: =E2=96=B6 (BLACK > RIGHT-POINTING TRIANGLE), =E2=9C=9A (HEAVY GREEK CROSS), =E2=96=B7 (WHITE= RIGHT-POINTING > TRIANGLE), and =E2=97=BC (BLACK MEDIUM SQUARE). > > As far as I can tell, something is off about the styled_format and how > it counts characters- I suspect something about counting > multibyte characters, but it's a little beyond me. I think it's intended, =E2=9E=96 and =E2=9D=8C are wide characters: (mapcar #'char-width '(?=E2=9E=96 ?=E2=9D=8C ?=E2=96=B6 ?=E2=9C=9A ?=E2= =96=B7 ?=E2=97=BC)) ;=3D> (2 2 1 1 1 1) Although in my current font the width seems to be more like 1.8 or something. --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=wide-chars.png Content-Transfer-Encoding: base64 Content-Description: screenshot of the characters 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 UOJeAAAAAElFTkSuQmCC --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri May 25 02:37:30 2018 Received: (at 31588) by debbugs.gnu.org; 25 May 2018 06:37:31 +0000 Received: from localhost ([127.0.0.1]:47300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fM6Ly-0005re-OS for submit@debbugs.gnu.org; Fri, 25 May 2018 02:37:30 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33128) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fM6Lx-0005rQ-5n for 31588@debbugs.gnu.org; Fri, 25 May 2018 02:37:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fM6Lo-0004Pz-UZ for 31588@debbugs.gnu.org; Fri, 25 May 2018 02:37:24 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52433) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fM6Lo-0004Pt-RS; Fri, 25 May 2018 02:37:20 -0400 Received: from [176.228.60.248] (port=1315 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fM6Lo-0007WQ-7r; Fri, 25 May 2018 02:37:20 -0400 Date: Fri, 25 May 2018 09:37:32 +0300 Message-Id: <83lgc89r6b.fsf@gnu.org> From: Eli Zaretskii To: Noam Postavsky In-reply-to: <87in7cfti2.fsf@gmail.com> (message from Noam Postavsky on Thu, 24 May 2018 20:50:45 -0400) Subject: Re: bug#31588: 26.1; format counts some Unicode characters as two References: <87in7cfti2.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 31588 Cc: 31588@debbugs.gnu.org, jpa4q@virginia.edu X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Eli Zaretskii Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Noam Postavsky > Date: Thu, 24 May 2018 20:50:45 -0400 > Cc: 31588@debbugs.gnu.org > > > As far as I can tell, something is off about the styled_format and how > > it counts characters- I suspect something about counting > > multibyte characters, but it's a little beyond me. > > I think it's intended, ➖ and ❌ are wide characters: > > (mapcar #'char-width '(?➖ ?❌ ?▶ ?✚ ?▷ ?◼)) > ;=> (2 2 1 1 1 1) Yes, that's the reason. > Although in my current font the width seems to be more like 1.8 or > something. Unfortunately, the actual width depends on the font, and what's more, sometimes varies significantly between different fonts. Maybe we should have a variant of char-width that actually looks at the font (of course, such a variant will need a window or frame as one of its arguments). But with the current state of our support for wide characters, this is not a bug. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 03 12:29:30 2018 Received: (at 31588) by debbugs.gnu.org; 3 Jun 2018 16:29:30 +0000 Received: from localhost ([127.0.0.1]:60461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fPVso-0001lQ-Eo for submit@debbugs.gnu.org; Sun, 03 Jun 2018 12:29:30 -0400 Received: from mail-it0-f49.google.com ([209.85.214.49]:53971) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fPVsm-0001l3-AL; Sun, 03 Jun 2018 12:29:28 -0400 Received: by mail-it0-f49.google.com with SMTP id a195-v6so7154985itd.3; Sun, 03 Jun 2018 09:29:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=ZmZYn44X35ByStWlVmVsZVtau9hsivvjIkUZAddaC68=; b=AaTdssEecsXGLvmy5eom5GbZWx8eVCdyXYPW7LGmhV7QEDUKTd4BTpcou5cuWqs+FP ohMV3KLgpOqNvAsA0In8GVD3y/1RQ56ZPqrkI97drCmWaRnLLqO4AmwKCV7WX+RbmECK c+kUAQCLrIxyjej7GsPzG9917DLWVRTvwgGh/crdm4X3jRqNbuYUXtB0V2HEAWS7wr2u rq4UxYggsqhNCx5G6h4MIfEtx1eDzW/HBKRBqZ1gbb2li93Q/J2amZG4sa7JC41lJq9k +xrzX+zRG/pFIfB+vzw6YSr5X6vcBH4FNrZ0gw7VWPQYsd+orpOP8TC9Hp/oYcfLzkRy sqZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=ZmZYn44X35ByStWlVmVsZVtau9hsivvjIkUZAddaC68=; b=C/SRYx12lBE9C7xDtUV2Uv78kBuXUczDt7gwKa+H6pUvlr6uG44NBQDVrucT1DlLm8 lUaPB3VM61UEdi9BOT9/s4IaIl6dHOrGk1lur/XqKBIl12hEPZjTqpGeVFltxCweY7cy mgwTtkxORmXH0wpZvGmEEkDpHwjo1ChEMMOZYUiYjLta8nFu799eiNoQs3g/pzxxxX6u DzKASGMYalwaOU+oWL4IxIeWN5zoZEBeqQaD++Xt+K41lFLhp0/VZIo/QG65iT9KpeO7 M+lVxR92Ke/JSI+UrXPv13A5jwK5btniPrGWvwu6JEhVNdKsN9d0slgtySkbNPBLL/1E Oupg== X-Gm-Message-State: APt69E0U84Ja4DbRInOeHSANoj/LToomkojf8J7ghaSHuJSoHbI03H0Q k4XqemHEbYDzXOMLI8vcUAWaHg== X-Google-Smtp-Source: ADUXVKLLE4jPsWLE+azUsAjrn5rQepCkcyx9GwWfcSxfTLART6vjVN4KzwMx1JiPN3Pis8Sdtqp+kA== X-Received: by 2002:a24:2111:: with SMTP id e17-v6mr11573505ita.114.1528043362730; Sun, 03 Jun 2018 09:29:22 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id q11-v6sm5329183ita.15.2018.06.03.09.29.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 03 Jun 2018 09:29:21 -0700 (PDT) From: Noam Postavsky To: Eli Zaretskii Subject: Re: bug#31588: 26.1; format counts some Unicode characters as two References: <87in7cfti2.fsf@gmail.com> <83lgc89r6b.fsf@gnu.org> Date: Sun, 03 Jun 2018 12:29:20 -0400 In-Reply-To: <83lgc89r6b.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 25 May 2018 09:37:32 +0300") Message-ID: <87muwb96lb.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 31588 Cc: 31588@debbugs.gnu.org, jpa4q@virginia.edu X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) close 31588 quit Eli Zaretskii writes: >> From: Noam Postavsky >> Date: Thu, 24 May 2018 20:50:45 -0400 >> Cc: 31588@debbugs.gnu.org >>=20 >> > As far as I can tell, something is off about the styled_format and how >> > it counts characters- I suspect something about counting >> > multibyte characters, but it's a little beyond me. >>=20 >> I think it's intended, =E2=9E=96 and =E2=9D=8C are wide characters: >>=20 >> (mapcar #'char-width '(?=E2=9E=96 ?=E2=9D=8C ?=E2=96=B6 ?=E2=9C=9A ?= =E2=96=B7 ?=E2=97=BC)) >> ;=3D> (2 2 1 1 1 1) > > Yes, that's the reason. > >> Although in my current font the width seems to be more like 1.8 or >> something. > > Unfortunately, the actual width depends on the font, and what's more, > sometimes varies significantly between different fonts. Maybe we > should have a variant of char-width that actually looks at the font > (of course, such a variant will need a window or frame as one of its > arguments). Well, I don't know if format could do anything useful with a non-integer width anyway. > But with the current state of our support for wide characters, this is > not a bug. Okay, I'm closing this report. From unknown Mon Aug 18 11:25:19 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 02 Jul 2018 11:24:07 +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