From unknown Thu Jun 19 14:11:30 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#59347 <59347@debbugs.gnu.org> To: bug#59347 <59347@debbugs.gnu.org> Subject: Status: 29.0.50; `:family` face setting ignored Reply-To: bug#59347 <59347@debbugs.gnu.org> Date: Thu, 19 Jun 2025 21:11:30 +0000 retitle 59347 29.0.50; `:family` face setting ignored reassign 59347 emacs submitter 59347 Stefan Monnier severity 59347 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 17 23:57:59 2022 Received: (at submit) by debbugs.gnu.org; 18 Nov 2022 04:57:59 +0000 Received: from localhost ([127.0.0.1]:34915 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ovtRt-00084u-F3 for submit@debbugs.gnu.org; Thu, 17 Nov 2022 23:57:58 -0500 Received: from lists.gnu.org ([209.51.188.17]:49284) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ovtRq-00084m-I6 for submit@debbugs.gnu.org; Thu, 17 Nov 2022 23:57:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ovtRq-0005oW-8Y for bug-gnu-emacs@gnu.org; Thu, 17 Nov 2022 23:57:54 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ovtRm-0008BA-Jg for bug-gnu-emacs@gnu.org; Thu, 17 Nov 2022 23:57:53 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 4D0E54415AC for ; Thu, 17 Nov 2022 23:57:48 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 9ED024415A3 for ; Thu, 17 Nov 2022 23:57:38 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668747458; bh=F5Fbkd/B5p/c+Pc7aylalsTMybIbElZ4iMSb8Bee/oE=; h=From:To:Subject:Date:From; b=JCIgRExAWxlJgo1borjgfhfWm9/ny2YbizVh3GsslJ1Fb5DU1aJGaHVuC3Nb/38RG DaMoelkv30wCarh0L6WJhXu8iu/qahrt2/jJpiUg9jSucskKIvViVKEUXJYC++l30V GOT/RX9MI7iZZ951Ac1K2UOzwDcVslWfI0NWTTiLkvmc67MR/h9tMZkkubd8ud0FEZ UJ5jHwLMp6F/eCC+jlAmB7NGZySQfJK/HB2jhpJd3jAVq9UmNQ1BBrEoOv5+q/S8PG eooAf4J1BGj71gk7rYFkEESRqgGGfy4ndHWL4NcDGtdeaJxTkxjwhuQH5ErlUut+Li KUj6T4fJWiPAA== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 54DF2120AA5 for ; Thu, 17 Nov 2022 23:57:38 -0500 (EST) From: Stefan Monnier To: bug-gnu-emacs@gnu.org Subject: 29.0.50; `:family` face setting ignored Date: Thu, 17 Nov 2022 23:57:31 -0500 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.017 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) 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: -2.3 (--) Package: Emacs Version: 29.0.50 When I do: src/emacs -Q --eval \ '(progn (custom-set-faces `(variable-pitch ((t (:family "DejaVu Sans"))))) (add-to-list `default-frame-alist `(font . "-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*")) (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch)))' I get "hello" shown in the same font as with the default face (i.e. "misc-fixed") instead using DejaVu Sans. Stefan In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars) of 2022-11-05 built on pastel Repository revision: 452771086a1638bd11bae3633a3c10d51c83d9f8 Repository branch: work Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure -C --enable-checking --enable-check-lisp-object-type --with-modules --with-cairo --with-tiff=ifavailable 'CFLAGS=-Wall -g3 -Og -Wno-pointer-sign' PKG_CONFIG_PATH=/home/monnier/lib/pkgconfig' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND THREADS TOOLKIT_SCROLL_BARS WEBP X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB Important settings: value of $LANG: fr_CH.UTF-8 locale-coding-system: utf-8-unix Major mode: InactiveMinibuffer Minor modes in effect: shell-dirtrack-mode: t server-mode: t electric-pair-mode: t global-reveal-mode: t reveal-mode: t auto-insert-mode: t savehist-mode: t minibuffer-electric-default-mode: t global-compact-docstrings-mode: t url-handler-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t global-prettify-symbols-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/monnier/src/emacs/nongnu/packages/geiser-kawa/geiser-kawa-autoloads hides /home/monnier/src/emacs/nongnu/packages/geiser-kawa/elisp/geiser-kawa-autoloads /home/monnier/src/emacs/nongnu/packages/geiser/geiser-autoloads hides /home/monnier/src/emacs/nongnu/packages/geiser/elisp/geiser-autoloads /home/monnier/src/emacs/nongnu/packages/arduino-mode/ob-arduino hides /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ob-arduino /home/monnier/src/emacs/nongnu/packages/org-contrib/org-contrib-autoloads hides /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/org-contrib-autoloads /home/monnier/src/emacs/nongnu/packages/magit/magit-autoloads hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-autoloads /home/monnier/src/emacs/nongnu/packages/magit/git-commit-autoloads hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/git-commit-autoloads /home/monnier/src/emacs/nongnu/packages/magit/magit-pkg hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-pkg /home/monnier/src/emacs/nongnu/packages/magit/magit-section-autoloads hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-section-autoloads /home/monnier/src/emacs/nongnu/packages/magit/git-commit-pkg hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/git-commit-pkg /home/monnier/src/emacs/nongnu/packages/magit/magit-section-pkg hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-section-pkg /home/monnier/src/emacs/nongnu/packages/pdf-tools/pdf-tools-autoloads hides /home/monnier/src/emacs/nongnu/packages/pdf-tools/lisp/pdf-tools-autoloads /home/monnier/src/emacs/nongnu/packages/php-mode/php-mode-autoloads hides /home/monnier/src/emacs/nongnu/packages/php-mode/lisp/php-mode-autoloads /home/monnier/src/emacs/nongnu/packages/jade-mode/jade-mode hides /home/monnier/src/emacs/nongnu/packages/stylus-mode/jade-mode /home/monnier/src/emacs/nongnu/packages/jade-mode/sws-mode hides /home/monnier/src/emacs/nongnu/packages/stylus-mode/sws-mode /home/monnier/src/emacs/nongnu/packages/jade-mode/stylus-mode hides /home/monnier/src/emacs/nongnu/packages/stylus-mode/stylus-mode /home/monnier/src/emacs/nongnu/packages/subed/subed-autoloads hides /home/monnier/src/emacs/nongnu/packages/subed/subed/subed-autoloads /home/monnier/src/emacs/nongnu/packages/with-editor/with-editor-autoloads hides /home/monnier/src/emacs/nongnu/packages/with-editor/lisp/with-editor-autoloads /home/monnier/src/emacs/elpa/packages/bbdb/bbdb-autoloads hides /home/monnier/src/emacs/elpa/packages/bbdb/lisp/bbdb-autoloads /home/monnier/src/emacs/nongnu/packages/paredit/test hides /home/monnier/src/emacs/elpa/packages/easy-kill/test /home/monnier/src/emacs/elpa/packages/embark-consult/embark-consult hides /home/monnier/src/emacs/elpa/packages/embark/embark-consult /home/monnier/src/emacs/elpa/packages/embark-consult/embark hides /home/monnier/src/emacs/elpa/packages/embark/embark /home/monnier/src/emacs/elpa/packages/embark-consult/avy-embark-collect hides /home/monnier/src/emacs/elpa/packages/embark/avy-embark-collect /home/monnier/src/emacs/elpa/packages/embark-consult/embark-org hides /home/monnier/src/emacs/elpa/packages/embark/embark-org /home/monnier/src/emacs/elpa/packages/ess/ess-autoloads hides /home/monnier/src/emacs/elpa/packages/ess/lisp/ess-autoloads /home/monnier/src/emacs/nongnu/packages/forth-mode/build hides /home/monnier/src/emacs/elpa/packages/lentic/build /home/monnier/src/emacs/nongnu/packages/paredit/test hides /home/monnier/src/emacs/elpa/packages/num3-mode/test /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/org-contacts hides /home/monnier/src/emacs/elpa/packages/org-contacts/org-contacts /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/org-notify hides /home/monnier/src/emacs/elpa/packages/org-notify/org-notify /home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/realgud-trepan-ni/cask-install /home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/realgud/cask-install /home/monnier/src/emacs/elpa/packages/srht/srht-autoloads hides /home/monnier/src/emacs/elpa/packages/srht/lisp/srht-autoloads /home/monnier/src/emacs/elpa/packages/taxy-magit-section/taxy-magit-section hides /home/monnier/src/emacs/elpa/packages/taxy/taxy-magit-section /home/monnier/src/emacs/elpa/packages/transient/transient-autoloads hides /home/monnier/src/emacs/elpa/packages/transient/lisp/transient-autoloads /home/monnier/src/emacs/nongnu/packages/mentor/url-scgi hides /home/monnier/src/emacs/elpa/packages/url-scgi/url-scgi /home/monnier/src/emacs/elpa/packages/use-package/use-package-tests hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-tests /home/monnier/src/emacs/elpa/packages/use-package/use-package-delight hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-delight /home/monnier/src/emacs/elpa/packages/use-package/use-package-diminish hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-diminish /home/monnier/src/emacs/elpa/packages/use-package/bind-chord hides /home/monnier/src/emacs/elpa/packages/bind-key/bind-chord /home/monnier/src/emacs/elpa/packages/use-package/use-package-lint hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-lint /home/monnier/src/emacs/elpa/packages/use-package/use-package-core hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-core /home/monnier/src/emacs/elpa/packages/use-package/use-package-ensure hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-ensure /home/monnier/src/emacs/elpa/packages/use-package/use-package-chords hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-chords /home/monnier/src/emacs/elpa/packages/use-package/bind-key hides /home/monnier/src/emacs/elpa/packages/bind-key/bind-key /home/monnier/src/emacs/elpa/packages/use-package/use-package-chords-tests hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-chords-tests /home/monnier/src/emacs/elpa/packages/use-package/use-package-jump hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-jump /home/monnier/src/emacs/elpa/packages/use-package/use-package hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package /home/monnier/src/emacs/elpa/packages/use-package/use-package-bind-key hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-bind-key /home/monnier/src/emacs/elpa/packages/use-package/use-package-ensure-system-package hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-ensure-system-package /home/monnier/src/emacs/elpa/packages/hydra/hydra-test hides /home/monnier/src/emacs/elpa/packages/lv/hydra-test /home/monnier/src/emacs/elpa/packages/hydra/hydra hides /home/monnier/src/emacs/elpa/packages/lv/hydra /home/monnier/src/emacs/elpa/packages/hydra/lv hides /home/monnier/src/emacs/elpa/packages/lv/lv /home/monnier/src/emacs/elpa/packages/hydra/hydra-ox hides /home/monnier/src/emacs/elpa/packages/lv/hydra-ox /home/monnier/src/emacs/elpa/packages/hydra/hydra-examples hides /home/monnier/src/emacs/elpa/packages/lv/hydra-examples /home/monnier/src/emacs/elpa/packages/ada-mode/gnat-core hides /home/monnier/src/emacs/elpa/packages/wisi/gnat-core /home/monnier/src/emacs/elpa/packages/transient/lisp/transient hides /home/monnier/src/emacs/work/lisp/transient /home/monnier/src/emacs/nongnu/packages/lua-mode/lua-mode hides /home/monnier/src/emacs/work/lisp/progmodes/lua-mode /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ob-julia hides /home/monnier/src/emacs/work/lisp/org/ob-julia /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ol-man hides /home/monnier/src/emacs/work/lisp/org/ol-man /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ox-koma-letter hides /home/monnier/src/emacs/work/lisp/org/ox-koma-letter /home/monnier/.emacs.d/elpa/hyperbole-8.0.0/set hides /home/monnier/src/emacs/work/lisp/emacs-lisp/set /home/monnier/src/emacs/work/lisp/keymap hides /home/monnier/src/emacs/work/lisp/emacs-lisp/keymap /home/monnier/src/emacs/elpa/packages/landmark/landmark hides /home/monnier/src/emacs/work/lisp/obsolete/landmark /home/monnier/src/emacs/elpa/packages/crisp/crisp hides /home/monnier/src/emacs/work/lisp/obsolete/crisp Features: (crm tuareg tuareg-compat tuareg-opam caml-types caml-help find-file ert-x gud cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays holiday-loaddefs cal-french org-journal org-crypt cal-iso diary-lib diary-loaddefs mule-util cal-move arc-mode archive-mode markdown-mode edit-indirect nameless cus-edit edmacro kmacro picture package-x css-mode color html5-schema rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap sgml-mode facemenu nxml-util nxml-enc xmltok rfc2104 network-stream nsm mailalias smtpmail textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check rect shadow mail-extr emacsbug j-help reftex-ref epa-file eglot array jsonrpc ert xref edebug shortdoc org-eldoc org-element avl-tree generator ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus nnheader range ol-docview ol-bibtex ol-bbdb ol-w3m ol-doi org-link-doi org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex iso8601 org-keys oc org-loaddefs cal-menu calendar cal-loaddefs texinfo texinfo-loaddefs dired-aux drupal/ispell drupal/eldoc drupal/autoinsert drupal-mode cc-styles cc-align cc-engine cc-langs cc-vars cc-defs sql view dired-x reftex-cite reftex-parse ielm cus-start cus-load skeleton pp wid-edit descr-text face-remap gitignore-mode conf-mode sort elpa-admin smerge-mode whitespace dabbrev debug backtrace find-func ffap sm-c-mode wgrep grep vc-fossil vc-backup vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc-got log-view log-edit message sendmail yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log vc-annotate vc-dir ewoc vc copyright misearch multi-isearch bug-reference cl-print diff autorevert imenu doc-view filenotify jka-compr image-mode exif dired dired-loaddefs sh-script smie executable make-mode files-x vc-git diff-mode easy-mmode vc-dispatcher filecache reftex-dcr reftex reftex-loaddefs reftex-vars tex-mode shell drupal/pcomplete pcomplete latexenc raku-detect server cl-extra time-date flymake-proc flymake project compile text-property-search comint ansi-osc ansi-color noutline outline flyspell ispell checkdoc lisp-mnt thingatpt elec-pair reveal autoinsert savehist minibuf-eldef disp-table compact-docstrings corfu afternoon-theme-autoloads alect-themes-autoloads ample-theme-autoloads annotate-autoloads anti-zenburn-theme-autoloads apache-mode-autoloads apropospriate-theme-autoloads arduino-mode-autoloads ede/auto eieio-base better-jumper-autoloads bison-mode-autoloads boxquote-autoloads buttercup-autoloads cdlatex-autoloads cider-autoloads coffee-mode-autoloads corfu-terminal-autoloads crux-autoloads cyberpunk-theme-autoloads cycle-at-point-autoloads d-mode-autoloads dart-mode-autoloads diff-ansi-autoloads doc-show-inline-autoloads dockerfile-mode-autoloads dracula-theme-autoloads drupal-mode-autoloads edit-indirect-autoloads editorconfig-autoloads elixir-mode-autoloads elpher-autoloads evil-anzu-autoloads anzu-autoloads evil-args-autoloads evil-exchange-autoloads evil-goggles-autoloads evil-indent-plus-autoloads evil-lisp-state-autoloads bind-map-autoloads evil-matchit-autoloads evil-nerd-commenter-autoloads evil-numbers-autoloads evil-visualstar-autoloads evil-autoloads flymake-kondor-autoloads flymake-popon-autoloads focus-autoloads forth-mode-autoloads free-keys-autoloads geiser-chez-autoloads geiser-chibi-autoloads geiser-chicken-autoloads geiser-gambit-autoloads geiser-gauche-autoloads geiser-guile-autoloads geiser-kawa-autoloads geiser-mit-autoloads geiser-racket-autoloads geiser-impl help-fns radix-tree help-mode geiser-custom geiser-base ring geiser-stklos-autoloads git-modes-autoloads gnu-apl-mode-autoloads gnuplot-autoloads go-mode-autoloads gotham-theme-autoloads goto-chg-autoloads graphql-mode-autoloads gruvbox-theme-autoloads autothemer-autoloads guru-mode-autoloads haskell-mode-autoloads haskell-tng-mode-autoloads helm-autoloads helm-core-autoloads highlight-parentheses-autoloads hl-block-mode-autoloads htmlize-autoloads idle-highlight-mode-autoloads idris-mode-autoloads iedit-autoloads inf-clojure-autoloads clojure-mode-autoloads inf-ruby-autoloads inkpot-theme-autoloads j-mode-autoloads jabber-autoloads jade-mode-autoloads jinja2-mode-autoloads julia-mode-autoloads keycast-autoloads kotlin-mode-autoloads lua-mode-autoloads markdown-mode-autoloads material-theme-autoloads mentor-autoloads moe-theme-autoloads monokai-theme-autoloads mpv-autoloads multiple-cursors-autoloads nasm-mode-autoloads nginx-mode-autoloads nix-mode-autoloads oblivion-theme-autoloads org-auto-tangle-autoloads org-drill-autoloads org-journal-autoloads org-mime-autoloads org-present-autoloads org-superstar-autoloads org-tree-slide-autoloads orgit-autoloads pacmacs-autoloads paredit-autoloads parseedn-autoloads parseclj-autoloads pcmpl-args-autoloads pcre2el-autoloads popon-autoloads popup-autoloads projectile-autoloads proof-general-autoloads proof-site proof-autoloads prop-menu-autoloads rainbow-delimiters-autoloads raku-mode-autoloads recomplete-autoloads rfc-mode-autoloads rubocop-autoloads rust-mode-autoloads sass-mode-autoloads haml-mode-autoloads scala-mode-autoloads scroll-on-drag-autoloads scroll-on-jump-autoloads sesman-autoloads shellcop-autoloads slime-autoloads macrostep-autoloads sly-autoloads smartparens-autoloads solarized-theme-autoloads spacemacs-theme-autoloads spell-fu-autoloads stylus-mode-autoloads subatomic-theme-autoloads sweeprolog-autoloads swift-mode-autoloads swsw-autoloads symbol-overlay-autoloads systemd-autoloads tablist-autoloads tangotango-theme-autoloads telephone-line-autoloads textile-mode-autoloads toc-org-autoloads tuareg-autoloads caml-autoloads typescript-mode-autoloads ujelly-theme-autoloads undo-fu-autoloads undo-fu-session-autoloads vc-fossil-autoloads vcomplete-autoloads visual-fill-column-autoloads web-mode-autoloads webpaste-autoloads wgrep-autoloads with-simulated-input-autoloads ws-butler-autoloads xah-fly-keys-autoloads xml-rpc-autoloads yaml-mode-autoloads yasnippet-snippets-autoloads zenburn-theme-autoloads zig-mode-autoloads ace-window-autoloads ack-autoloads ada-mode-autoloads ada-ref-man-autoloads adaptive-wrap-autoloads adjust-parens-autoloads advice-patch-autoloads aggressive-completion-autoloads aggressive-indent-autoloads agitate-autoloads ahungry-theme-autoloads aircon-theme-autoloads all-autoloads ampc-autoloads arbitools-autoloads assess-autoloads aumix-mode-autoloads auto-correct-autoloads auto-overlays-autoloads bbdb-autoloads beacon-autoloads blist-autoloads bluetooth-autoloads bnf-mode-autoloads boxy-headings-autoloads boxy-headlines-autoloads brief-autoloads buffer-env-autoloads buffer-expose-autoloads bug-hunter-autoloads cape-autoloads capf-autosuggest-autoloads caps-lock-autoloads captain-autoloads chess-autoloads clipboard-collector-autoloads cobol-mode-autoloads code-cells-autoloads comint-mime-autoloads compact-docstrings-autoloads company-ebdb-autoloads company-math-autoloads company-statistics-autoloads company-autoloads consult-recoll-autoloads context-coloring-autoloads corfu-doc-autoloads corfu-autoloads coterm-autoloads counsel-autoloads cpio-mode-autoloads cpupower-autoloads crdt-autoloads crisp-autoloads csharp-mode-autoloads csv-mode-autoloads cursory-autoloads cycle-quotes-autoloads darkroom-autoloads dbus-codegen-autoloads debbugs-autoloads delight-autoloads denote-autoloads detached-autoloads devdocs-autoloads dict-tree-autoloads diff-hl-autoloads diffview-autoloads diminish-autoloads dired-du-autoloads dired-git-info-autoloads disk-usage-autoloads dismal-autoloads djvu-autoloads doc-toc-autoloads docbook-autoloads dts-mode-autoloads easy-escape-autoloads easy-kill-autoloads ebdb-gnorb-autoloads cl-seq ebdb-i18n-chn-autoloads ebdb-autoloads ediprolog-autoloads eev-autoloads ef-themes-autoloads el-search-autoloads eldoc-eval-autoloads electric-spacing-autoloads elisp-benchmarks-autoloads emacspeak-autoloads embark-consult-autoloads consult-autoloads embark-autoloads ement-autoloads emms-autoloads engrave-faces-autoloads enwc-autoloads epoch-view-autoloads ergoemacs-mode-autoloads ess-autoloads excorporate-autoloads expand-region-autoloads exwm-autoloads f90-interface-browser-autoloads filladapt-autoloads flylisp-autoloads flymake-proselint-autoloads fontaine-autoloads frame-tabs-autoloads frog-menu-autoloads fsm-autoloads ftable-autoloads gcmh-autoloads ggtags-autoloads gited-autoloads gle-mode-autoloads gnat-compiler-autoloads gnome-c-style-autoloads gnorb-autoloads gnu-elpa-autoloads gnu-elpa-features gnu-elpa-keyring-update-autoloads gnugo-autoloads ascii-art-to-unicode-autoloads gnus-mock-autoloads gpastel-autoloads graphql-autoloads greader-autoloads greenbar-autoloads gtags-mode-autoloads guess-language-autoloads hcel-autoloads hiddenquote-autoloads highlight-escape-sequences-autoloads hook-helpers-autoloads html5-schema-autoloads ilist-autoloads inspector-autoloads treeview-autoloads ioccur-autoloads isearch-mb-autoloads iterators-autoloads ivy-avy-autoloads avy-autoloads ivy-explorer-autoloads ivy-hydra-autoloads ivy-posframe-autoloads javaimp-autoloads jgraph-mode-autoloads js2-mode-autoloads json-mode-autoloads jumpc-autoloads kind-icon-autoloads kiwix-autoloads request-autoloads kmb-autoloads landmark-autoloads leaf-autoloads lentic-server-autoloads lentic-autoloads lex-autoloads lin-autoloads lmc-autoloads load-dir-autoloads loccur-autoloads logos-autoloads luwak-autoloads m-buffer-autoloads marginalia-autoloads markchars-autoloads math-symbol-lists-autoloads mct-autoloads memory-usage-autoloads metar-autoloads midi-kbd-autoloads mines-autoloads minibuffer-header-autoloads minibuffer-line-autoloads minimap-autoloads multi-mode-autoloads multishell-autoloads muse-autoloads myers-autoloads nameless-autoloads names-autoloads nano-agenda-autoloads nano-modeline-autoloads nano-theme-autoloads nftables-mode-autoloads nhexl-mode-autoloads nlinum-autoloads notes-mode-autoloads notmuch-indicator-autoloads num3-mode-autoloads oauth2-autoloads ob-haxe-autoloads objed-autoloads omn-mode-autoloads on-screen-autoloads orderless-autoloads org-contacts-autoloads org-edna-autoloads org-modern-autoloads org-notify-autoloads org-real-autoloads ol rx org-compat advice org-macs format-spec boxy-autoloads org-remark-autoloads org-transclusion-autoloads org-translate-autoloads orgalist-autoloads osc-autoloads osm-autoloads other-frame-window-autoloads pabbrev-autoloads paced-autoloads package-fixes-autoloads parsec-autoloads parser-generator-autoloads path-iterator-autoloads peg-autoloads perl-doc-autoloads persist-autoloads phps-mode-autoloads pinentry-autoloads poke-autoloads poke-mode-autoloads poker-autoloads polymode-autoloads pq-autoloads prefixed-core-autoloads psgml-autoloads pspp-mode-autoloads pulsar-autoloads pyim-autoloads async-autoloads pyim-basedict-autoloads quarter-plane-autoloads rainbow-mode-autoloads rbit-autoloads rcirc-color-autoloads rcirc-menu-autoloads realgud-ipdb-autoloads realgud-jdb-autoloads realgud-lldb-autoloads realgud-node-debug-autoloads realgud-node-inspect-autoloads realgud-trepan-ni-autoloads realgud-autoloads loc-changes-autoloads load-relative-autoloads rec-mode-autoloads register-list-autoloads relint-autoloads repology-autoloads rich-minority-autoloads rmsbolt-autoloads rnc-mode-autoloads info rt-liberation-autoloads rudel-autoloads rudel-interactive rudel-backend warnings icons satchel-autoloads scanner-autoloads scroll-restore-autoloads sed-mode-autoloads setup-autoloads shelisp-autoloads shell-command+-autoloads shell-quasiquote-autoloads shen-mode-autoloads sisu-mode-autoloads sketch-mode-autoloads slime-volleyball-autoloads sm-c-mode-autoloads smalltalk-mode-autoloads smart-yank-autoloads sml-mode-autoloads sokoban-autoloads sotlisp-autoloads spinner-autoloads sql-beeline-autoloads sql-cassandra-autoloads sql-indent-autoloads sql-smie-autoloads plz-autoloads ssh-deploy-autoloads stream-autoloads svg-clock-autoloads svg-tag-mode-autoloads svg-lib-autoloads swiper-autoloads ivy-autoloads system-packages-autoloads taxy-magit-section-autoloads taxy-autoloads dash-autoloads temp-buffer-browse-autoloads tempel-autoloads test-simple-autoloads timerfunctions-autoloads tiny-autoloads tmr-autoloads toc-mode-autoloads tomelr-autoloads topspace-autoloads tramp-nspawn-autoloads tramp-theme-autoloads transcribe-autoloads transient-cycles-autoloads trie-autoloads heap-autoloads tNFA-autoloads trinary-autoloads finder-inf undo-tree-autoloads uni-confusables-autoloads uniquify-files-autoloads url-http-ntlm-autoloads url-auth url-scgi-autoloads use-package-autoloads bind-key-autoloads validate-autoloads valign-autoloads vc-backup-autoloads compat-autoloads vc-got-autoloads vc-hgcmd-autoloads vcard-autoloads vcl-mode-autoloads vdiff-autoloads hydra-autoloads lv-autoloads vertico-posframe-autoloads vertico-autoloads posframe-autoloads vigenere-autoloads visual-filename-abbrev-autoloads visual-fill-autoloads vlf-autoloads vundo-autoloads wcheck-mode-autoloads wconf-autoloads web-server-autoloads webfeeder-autoloads websocket-autoloads which-key-autoloads windower-autoloads windresize-autoloads wisitoken-grammar-mode-autoloads mmm-mode-autoloads wisi-autoloads wpuzzle-autoloads wrap-search-autoloads xclip-autoloads xelb-autoloads xpm-autoloads queue-autoloads xr-autoloads yasnippet-classic-snippets-autoloads yasnippet-autoloads zones-autoloads ztree-autoloads zuul-autoloads ustar-withsub-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core cl-macs gv pcase password-cache json subr-x map byte-opt bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray button loaddefs theme-loaddefs oclosure cl-preloaded faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 1373967 465408) (symbols 48 60127 306) (strings 32 283975 64620) (string-bytes 1 9145370) (vectors 16 187977) (vector-slots 8 4678227 999474) (floats 8 1693 1344) (intervals 56 102184 1671) (buffers 984 183)) From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 07:37:48 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 12:37:48 +0000 Received: from localhost ([127.0.0.1]:35636 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow0cu-0008IO-5y for submit@debbugs.gnu.org; Fri, 18 Nov 2022 07:37:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43390) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow0cs-0008IB-BR for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 07:37:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow0cm-0007ZC-HG; Fri, 18 Nov 2022 07:37:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=VJfQbDuf5HNnkQENjC8OhC67YBJKD/ti6RLSFI5I9ks=; b=Y4NIYlXKHXN3 lBKoI6ofOzF6LOdmVUvunUHHntbIG5FFrYzO7WT7ibVZI8k4bTrykPHEsmZbs+XrgmM+T/+bywv8r /vIhhtf+YM7dM4UBZ0zQrtSzqRoP+uCNNIGFYzXIclOGnSHlfxeVAgoWTUwlJ2ZMKuTG3KKWKoEAY yxuEyJgLV6yI7al6r6QU37C+2BZFBundN4vBscgib89fbXrXTxIBBJ6HkUFiU4B5y0S0edj8/Ib7f ncbsN1VXFsC3OudvLM7LQuo4//Nn7B0y9C02/THvIrXYyR4HfAgUFXkBT1HY+cgqmRGFYQjl2abZn adMW+VUe5eoKlD2fAPukTA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow0cm-0005GD-0o; Fri, 18 Nov 2022 07:37:40 -0500 Date: Fri, 18 Nov 2022 14:37:44 +0200 Message-Id: <83bkp4bfqf.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > Date: Thu, 17 Nov 2022 23:57:31 -0500 > From: Stefan Monnier via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > When I do: > > src/emacs -Q --eval \ > '(progn > (custom-set-faces `(variable-pitch > ((t (:family "DejaVu Sans"))))) > (add-to-list `default-frame-alist > `(font . "-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*")) > (font-lock-mode -1) > (insert (propertize "hello" `face `variable-pitch)))' > > I get "hello" shown in the same font as with the default face > (i.e. "misc-fixed") instead using DejaVu Sans. All those backquotes, are they really backquotes when you type this? Or should they be escaped apostrophes? More to the point, why do you think this is a bug in Emacs? What happened here is that you requested a face to use some font family, and Emacs for whatever reasons decided not to use that family. Why is that a bug? why are you sure Emacs didn't do that for valid reasons? Like, for example, that DejaVu Sans doesn't have a variant with the size that matches the default face's font? From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 09:59:52 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 14:59:52 +0000 Received: from localhost ([127.0.0.1]:37884 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow2qO-0002KW-0P for submit@debbugs.gnu.org; Fri, 18 Nov 2022 09:59:52 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:15904) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow2qI-0002KF-9u for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 09:59:50 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id DA5A0441448; Fri, 18 Nov 2022 09:59:40 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 8C33C441463; Fri, 18 Nov 2022 09:59:39 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668783579; bh=2sP2jRjYjPnpDZKnlQjKJdw3ZThEEjZ6P/8C9W7tAbw=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=KhwnpC/uEcv+LZKXwiFoPnTwXVtnhnlQ9reX2ST08VOucCFLNZ2+LzXGBVXI/s+sZ nsl35kcKdyTUdOW9jH3tL+J1lXtKj4uULocn38/HW+nH6LzRaGK92A84DsWgcka71n DPmSyS9ub5ofkUjgCIKvzcez96YJEM+U9lhDQCXWvh+sFBnv3U+9I77GTfkJd14GEy ADB+SipCZniK84hClhzNkY03dmhxN6vPEEkdAAiquVKmv6o+dnwA4MYvuacrOZderf LLYTBjbGgWHZcIWDVojHqcuRe4RJta4jb8zk+/m5lIID0SgGXpAP58gBECEMKzfGUm TX9c7MPHNyeuA== Received: from alfajor (unknown [45.44.229.252]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 70A4012053B; Fri, 18 Nov 2022 09:59:39 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83bkp4bfqf.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 18 Nov 2022 14:37:44 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> Date: Fri, 18 Nov 2022 09:59:38 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.184 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) >> src/emacs -Q --eval \ >> '(progn >> (custom-set-faces `(variable-pitch >> ((t (:family "DejaVu Sans"))))) >> (add-to-list `default-frame-alist >> `(font . "-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*")) >> (font-lock-mode -1) >> (insert (propertize "hello" `face `variable-pitch)))' >> >> I get "hello" shown in the same font as with the default face >> (i.e. "misc-fixed") instead using DejaVu Sans. > > All those backquotes, are they really backquotes when you type this? Yes. > Or should they be escaped apostrophes? It's a pain in the rear to escape quotes from within quotes, so I use backquotes instead, which works as well as long as there's no comma nested inside :-) > More to the point, why do you think this is a bug in Emacs? What > happened here is that you requested a face to use some font family, > and Emacs for whatever reasons decided not to use that family. Why is > that a bug? Why are you sure Emacs didn't do that for valid reasons? I'm not. I just can't see an obvious good reason for it. I suspect I wouldn't be the only user who'd find this rather perplexing. So let me return the question: what part of the above code makes you think it's correct for Emacs to use a different font than the DejaVu Sans? > Like, for example, that DejaVu Sans doesn't have a variant with the > size that matches the default face's font? DejaVu is a scalable font, so I can't see how it could not have a size that matches. Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 10:13:58 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 15:13:58 +0000 Received: from localhost ([127.0.0.1]:37900 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow342-0002gy-52 for submit@debbugs.gnu.org; Fri, 18 Nov 2022 10:13:58 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40572) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow340-0002gm-GF for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 10:13:56 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow33v-0001x5-2X; Fri, 18 Nov 2022 10:13:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Xs2/dxsaA2qxfZNi5kKuu6FUPl+fV2rjPxMfXLFEzHw=; b=BlIFyxc/ErEY E+k3ImOZIHg3bQg/l1+39IYsK5/T2lE7J2xZlVHODg56lCd7BTTmLY2BM8Rh5I+1AnAqTiQRNVIM/ TCtCOS4c3AXhodOq4WKFo3Q73b61GLfagjWNapIE0iuERf5PZqhxD7fk1Tc+JQv9QFH9nz1tOd7eL HkHkc5RBdh/iseGpEPfkLOZAy00jw6ufyl6cZhpmy9aMrNVTl1YuAcsE7qT5UDYZ7FJ/S836qJ51F 64rbQPAKq9WvduZOPA9oOZCa11RIsT2XwBQ5fV8CXsx4IsBoWfRt7IKuEwM+Pq7Mb4ps58ZyQPfoD Rj5zF+UOLHAlZS+743KP3Q==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow33u-0005U7-J3; Fri, 18 Nov 2022 10:13:50 -0500 Date: Fri, 18 Nov 2022 17:13:54 +0200 Message-Id: <83wn7s9txp.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Fri, 18 Nov 2022 09:59:38 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: 59347@debbugs.gnu.org > Date: Fri, 18 Nov 2022 09:59:38 -0500 > > So let me return the question: what part of the above code makes you > think it's correct for Emacs to use a different font than the DejaVu Sans? The part where you requested a misc-fixed font. > > Like, for example, that DejaVu Sans doesn't have a variant with the > > size that matches the default face's font? > > DejaVu is a scalable font, so I can't see how it could not have a size > that matches. Of course, it can. And if it isn't because of size, it can be because of some other font attribute, like weight. Bottom line: you cannot expect Emacs to select a font from a family you request, not with a 100% reliability anyway. Emacs can decide not to. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 10:25:45 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 15:25:45 +0000 Received: from localhost ([127.0.0.1]:37985 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow3FQ-00033s-V4 for submit@debbugs.gnu.org; Fri, 18 Nov 2022 10:25:45 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:37477) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow3FO-00033f-Kf for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 10:25:43 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D6F141000EF; Fri, 18 Nov 2022 10:25:36 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 4B9D71000C3; Fri, 18 Nov 2022 10:25:35 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668785135; bh=M++jnfjveGZ9cjTx/spR7xVkDXePYVVzE3dXCfMTMik=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=OkOz5Rqtd/LbSME+kdbahfXLafR8/XhSx9I4Ikna7FbLJ+SijdINrNpCdru5U92eM 75asmWQ2AfgTT9FF/IAah4Il+ysjE4gf8j+5lRvx6mZyfr9+4x+KrXvMIkaNQ/S96o 7cmfvoNmWCTGzyZfssrt+LYP4mzPOjAtZM4uhxRt9b+MfJ0YXu+0GaZshonFnYYhnS GbdTsCLJLzEn2ZxO4C8b5+XPJ9mK3izXuAqV450HbsTFXJ9JxXlOv07zM09agd+GG6 s27xYZ5BGxO1Hvj0XLTBuMX4MX8/Ct/wXhOEETREZy3c7+cm874ADX/dvl48JT5B1w E99TAbTNaczbA== Received: from alfajor (unknown [45.44.229.252]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 10D991203CD; Fri, 18 Nov 2022 10:25:34 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83wn7s9txp.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 18 Nov 2022 17:13:54 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> Date: Fri, 18 Nov 2022 10:25:34 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.082 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) >> So let me return the question: what part of the above code makes you >> think it's correct for Emacs to use a different font than the DejaVu Sans? > The part where you requested a misc-fixed font. I can't see how a "misc-fixed" default fault would prevent the use of DejaVu Sans font for particular parts of the text. This has worked for the last 10 years or so, AFAIK. >> > Like, for example, that DejaVu Sans doesn't have a variant with the >> > size that matches the default face's font? >> DejaVu is a scalable font, so I can't see how it could not have a size >> that matches. > Of course, it can. > And if it isn't because of size, it can be because of some other font > attribute, like weight. I can't see which such attribute in my example would explain the behavior I see. > Bottom line: you cannot expect Emacs to select a font from a family > you request, not with a 100% reliability anyway. Emacs can decide > not to. I sense a bit of defensiveness in your responses. I'm really trying to fix an actual misbehavior in my config (one which at first sight looks to me like a plain bug, or at least a plain regression). What should I change in my recipe in order to keep the same default font but get the DejaVu Sans that used to get? Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 11:54:06 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 16:54:06 +0000 Received: from localhost ([127.0.0.1]:38110 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow4cv-0001Iw-Th for submit@debbugs.gnu.org; Fri, 18 Nov 2022 11:54:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49492) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow4cu-0001IM-O0 for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 11:54:05 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow4cp-0003UD-3n; Fri, 18 Nov 2022 11:53:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=UNYA8rikwbb5xu5my8N3PFVMlwHx5O1oiF+tlPuVzkk=; b=BPU4qL7LWfGG 5OH13HOGgVBmPYUptVPyzCXQgDjCkvuc5YRSp1PYef2yziMCuin6Hri+m8sx/wNkmbUDAqX6P0nIQ pwzQHxdBZh0cUYm2sGejLTPCXKe4Aa+PWRJ9ZKxueKboxEJJp1cOcwD4WWyKo1MaduKn1MdCoG4BB 302QQmCBbuObHnkW9oLZq1cmiFZJPvQL4NwbBZ0jl0REkCro6s0nyiJv2l65ZFZdH+e+IIRzsDN5F 94e+h8HdY7aN5+IjPt2SqpiOThXB0s53fJiw17H8qzsiQ1AguXaG1zlyY2obM9lc5+4i6yxnRMGo1 lTplwZYHdOPQBUXHUUBDvw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow4cn-0005Vv-QT; Fri, 18 Nov 2022 11:53:58 -0500 Date: Fri, 18 Nov 2022 18:54:02 +0200 Message-Id: <83pmdk9pat.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Fri, 18 Nov 2022 10:25:34 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: 59347@debbugs.gnu.org > Date: Fri, 18 Nov 2022 10:25:34 -0500 > > >> So let me return the question: what part of the above code makes you > >> think it's correct for Emacs to use a different font than the DejaVu Sans? > > The part where you requested a misc-fixed font. > > I can't see how a "misc-fixed" default fault would prevent the use of > DejaVu Sans font for particular parts of the text. This has worked for > the last 10 years or so, AFAIK. So this recipe is something that stopped working recently? Can you tell when, or bisect? > > Bottom line: you cannot expect Emacs to select a font from a family > > you request, not with a 100% reliability anyway. Emacs can decide > > not to. > > I sense a bit of defensiveness in your responses. I'm just tired of investigating recipes that eventually lead nowhere. The way Emacs approves and rejects fonts doesn't guarantee that a request to use a given family will always be granted. Moreover, fontconfig setup on the user's platform is also relevant. > I'm really trying to fix an actual misbehavior in my config (one > which at first sight looks to me like a plain bug, or at least a > plain regression). It isn't. > What should I change in my recipe in order to keep the same default font > but get the DejaVu Sans that used to get? The default font would be my guess. Try using some other font, not from the fixed-misc family. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 12:21:36 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 17:21:36 +0000 Received: from localhost ([127.0.0.1]:38158 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow53Y-00020W-JM for submit@debbugs.gnu.org; Fri, 18 Nov 2022 12:21:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55138) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow53W-00020J-LT for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 12:21:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow53R-0007uI-4y; Fri, 18 Nov 2022 12:21:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=C7pSVaCDlUMRUysinQLK4Y8lu8hZTdWFY0oW7kabhLM=; b=eq6Fx5lZqaZp oZrOawjc6C31pFTzh1bWbJR1FbiaZP6VLVABhl6NamYVHkxgcZlTBEypG0apYVgWOsNs1ISRBxpaO vfgpqVEtXC9JKfpRISNn2m+5TKuSGKt8aHamW+HXsdsKHkH8hAnU1Yt8njx0dcdjrcAYP6MQGfG3X u8MEVxZQPjUfPBi2NfcTzdV+jnkg+OA+pgTUM8/LgWRmH9n0+5ltqut3TX1glRilkTyF3bohGK19J W6btmJzaIQvIQRoFLYTnUD5tnklnfqt/ZWG7aze3BRjfKOond4faqYKaOcXuEJQT4GhJf6ZJCB1Kd JtDsDSiBH9jS8HxGn0FUkg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow53Q-0005Ws-JF; Fri, 18 Nov 2022 12:21:28 -0500 Date: Fri, 18 Nov 2022 19:21:32 +0200 Message-Id: <83k03s9o0z.fsf@gnu.org> From: Eli Zaretskii To: monnier@iro.umontreal.ca In-Reply-To: <83pmdk9pat.fsf@gnu.org> (message from Eli Zaretskii on Fri, 18 Nov 2022 18:54:02 +0200) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > Cc: 59347@debbugs.gnu.org > Date: Fri, 18 Nov 2022 18:54:02 +0200 > From: Eli Zaretskii > > > What should I change in my recipe in order to keep the same default font > > but get the DejaVu Sans that used to get? > > The default font would be my guess. Try using some other font, not > from the fixed-misc family. I take that back: I tried your recipe, and it works with every font I tried except DejaVu Sans. So I guess that font is the culprit, and you should find some other font that you like. Why DejaVu Sans is rejected, I donb't know, but that font has some issues that we already discovered in the past, so it could be a good idea to get rid of it regardless. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 14:46:58 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 19:46:58 +0000 Received: from localhost ([127.0.0.1]:38315 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7KE-0005gn-2g for submit@debbugs.gnu.org; Fri, 18 Nov 2022 14:46:58 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:31697) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7KA-0005gW-IG for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 14:46:57 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 16C0B4417F1; Fri, 18 Nov 2022 14:46:49 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 4A4BE4417E8; Fri, 18 Nov 2022 14:46:47 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668800807; bh=klcVpBI3eahWTx63KdFjcKLoS7sEg30yABOUvsLQQN0=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=e98+0P7t0Q+Wd6VFNS6lhAhErf1CxjNjik21Cdi/Tr+KQQXcVyJkP3c2tvDFYd62h 6Knz8AH6kkiqC188+tCmGxPLGtU58Uez1vexRYqmSmFmcH6DS4diW28jQexPEMaMIU D0Y68ilMSWkVP4wg1xHCZfKTS1BeJ0CCxGW9LyTj+nZqyOoNS6P90/som5HFy5FkbR YOHvqzj4M3PdCNhqhpaDjTzaW70RHAHXdM+fgrSkTlJT0r9sLrEpFQNZPBQCYn4qeq HRJBXdT4d9QA1PnI9MnXBbbB5KKCIQZFm7FcCpRwYzcSZc/lbQzP3KTDgXe8DecxT/ 2gDcKb1XirlEA== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1CBC9120F91; Fri, 18 Nov 2022 14:46:47 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83pmdk9pat.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 18 Nov 2022 18:54:02 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> Date: Fri, 18 Nov 2022 14:46:46 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.017 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > So this recipe is something that stopped working recently? I think so, yes (at least a similar setup in my config did). > Can you tell when, or bisect? Not sure when, yet. Presumably within the last 2 months. I'll try to bisect. > I'm just tired of investigating recipes that eventually lead nowhere. > The way Emacs approves and rejects fonts doesn't guarantee that a > request to use a given family will always be granted. Moreover, > fontconfig setup on the user's platform is also relevant. Is there some way I can ask Emacs for (something approximating) an explanation of why that `:family` specification was ignored? >> I'm really trying to fix an actual misbehavior in my config (one >> which at first sight looks to me like a plain bug, or at least a >> plain regression). > It isn't. For me it's definitely a regression: my favorite fonts aren't used as I want them. >> What should I change in my recipe in order to keep the same default font >> but get the DejaVu Sans that used to get? > The default font would be my guess. Try using some other font, not > from the fixed-misc family. I don't really want another default font. So far it's still the most legible monospace font at that size (both horizontal and vertical) I have found. > I take that back: I tried your recipe, and it works with every font I > tried except DejaVu Sans. So I guess that font is the culprit, and > you should find some other font that you like. That was my favorite so far for variable-pitch mixed with monospace. And it worked fine until recently. As far as I know it's a very widespread font, so it'd be good to know more precisely where's the problem so we can hopefully get it fixed or otherwise have a good justification. Admittedly, https://dejavu-fonts.github.io/ says the last release of that font was in 2016, so maybe it's not well maintained any more? > Why DejaVu Sans is rejected, I donb't know, but that font has some > issues that we already discovered in the past, so it could be a good > idea to get rid of it regardless. I'm looking at debbugs search for "dejavu sans" but can't see anything that suggests a problem specific to that font (and those I find just seem to be using "DejaVu Sans Mono" rather than "DejaVu Sans"). Do you remember particular instances? Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 14:58:10 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 19:58:10 +0000 Received: from localhost ([127.0.0.1]:38330 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7V3-000608-OC for submit@debbugs.gnu.org; Fri, 18 Nov 2022 14:58:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39320) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7Uz-0005zb-9A for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 14:58:08 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow7Ut-0006DW-ON; Fri, 18 Nov 2022 14:57:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TOy6zlr/bo8lTMjcMnBX8Dvu5M0d/R9B48ZQ2SpQuCI=; b=lbTwIsxFK+/A 7z1xOXxXSmARz6dJ5OsdA36mxcw5z3lrVnBL2SVfKwISKgG364shDEvkgnyQaS/Y1dBTC+PP10UmU us92ewVRpajJGrT+TdK95ZaSb5xCPuGNdEyEWslqT8FuGYZWxioZ5oeA0rTB+ic22kIJ1f88SQ8ID IQhrPAHyPgb7h67wL76zAX7+L5QKpze7EJb0LEwA3/ZF8G6v1efm2cljvPFcCBAeNnuwPwDbZiU+O CVkP5AiKkZ66M17qKLx25ZWlXF34WnriGkIPnSjegkssqocS3RKHvr+NBGqtx3SbtWRTHlHG5de0G A8Lpr6WHOPL0nkb8yc7jmQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ow7Ut-0003wY-8V; Fri, 18 Nov 2022 14:57:59 -0500 Date: Fri, 18 Nov 2022 21:58:03 +0200 Message-Id: <83fseg9gs4.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Fri, 18 Nov 2022 14:46:46 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: 59347@debbugs.gnu.org > Date: Fri, 18 Nov 2022 14:46:46 -0500 > > Is there some way I can ask Emacs for (something approximating) an > explanation of why that `:family` specification was ignored? The only way I know is to set font-log to nil before you do this, and then look at the log. But I have never learned anything useful from that log. > I'm looking at debbugs search for "dejavu sans" but can't see anything > that suggests a problem specific to that font (and those I find just > seem to be using "DejaVu Sans Mono" rather than "DejaVu Sans"). > Do you remember particular instances? Look at the DejaVu Sans Mono issues, I think they are the same font, basically. Anyway, can you confirm that using other fonts instead of DejaVu Sans does work? From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 15:00:48 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 20:00:48 +0000 Received: from localhost ([127.0.0.1]:38338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7Xc-000670-Fe for submit@debbugs.gnu.org; Fri, 18 Nov 2022 15:00:48 -0500 Received: from mail-pj1-f46.google.com ([209.85.216.46]:35789) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7Xa-00066n-Ox for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 15:00:47 -0500 Received: by mail-pj1-f46.google.com with SMTP id w4-20020a17090ac98400b002186f5d7a4cso5710835pjt.0 for <59347@debbugs.gnu.org>; Fri, 18 Nov 2022 12:00:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=gm7iTTwxm6D4Psiac6c61FWbargJFyC+c0QXjBeWImo=; b=OPJRPX7nFrIltlBL0TsVEeRRwfgXRW0VQ83Ojq8ZaLD2pjtGk2rwVZUTczBPTtsN/e lW1Qxcq4/tf+hDh3yumYep+O5+Sdp8fpju7SY/7H57K0PDd9AB/JB0vmvxf6quvJf9zS v3mIHM3sa6g/8PmWz5faYRHRN5hOFJpS/gSJtDpkTwjh+1RyiP+WpHVytxlY42TBdIM/ e3mBuU0oXUT/+jwuaYlO3trrf9EUYEHwTVtUGzyNMpHdvjeCV6Y2SdzkPQZW/A2Zn/OW dSx5SP0/hZiNh7r70iR9IzZFxvESn1CgLRLpDREFpzxfnJ/ZawGF7+sguL2A0fxOMOc5 r3Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gm7iTTwxm6D4Psiac6c61FWbargJFyC+c0QXjBeWImo=; b=l4u0aGoRvgP7s6FYulBAsuIP99R3udeMdE5Zos3UoKGsHCqVp1eqGEa51XsUe0O2PP ORhm8FHAHoBUt4W6irz9riL8UuiFKBIyWvH6xTWbJuf3vgmax6uSTnBZ2E51haYaFGyT FzSpPOw3tATIQve3SFQkBvjOhnVO8Zfx5deSTwzBbVZ//uQS02Bf5dpHFzZKmQfCqP9S +oX3DFWCZVQXDhdKlts1iQBIsWbo9yit7RFcpCX0jYpfZgwBmlyxAB/32SaYiW2aIcpw h9NX49gZ6/V3aNm/euSgRk1WggIfDkT9c4rmNMMrlcLN5l6qdMjY7pzYnyf7dQ30tCeG 9zDw== X-Gm-Message-State: ANoB5pmovuurfDiAiozuLUz7DbNr0iXMdunSn9eC5JUVM/E/UTb8BZ4s xDlUXTyYk/8dtq1wscwf1Yk= X-Google-Smtp-Source: AA0mqf7UG62/bpcSbK7Q/JMwKq7VI0uHlQTYbYgS1ieehQEbJTw0yCJlsEcFyNSUSqXCEuYiwFOQmw== X-Received: by 2002:a17:902:aa0c:b0:180:4030:1c7d with SMTP id be12-20020a170902aa0c00b0018040301c7dmr962757plb.99.1668801638366; Fri, 18 Nov 2022 12:00:38 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id p5-20020a17090a680500b0020dd9382124sm5708400pjj.57.2022.11.18.12.00.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Nov 2022 12:00:37 -0800 (PST) From: Yuan Fu Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored Date: Fri, 18 Nov 2022 12:00:36 -0800 In-Reply-To: <83k03s9o0z.fsf@gnu.org> To: Eli Zaretskii References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83k03s9o0z.fsf@gnu.org> X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Debbugs-Envelope-To: 59347 Cc: Stefan Monnier , 59347@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" --Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Nov 18, 2022, at 9:21 AM, Eli Zaretskii wrote: >=20 >> Cc: 59347@debbugs.gnu.org >> Date: Fri, 18 Nov 2022 18:54:02 +0200 >> From: Eli Zaretskii >>=20 >>> What should I change in my recipe in order to keep the same default = font >>> but get the DejaVu Sans that used to get? >>=20 >> The default font would be my guess. Try using some other font, not >> from the fixed-misc family. >=20 > I take that back: I tried your recipe, and it works with every font I > tried except DejaVu Sans. So I guess that font is the culprit, and > you should find some other font that you like. >=20 > Why DejaVu Sans is rejected, I donb't know, but that font has some > issues that we already discovered in the past, so it could be a good > idea to get rid of it regardless. I might have some more information, and here is a reproduce of what I = see:=20 Load these two (open source) fonts in to your machine, and emacs -Q -l = reproduce.el The content of reproduce.el is: (pop-to-buffer (let ((font1 "IBM Plex Mono") (font2 "Charter")) (with-current-buffer (get-buffer-create "*test*") (set-face-attribute 'default nil :font (font-spec :family font1 :weight 'medium)) (insert (propertize "Some Text\n" 'face `(:family ,font2))) (insert (propertize "Some Text" 'face `(:font ,(font-spec :family font2)))) (current-buffer)))) It inserts two lines of text, both using font2, but the first line using = :family and the second using :font. The one using :family is not = displayed in font2 (it falls back to some other font), but the one using = :font is. I think this is because the default font (font1) uses medium weight, but = font2 doesn=E2=80=99t have a medium weight. I tried with different fonts = for font2, and whether that font has a medium weight correlates to = whether the first line of text can be displayed in that font. So my guess is that if the face uses the :family attribute, it inherits = the weight from default, and if Emacs cannot find that weight in that = font, it falls back to some other font. I don=E2=80=99t know how to =E2=80=9Cfix=E2=80=9D this, but at very = least we should make it easy to figure out why the family attribute = =E2=80=9Cdidn=E2=80=99t work=E2=80=9D. (It=E2=80=99s not unreasonable = for someone to think: I have the font on my machine, the family settings = is set to that font, why is the text not displayed in that font??) Personally I think falling back to the same font but different weight is = probably less confusing. Yuan --Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE Content-Disposition: attachment; filename=reproduce.el Content-Type: application/octet-stream; x-unix-mode=0644; name="reproduce.el" Content-Transfer-Encoding: 7bit (pop-to-buffer (let ((font1 "IBM Plex Mono") (font2 "PragmataPro Mono")) (with-current-buffer (get-buffer-create "*test*") (set-face-attribute 'default nil :font (font-spec :family font1 :weight 'medium)) (insert (propertize "Some Text\n" 'face `(:family ,font2))) (insert (propertize "Some Text" 'face `(:font ,(font-spec :family font2)))) (current-buffer)))) --Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE Content-Disposition: attachment; filename=IBMPlexMono-Medium.ttf Content-Type: font/ttf; x-unix-mode=0644; name="IBMPlexMono-Medium.ttf" Content-Transfer-Encoding: base64 AAEAAAATAQAABAAwRFNJRwAAAAEAAbroAAAACEdERUYvsC+lAAGrDAAAALJHUE9TTTk3MAABq8AA AAUwR1NVQjFugWoAAbDwAAAJuk9TLzKMX2s3AAABuAAAAGBjbWFwmE6ZqQAAD2QAAAmgY3Z0IA7t AyIAABxYAAAARGZwZ20GWZw3AAAZBAAAAXNnYXNwABgAIQABqvwAAAAQZ2x5Zihq7BgAACNEAAFi MGhlYWQVvkKuAAABPAAAADZoaGVhBW8DgQAAAXQAAAAkaG10eFyRtZAAAAIYAAANTGxvY2EhPnhM AAAcnAAABqhtYXhwBW0CnwAAAZgAAAAgbWV0YZZ8dxcAAbqsAAAAOm5hbWV+awVQAAGFdAAACYlw b3N0hg85igABjwAAABv7cHJlcBkp5DQAABp4AAAB4AABAAAAAgBBtW6gEl8PPPUACQPoAAAAANqa hhQAAAAA2pp4Cv7o/v0CgwRsAAAACQACAAAAAAAAAAEAAAQB/u0AAAJY/uj+6AKDAAEAAAAAAAAA AAAAAAAAAANTAAEAAANTAFQABgBpAAYAAQAAAAAACgAAAgAB4AADAAEABAJYAfQABQAAAooCWAAA AEsCigJYAAABXgBNATUAAAILBgkFAgMAAgOgAAJvUAAgewAAAAAAAAAASUJNIAEAAAD7AgMM/yQB LAQBARMgAAGXAAAAAAIEAroAAAAgAAMCWAAgAAAAAAJYAAACWAAAAlgAPAJYADMCWABPAlgASgJY ADMCWAA8AlgARAJYADsCWAAzAlgAOwJYAFQCWABlAlgAXAJYAFgCWABLAlgALAJYAFQCWAA3AlgA TwJYADMCWABMAlgAOwJYACgCWABPAlgAMAJYABQCWAAtAlgAJwJYAE0CWAAUAlgAUwJYADoCWABS AlgAVgJYAFYCWAAvAlgASAJYAFACWAA7AlgATgJYAGwCWAA4AlgASAJYACwCWABUAlgALAJYAFQC WAAnAlgAGQJYAEUCWAAZAlgAGQJYABMCWAAMAlgAMAJYACwCWAAsAlgALAJYAC0CWAA2AlgAJgJY AB4CWAA8AlgANQJYADsCWAAvAlgAMgJYABQCWAA0AlgAlQJYAJUCWAA8AlgAAAJYADwCWADVAlgA JgJYANUCWAC+AlgAvgJYAPoCWACYAlgAtQJYANICWAA+AlgAWwJYAL4CWABTAlgAqwJYAMACWABE AlgAPAJYANgCWADYAlgAUwJYAEYCWADAAlgAWwJYAM8CWABeAlgAZAJYAGQCWABTAlgAUwJYAAsC WAALAlgAAAJYAP0CWAD9AlgASgJYACMCWAAAAlgAdQJYAA8CWACFAlgAgwJYAHoCWAAmAlgAQgJY AEICWAANAlgAJQJYAC0CWAA+AlgAPgJYAD4CWABQAlgAPgJYAD4CWAAtAlgAPgJYAFUCWABVAlgA VQJYAFUCWADVAlgApQJYACQCWAA+AlgAFAJYACACWAALAlgAGgJYADYCWAAgAlgAOAJYAEoCWAA8 Alj/0QJYADECWAArAlgADQJYAE4CWAA6AlgAMwJYABkCWAAsAlgAEgJYADECWABOAlgAGAJYABkC WAAbAlgALwJYABsCWAA6AlgALQJYADQCWAAxAlgAKAJYAFMCWAAjAlgAIwJYADwCWAA8AlgAPAJY ADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgA PAJYADwCWAAGAlgAPAJYADwCWAAzAlgAMwJYADMCWAAzAlgAMwJYADMCWAAzAlgAMwJYADMCWAAz AlgAMwJYADMCWAAzAlgAMwJYADMCWAAzAlgAMwJYADMCWAAzAlgACAJYADMCWAAzAlgABwJYAAcC WABKAlgASgJYAEoCWABKAlgASgJYACUCWAAzAlgANwJYADwCWAA8AlgAPAJYADwCWAA8AlgAPAJY ADwCWAA8AlgAPAJYADwCWAA8AlgAPAJYADwCWAA8AlgAFQJYADwCWAA8AlgAPAJYADsCWAA7AlgA OwJYADsCWAAzAlgAMwJYADMCWAAzAlgAFwJY/9wCWABlAlgAZQJYAGUCWABlAlgAZQJYAGUCWABl AlgAZQJYAGUCWABlAlgAZQJYAEgCWABaAlgAXAJYAFwCWABcAlgAWAJYAFkCWABLAlgASwJYAEsC WABGAlgASwJYAFQCWABUAlgAVAJYAFQCWAAAAlgAVAJYADcCWAA3AlgANwJYADcCWAA3AlgANwJY ADcCWAA3AlgANwJYACUCWAAlAlgANwJYADcCWAA3AlgANwJYADcCWAA3AlgANwJYADcCWAA3AlgA FAJYADcCWAA3AlgADQJYAEwCWABMAlgATAJYADsCWAA7AlgAOwJYADsCWAA7AlgAVAJYABACWAAo AlgAKAJYACgCWAAoAlgATwJYAE8CWABPAlgATwJYAE8CWABPAlgATwJYAE8CWABPAlgATwJYAE8C WABPAlgATwJYAE8CWABPAlgATwJYAE8CWABPAlgATwJYABQCWAAUAlgAFAJYABQCWAAnAlgAJwJY ACcCWAAnAlgAJwJYACcCWAAnAlgATQJYAE0CWABNAlgAFAJYABQCWAAUAlgAFAJYABQCWAAUAlgA FAJYABQCWAAUAlgAFAJYABQCWAAUAlgAFAJYABQCWAAUAlgAFAJYABQCWAAUAlgAFAJYABQCWAAU AlgAFAJYAAoCWAAKAlgAOgJYADoCWAA6AlgAOgJYADoCWABSAlgAEQJYABECWABWAlgAVgJYAFYC WABWAlgAVgJYAFYCWABWAlgAVgJYAFYCWABWAlgAVgJYAFYCWABWAlgAVgJYABgCWABWAlgAVgJY ACwCWAAvAlgALwJYAC8CWAAvAlgACAJYAEgCWABQAlgAUAJYAFACWABQAlgAUAJYAFACWABQAlgA UAJYAFACWABQAlgAUAJYAEcCWABHAlgAOwJYADsCWABOAlgAbAJYAGwCWABsAlgAbAJYACUCWABI AlgASAJYAEgCWABIAlgASAJYACwCWAAsAlgALAJYACwCWAAsAlgALAJYACwCWAAsAlgALAJYACMC WAAjAlgALAJYACwCWAAsAlgALAJYACwCWAAsAlgALAJYACwCWAAsAlgAFAJYACwCWAAsAlgAGgJY AFQCWABUAlgAVAJYACcCWAAnAlgAJwJYACcCWAAnAlgAOAJYABkCWAAZAlgAGQJYABkCWABUAlgA RQJYAEUCWABFAlgARQJYAEUCWABFAlgARQJYAEUCWABFAlgARQJYAEUCWABFAlgARQJYAEUCWABF AlgARQJYAEUCWABFAlgAGQJYABkCWAAZAlgAGQJYAAwCWAAMAlgADAJYAAwCWAAMAlgADAJYAAwC WAAwAlgAMAJYADACWABUAlgAKgJYAEYCWAA9AlgAKwJYABQCWAA8AlgAMwJYADwCWABfAlgAgQJY ABECWAA8AlgAFwJYADkCWABTAlgAUwJYAFwCWAAYAlgAPwJYAFQCWAA3AlgAVQJYAE8CWABKAlgA QAJYACcCWAAkAlgALQJYAEgCWABGAlgALAJYACoCWAANAlgALAJYAGQCWABJAlgALAJYADoCWAAU AlgATQJYAFMCWAB5AlgADQJYAFYCWAACAlgAJwJYAEUCWABFAlgASAJYAAgCWAA4AlgASAJYACwC WABKAlgAVAJYADoCWAAZAlgAIAJYABkCWAATAlgAQgJYADICWAAnAlgAJwJYAAgCWAAnAlgAUgJY ADMCWAAnAlgAJAJYADwCWAA8AlgAMwJYADMCWAAHAlgAgQJYAIECWAAxAlgAXwJYADwCWAA8AlgA PAJYAEoCWAAXAlgAFwJYAA0CWAA5AlgAOQJYAEsCWABTAlgAUwJYAFMCWABcAlgAUwJYAD8CWAAI AlgAAQJYAEgCWAAsAlgALAJYADcCWAA3AlgANwJYAEoCWAAnAlgAJwJYACcCWAAnAlgAMAJYADAC WAAtAlgARgJYAEACWABCAlgALAJYADsCWABVAlgAZQJYAGUCWABcAlgAFwJYABcCWABUAlgAPAJY ABQCWAAUAlgACgJYAHkCWAB5AlgALQJYAEwCWABWAlgAVgJYAFYCWAA6AlgAAgJYAAICWP/4AlgA JwJYACcCWABQAlgARQJYAEUCWABFAlgASAJYAEACWAAuAlgAAgJY//0CWABCAlgAJwJYACgCWAAs AlgALAJYACwCWAA6AlgAIAJYACACWAAgAlgAIAJYAAwCWAAMAlgADQJYADICWAApAlgALgJYACcC WAAnAlgASgJYAFACWABQAlgAOwJYAAgCWAAIAlgATQJYACwCWACVAlgAngJYAJwCWACSAlgAkAJY AJoCWACcAlgApAJYAJkCWACXAlgAlQJYAJ4CWACcAlgAkgJYAJACWACaAlgAnAJYAKQCWACZAlgA lwJYAKMCWACnAlgAqAJYAKQCWACjAlgArAJYAKkCWACvAlgAqQJYAKYCWACjAlgApwJYAKgCWACk AlgAowJYAKwCWACpAlgArwJYAKkCWACmAlgACwJYAAsCWAALAlgACwJYAAsCWAALAlgACwJYAAsC WAALAlgACwJYAAsCWAALAlgACwJYAAsCWAALAlgACwJYAAsCWAAaAlgAIQJYAA8CWABPAlgATwJY ABwCWAA0AlgAFwJYADQCWAAXAlgAIgJYACICWAATAlgAGwJYABMCWAAbAlgARgJYAEYCWAAPAlgA DwJYAAACWABPAlgABQJYAA0CWAAIAlgACAJYABkCWAAZAlgAewJYAIwCWACbAlgA4gJYAIUCWACe AlgA9AJYAKsCWAB9AlgAfQJYAH0CWAB6AlgAqwJYAKkCWADqAlgAqAJYAMsCWABpAAD/UAAA/3AA AP+3AAD/WgAA/3MAAP/JAAD/gAAA/1IAAP9SAAD/UgAA/4AAAP+dAAD/vwAAAAIAAP+fAAD/oAAA /70AAP+pAAD/PgAA/0sAAP9LAAD/SwAA/0sAAP9VAAD/UwAA/1UAAP9TAAD/VQAA/ugAAP9TAAD/ VQAA/1ACWAB7AlgAjAJYAJsCWADiAlgAhQJYAJ4CWAD0AlgAqwJYAH0CWAB9AlgAfQJYAHoCWACr AlgAqQAA/50AAP9LAAD/SwAA/0sAAP9LAAD/VQAA/1MAAP9VAAD/UwAA/1UAAP7oAAD/UwAA/1UA AP9QAlgAAAAAAAMAAAADAAAAHAABAAAAAAeoAAMAAQAAABwABAeMAAAAzACAAAYATAAAAA0AMAA5 AEAAWgBnAHoAfgCjAX4BjwGSAaEBsAH/AhsCNwJZArwCxwLdAwQDDAMSAxUDGwMjAygDwAQPBC8E MARPBF8EcwSdBKUEqwSzBLsEwgTZBN8E6QT1BPkOPx6FHp4e+SAUIBogHiAiICYgMCA6IEQgcCB5 IIkgoSCkIKYgriCyILUguiC9IL8hEyEWISIhJiEuIVEhXiGZIaohsyG3IbshxCHGIgIiBiIPIhIi GiIeIisiSCJgImUlyicTJ0wrEfbY+wL//wAAAAAADQAgADEAOgBBAFsAaAB7AKAApQGPAZIBoAGv AfoCGAI3AlkCuwLGAtgDAAMGAxIDFQMbAyMDJgPABAAEEAQwBDEEUARyBJAEoASqBK4EtgTABM8E 3ATiBO4E+A4/HoAenh6gIBMgGCAcICAgJiAwIDkgRCBwIHQggCChIKQgpiCoILEgtCC4IL0gvyET IRYhIiEmIS4hUCFTIZAhqSGwIbYhuiHEIcYiAiIGIg8iESIaIh4iKyJIImAiZCXKJxMnTCsO9tf7 Af//AAH/9QAAAA0AAP/gAAD/pgAAAAAAAAAI/wUAAAAAAAAAAP7Y/p4AVwBGAAAAAAAAABAADgAJ AAMAAP5DAAD+Ff3U/dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPJcAADjOgAA4DgAAAAAAADg KeA94CLgJ+I/4j/iOd/73/nf+AAA3/Tf89/x3+/f7t9/333fUuDc32MAAAAAAADhVwAA4UjhSOE3 4TTekt/53/EAAN503nLeZN483iXeJNrC29XbnQAAAAAFrQABAAAAAADIAAAA5gAAAPAAAAEGAQwB EgAAAAACwALCAsQCzgAAAAAAAAAAAswC1gLeAAAAAAAAAAAC4gAAAuQAAAAAAAAC/AMaAxwDNgNA A0IDTANWA1oDbgN0A4IDkAAAA5AAAAOYAAAESARMBFAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAA AAAAAAAAAAAAAAAAAAAAAAAEOAQ6BFAAAARgAAAAAAAAAAAAAAAAAAAEWAAAAAAAAAAAAAAAAAAA AAAAAARIBE4AAAAAAAMAYABUAHsAmQBsAEcAUwBjAGQAeAB+AFEASQBOAGkAOwBQAFIAhgCDAIcA YgBIAGUAagBmAHwATQMLAAQABgAHAAgACQAKAAsAZwBuAGgAfQNSAF8AlQCYAJoAbwBwAwgAcgB1 AF0AjQBKAHMDBgB3AIACsQKyAwoB/gBxAIoDFAKwAHYAXgLaAtcC2wBhAWsBZgFoAXEBaQFvAXwB gAGNAYYBiQGKAaQBngGgAaEBhQG2Ab0BuAG6AcMBuwCBAcEB4wHeAeAB4QH0Ad0BPwC1ALAAsgC7 ALMAuQDcAOAA7QDmAOkA6gEIAQMBBQEGAOUBHAEkAR8BIQEqASIAggEoAUsBRgFIAUkBXAFFAV4B bQC3AWcAsQFuALgBfgDeAYEA4QGCAOIBfwDfAYMA4wGEAOQBjwDvAYcA5wGLAOsBkADwAYgA6AGZ APkBmAD4AZsA+wGaAPoBnQEBAZwBAAGoAQwBpgEKAZ8BBAGnAQsBogECAakBDQGsAREBrQESARMB rgEUAbABFgGvARUBsQEXAbIBGAGzARkBtQEbAbQBGgEdAbcBHgHAAScBuQEgAb8BJgHPATYB0AE3 AdIBOQHRATgB0wE6AdYBPQHVATwB1AE7AdsBQwHaAUIB2QFBAekBUQHmAU4B3wFHAegBUAHlAU0B 5wFPAfEBWQH1AV0B9wH7AWMB/QFlAfwBZAHEASsB6gFSAXAAugF9AN0BwgEpAdcBPgHcAUQDDgMH AxADFQMEAwkDHAMbAx0DFgMXAx8DGAMZAyEDIAMaAx4DJwMlAygCggKDAqsCfgKFAqYCqAKpAqoC kwKVAqwCjwKNAp4CpwJOAk8CdwJKAlECcgJ0AnUCdgJfAmECeAJbAlkCagJzApgCZAJ/AksCgAJM AoECTQKIAlQCigJWApACXAKRAl0CkgJeApQCYAKWAmICmgJmAp8CawKgAmwCoQJtAqMCbwKkAnAC rQJ5AosChwJTAlcCfAJGAnsCRQJ9AkkChAJQAq4CegKGAlICiQJVAo4CWgKMAlgClwJjApkCZQKb AmcCnAJoAp0CaQKiAm4CpQJxAfMBWwHwAVgB8gFaAWoAtAFsALYBdwDBAXkAwwF6AMQBewDFAXgA wgFyALwBdAC+AXUAvwF2AMABcwC9AYwA7AGOAO4BkQDxAZIA8gGUAPQBlQD1AZYA9gGTAPMBpQEJ AaMBBwG8ASMBvgElAcoBMQHMATMBzQE0Ac4BNQHLATIBxQEsAccBLgHIAS8ByQEwAcYBLQHiAUoB 5AFMAesBUwHtAVUB7gFWAe8BVwHsAVQB+AFgAfYBXwH5AWEB+gFiAFUAVgBZAFcAWABaAHkAegCL AJ8AoAChAKIAlgCjAKQC4gLnAtgC2QLcAt0C3gLfAuAC4QLjAuQC5QLmAuoC6wLtAuwC/AL9Au4C 7wLxAvAC8gL4AvMC+QIBAH8C9wL1AvYC9AMtAy8ABgH4AAAACQD3AAMAAAAAAAAAAwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAGAAVAB7AJkAbABHAFMAYwBkAHgAfgBRAEkA TgBpADsAPgA/AEAAQQBCAEMARABFAEYAUABSAIYAgwCHAGIASAAhACIAIwAkACUAJgAnACgAKQAq ACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAZQBqAGYAfABNAwsABAAGAAcACAAJAAoA CwAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgAGcAbgBoAH0AAAFpAW8BgAGG AbYBuwHhALAAtQCyALMAuwC5AOAA5gDtAOkA6gEDAQgBBQEGARwBHwEkASEBIgEqAUYBSwFIAUkA eQB3AJUAmABwAIsAcQE/AHMAcgB0AwoDCACFAXwBwQCQAIAAiACJAJoB/gCUAgECAAIDAI8AdQB2 AAAA3AEoAGEAXwCNAI4AlwCEAf8AXQBeAE8DUgFrAXEBwwHPATYASwBMAFcAWABVAFYAggCMAV4B 9wBrAJYAWwBcAK4ArwB6AIoAWQBaAG0BaAGJAWYBigGNAZ4BoAGhAaQBuAG6AAABvQHeAeAB4wEC AwwDBAMGAw4DBwMQAxQDCQMVAw24AAAsS7gACVBYsQEBjlm4Af+FuABEHbkACQADX14tuAABLCAg RWlEsAFgLbgAAiy4AAEqIS24AAMsIEawAyVGUlgjWSCKIIpJZIogRiBoYWSwBCVGIGhhZFJYI2WK WS8gsABTWGkgsABUWCGwQFkbaSCwAFRYIbBAZVlZOi24AAQsIEawBCVGUlgjilkgRiBqYWSwBCVG IGphZFJYI4pZL/0tuAAFLEsgsAMmUFhRWLCARBuwQERZGyEhIEWwwFBYsMBEGyFZWS24AAYsICBF aUSwAWAgIEV9aRhEsAFgLbgAByy4AAYqLbgACCxLILADJlNYsEAbsABZioogsAMmU1gjIbCAioob iiNZILADJlNYIyG4AMCKihuKI1kgsAMmU1gjIbgBAIqKG4ojWSCwAyZTWCMhuAFAioobiiNZILgA AyZTWLADJUW4AYBQWCMhuAGAIyEbsAMlRSMhIyFZGyFZRC24AAksS1NYRUQbISFZLQC4AAArALoA AQANAAIrAboADgACAAIrAb8ADgAzAC4AHgAXABIAAAAIK78ADwAwACcAHwAWAA0AAAAIKwC/AAEA RgA6ACwAHwASAAAACCu/AAIARgA6ACwAHQARAAAACCu/AAMAPwA0ACgAHQASAAAACCu/AAQAWQBJ ADkAKAAaAAAACCu/AAUAQgA8ADAAJAAXAAAACCu/AAYARAA3ACsAHwASAAAACCu/AAcAKAAhABwA EwALAAAACCu/AAgAOwAwACYAFwAQAAAACCu/AAkAPgAzACgAHQARAAAACCu/AAoAIgAcABYAEAAK AAAACCu/AAsAigBxAFgAPwAmAAAACCu/AAwAWQBJADkAJQAWAAAACCu/AA0APAAxACcAHAARAAAA CCsAugAQAAkAByu4AAAgRX1pGES6ABAAFAABdLoAQAAUAAF0ugBwABQAAXS6AD8AFAABdLoAoAAU AAF0ugAQABQAAXW6AEAAFAABdboAPwAUAAF1ugA/ABYAAXS6AEAAFgABdLoAcAAWAAF0ugCfABYA AXS6AKAAFgABdLoAzwAWAAF0ugBvABgAAXS6AH8AGAABdboAYAAaAAFzugBvABoAAXS6AG8AGgAB dboADwAaAAF1ugCfABoAAXUAFwBGAEsAWAA+AFQAUgCLAF4AWQCkACgAPgBcAG0AdAAAAAz/OAAM AUkABgFrAAYBTwAGAXEABgIEAAwCugAMAuQADAAAADIAMgAyADIAsgEoAZ4B8AJmAuADOAQABIgF RgWgBfoGTgaaBtIHWge0CAgIfAjyCUwJxAoUCm4KpgsCC14LqAvoDDQMogz4DT4NgA28DjIOlA7O DxAPXg+ID+IQKhB+EMgRMhGOEgASMhJ+ErYTFBNwE7YT9hRyFO4U9hU6FZQWEhZeFsYXOBdwGBAY hBk6Gc4Z5hnuGgYaGhoyGlYawhrOGuYa8hsOGxobOBtWG2IbbhuGG5IbrhvKG9Yb4hweHGIcyB0u HV4djh20HdoeUB7CHtwe9h80H+4g1iDuIRYhxCH8IpIjYiPGJFAkqCUEJSolbCXIJlImdibGJu4n BidCJ3QnxifyJ/4oUChuKIwovCjsKRApOCl2KZIp1CoMKpArACt6LBQshiz6LYot3i5OLvQvUC/u MKYxLjHCMmwzBDN0NAI0ZDTuNfA2iDc0N7w3/DiOORw5ljoiOpo7AjsOOxo7JjsyOz47SjtWO2I8 BjwSPB48Kjw2PEY8UjxePGo8djyGPJI8njyqPLY8wjzOPNo85jzyPP49Cj2sPbg9xD3QPdw97D34 PgQ+ED4cPiw+OD5EPlA/Kj82P0I/Tj/aP+Y/8kB2QQ5BokGuQbpBxkHSQd5B6kH2QgJCDkIaQsJC zkLaQupC9kMCQw5DfEOIQ5RDoEOsQ7hDxEPQQ9xEVkRiRJpEpkSyRL5EykTWROJE7kT6RYZFkkYY Rn5Gska+RspG1kciRzZHQkdOR1pHxkfSR95H6kf2SGRIxkjSSN5I6kj2SQJJDkkaSSZJMknGSdJJ 3kpQSlxKaEp0SoBKjEqYSqhKtErASsxLekuGS5JLnkuqS7ZMdkyCTI5NAk2gTgpOFk4iTi5OpE6w TrxOyE7UTuBO7E74TwRPEE+ST55PqlAWUCJQLlA6UEZQUlBeUGpQdlCCUI5QmlCmULJQvlDKUNZQ 4lDuUPpRBlESUR5RKlE2UUJRTlFaUdBR3FHoUfRSAFIQUhxSKFI0UkBSUFJcUmhSdFLcUuhS9FMA U5ZTolOuU7pURlROVFpUZlRyVH5UilSWVKJUrlS6VMZVOlVGVVJVYlVuVXpVhlX0VgBWDFYYViRW vlbKVtZW4lbuVvpXBlcSVx5XKlc2V6BXrFf8WAxYGFgkWDBYPFhIWFRYYFjEWNBY3FjoWPRZUlle WWpZdlmCWY5ZmlmmWbJZvlpWWmJablrkWvBa/FsIWxRbIFssWzxbSFtUW2BbvFvIW9Rb4FvsW/hc nlyqXLZdIF1sXXhdhF2QXeBd7F34XgReEF4cXiheNF5AXkxezF7YXuRfQl9OX1pfZl9yX35fil+W X6Jfrl+6X8Zf0l/eX+pf9mACYA5gGmAmYJBgzmEGYVBhuGICYgpiEmKIYvpjJmN6Y4JkEGSCZMpk 1mVAZYxl4mYwZjhmcGZ4ZoBmsGa4Z3pngmfCaBxoYmi0aQ5pfGnOamBq7Gtea2ZrumvCa+5sWGxg bPZtaG2ybb5uKm54boBuiG6Qbshu0G7YbuBvLG+0b7xwEHBkcKpxEHFkccpyFHJ2cvxzbHN4c4Rz kHOcc6RzsHPidDR0pHSwdLx0yHVadWZ1cnYMdhh2lnbSdt526nb2dwJ3bHf0eGh44nk+ebp6EHoc eoh6kHrqevZ7AnsOexp7YHu4fCJ8LnyUfQR9EH0YfVp9Yn1ufXZ9+H4Afgh+EH4cfih+MH48fm5+ wH8ufzp/Rn9Sf7R/wH/MgIKAjoEKgRKBHoEqgTaBQoHIgkyCwIM2g6iEIIR4hISE7IT0hVaFYoVu hXqFhoWOheKGYIZshuaHUIdch2SHuIfAh8yH1Ig+iKKJDIkUiX6JwooaipKK4otOi7iL6oyMjPaN YI2ijfqOno7sj2aPzpAAkKaRDpF4kbySFpKQkt6TRJOmk9iUcpTYlUKVhJXcllSWopcIl2qXnJhS mLaYxpjWmOaY9pkGmRaZJpk2mUaZVplmmXaZhpmWmaaZtpnGmfKaFppAmnaarJrWmwCbKptUm36b spvmnBKcPpxqnJacypz+nQydGp1UnZqd2p4anlqemp8Gn3Kf1KAyoF6giKDcoQihKKFIoYChtqH6 ojaiiqLyoxKjMKN4o7SjvqPIo9Kj3KPmo/Cj+qQEpA6kGKQipGakcKR6pJykpqTOpN6k6KUopWil tqYipmymuqcEp0ankqfWqCyoeKjsqUqpoKnMqf6qTqqCqqiqzqsCqzSraqucq/KsZKyarNytHq1u reyuQK6YruyvMK+Gr8ywIrB0sRixGAACACAAAAI4AwwAAwAHADq6AAQACAAJERI5uAAEELgAANAA uAAARVi4AAAvG7kAAAAQPlm4AAHcuAAAELgABNy4AAEQuAAH3DAxMxEhESUhESEgAhj+NQF+/oID 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 DxC4AALQuAACL7gABtC4AAQQuAAN0DAxEzMTMxMzEzMTMwMjAyMDIxRdMglNakwJM1lIhkUJRoYC BP5OAbL+TgGy/fwBkP5wAAEALQAAAiwCBAARAHe6AA4AEgATERI5ALgAAEVYuAACLxu5AAIAHD5Z uAAARVi4AAgvG7kACAAcPlm4AABFWLgAAC8buQAAABA+WbgAAEVYuAAMLxu5AAwAED5ZugAFAAIA ABESOboADgAIAAwREjm6AAEABQAOERI5uAABELgACtAwMTMTJzMfATM/ATMHEyMvASMPAS3AuH9E NgY1RHa5woBNNQY0TAEG/mJOTmL6/vZvTExvAAABACf/OAIxAgQADwBYugANABAAERESOQC4AABF WLgACi8buQAKABw+WbgAAEVYuAAALxu5AAAAHD5ZuAAARVi4AAYvG7kABgASPlm5AAcACfS6AA0A CgAGERI5uAANELgACdAwMQEzAw4BKwE1MzcDMx8BMzcBw276FEE9V3ov0HJSQAZAAgT9mDIyWHcB /dixsQAAAQBNAAACCwIEAAkAU7oAAgAKAAsREjkAuAAARVi4AAQvG7kABAAcPlm4AABFWLgACS8b uQAJABA+WbkACAAJ9LgABBC5AAMACfS6AAEACAADERI5ugAGAAMACBESOTAxMzUBITUhFQEhFU0B Ov7RAan+xgFEYAFMWGD+tFgAAAACABQAAAJFAroABwALAGS6AAgADAANERI5uAAIELgABdAAuAAA RVi4AAUvG7kABQAePlm4AABFWLgABC8buQAEABA+WbgAAEVYuAAALxu5AAAAED5ZugAKAAUABBES ObgACi+5AAIADfS4AAUQuAAJ0DAxIScjByMTMxMBIwMzAc413jVyzJnM/ukIVrS6ugK6/UYCSf7O AAMAUwAAAiQCugARABsAJQBtugAcACYAJxESObgAHBC4AAHQuAAcELgAEtAAuAAARVi4AAAvG7kA AAAePlm4AABFWLgAES8buQARABA+WbkAGwAN9LoAJQAAABsREjm4ACUvuQAaAAn0ugAHACUAGhES ObgAABC5ACQADfQwMRMzMhYVFAYHFR4BFRQOAiMhNzI2PQE0JisBFRMyNj0BNCYrARVT8V9pPDM9 Shw0SSz+9Oo4PDw4fGw1Nzc1bAK6YlU9SA8FDk9IK0g1HVYuMyQzLuYBOCkwJDAp1gABADr/9AIl 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 MFA4HwABABkAAAI/AroABwA9ugACAAgACRESOQC4AABFWLgABS8buQAFAB4+WbgAAEVYuAACLxu5 AAIAED5ZuAAFELkABAAN9LgAANAwMQERIxEjNSEVAWRw2wImAlz9pAJcXl4AAAAAAQBF//QCEwK6 ABkARroAEwAaABsREjkAuAAARVi4ABkvG7kAGQAePlm4AABFWLgADC8buQAMAB4+WbgAAEVYuAAT Lxu5ABMAED5ZuQAGAA30MDETERQeAjMyPgI1ETMRFA4CIyIuAjURtQUYMCoqMBgFcBEyW0lJWzIR Arr+UytGMRoaMUYrAa3+Z0txSyYmS3FLAZkAAAABABkAAAI/AroACQBEugAEAAoACxESOQC4AABF WLgAAS8buQABAB4+WbgAAEVYuAAHLxu5AAcAHj5ZuAAARVi4AAAvG7kAAAAQPlm4AATQMDEzAzMT FzM3EzMD3sV5XD0GPV10xQK6/qDt7QFg/UYAAQAZAAACPwK6ABEAd7oAEAASABMREjkAuAAARVi4 AAEvG7kAAQAePlm4AABFWLgACy8buQALAB4+WbgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kA DgAQPlm4AAAQuAAE0LoABgABAAAREjm4AAYvuAAEELgACNC4AAYQuAAQ0DAxMwMzExczEzMTMzcT MwMjAyMDSzJiGQsIT29PCAsaXjKWRwhHArr+arMBoP5gswGW/UYBlP5sAAABABMAAAJGAroAEQB3 ugADABIAExESOQC4AABFWLgACS8buQAJAB4+WbgAAEVYuAAPLxu5AA8AHj5ZuAAARVi4AAcvG7kA BwAQPlm4AABFWLgAAS8buQABABA+WboABAAPAAEREjm6AAwACQAHERI5ugAIAAwAAxESObgACBC4 ABHQMDEhIy8BIw8BIxMDMx8BMz8BMwMCRn9PSgZMUnfWyX9HSAVISnfKioSEigFmAVR9gYF9/qwA AQAMAAACTAK6AAsAWroABQAMAA0REjkAuAAARVi4AAIvG7kAAgAePlm4AABFWLgACC8buQAIAB4+ WbgAAEVYuAAALxu5AAAAED5ZugAFAAIAABESObgABS+4AAHQuAAFELgACtAwMTMRAzMfATM/ATMD EfTofVlIBklZeugBBwGzrpWVrv5N/vkAAAABADAAAAIoAroACQBTugADAAoACxESOQC4AABFWLgA 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 FTMVIxEjJzI2PQE0JiMiBh0BFBYHNSEVAY4FFEM2T19fTzZDFAWOjmY9PWZnLTo6LTY4OJ8BvuMm MGdnZ2gwJohQODhQ/jpILiJbIi44Li8uON5UVAAAAAABABgAAAJCAroAEwCBugASABQAFRESOQC4 AABFWLgABi8buQAGAB4+WbgAAEVYuAAKLxu5AAoAHj5ZuAAARVi4AAEvG7kAAQAQPlm4AABFWLgA ES8buQARABA+WboAAwAGAAEREjm4AAMvuQAEAAn0uAAI0LgABBC4AAzQuAADELgAD9C4AAMQuAAT 0DAxMyMRIzUzETMRMxMzAzMVIxMjAyPHcD8/cDDBesa6ss6ByTEBOloBJv7aASb+2lr+xgE6AAAA AQAZAAACPwK6ABcAyboAAgAYABkREjkAuAAARVi4AA0vG7kADQAePlm4AABFWLgAAi8buQACABA+ WbsACAAFAAUABCu7ABMABQAWAAQruAAFELkABAAB9LgAFhC5ABcAAfS6AAAABAAXERI5ugADAAQA FxESOboABgAFABYREjm6AAcACAATERI5uAAIELkACQAB9LgAExC5ABIAAfS6AAoACQASERI5uAAN ELkADAAN9LgAENC6ABEACQASERI5ugAUAAgAExESOboAFQAFABYREjkwMSUVIzUHNTc1BzU3NSM1 IRUjFTcVBxU3FQFjboeHh4fcAibch4eHycmXPVI9WD1SPcxbW5o9Uj1YPVIAAAAABAAbAAACQAK6 ABkAHwAjACkBkLoAJAAqACsREjm4ACQQuAAY0LgAJBC4AB7QuAAkELgAI9AAuAAARVi4AAovG7kA CgAePlm4AABFWLgAAS8buQABABA+WbgAChC5AB8AAfS6AAgAHwABERI5uAAIL0EDAO8ACAABXUEF AN8ACADvAAgAAnFBAwCAAAgAAV25AAcAAfRBBQCfAAcArwAHAAJdugAEAAcAARESObgABC9BBwDP AAQA3wAEAO8ABAADcUEFAO8ABAD/AAQAAl1BBQAPAAQAHwAEAAJxQQUAbwAEAH8ABAACcUEDAD8A BAABckEJAA8ABAAfAAQALwAEAD8ABAAEXbkAAwAB9EEFAJ8AAwCvAAMAAl1BBwAfAAMALwADAD8A AwADXbgACBC4AA7QuAAHELgAEdC4AAQQuAAS0LgAAxC4ABXQugApAAMAARESObgAKS9BBwDPACkA 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 AC8AHgACXUEDAJ8AHgABXbgAINy4AA3cQQcAAAANABAADQAgAA0AA11BGQBAAA0AUAANAGAADQBw AA0AgAANAJAADQCgAA0AsAANAMAADQDQAA0A4AANAPAADQAMXUELAAAADQAQAA0AIAANADAADQBA AA0ABXG4ABPcuQAAAAb0uAANELkABgAG9LoACQAAAAYREjm4AAkvugAWABMADRESObgAFi+4AB4Q uAAc0LoAHQAeACAREjlBAwBKAB0AAV0wMQMyFhceATMyNjcXDgEjIiYnLgEjIgYHJz4BHwEHJwcn N0kZJBEXIxARGg8nDzMlGSQRFyMQERoPJw8zn3w2eHg0fAQ3EAgLDA0NLxcjEAgLDA0NLxcjnoYs aGgshgAAAAAAACsCCgABAAAAAAAAAC0AAAABAAAAAAABABQALQABAAAAAAACAAcAQQABAAAAAAAD ABsASAABAAAAAAAEABQALQABAAAAAAAFAAsAYwABAAAAAAAGABIAbgABAAAAAAAHAFEAgAABAAAA AAAIAAsA0QABAAAAAAAJADMA3AABAAAAAAALABkBDwABAAAAAAAMABIBKAABAAAAAAANAJABOgAB AAAAAAAOABoBygABAAAAAAAQAA0B5AABAAAAAAARAAYB8QABAAAAAAEAABIB9wABAAAAAAEBABIC CQABAAAAAAECABMCGwABAAAAAAEDABECLgABAAAAAAEEABoCPwADAAEECQAAAFoCWQADAAEECQAB ACgCswADAAEECQACAA4C2wADAAEECQADADYC6QADAAEECQAEACgCswADAAEECQAFABYDHwADAAEE CQAGACQDNQADAAEECQAHAKIDWQADAAEECQAIABYD+wADAAEECQAJAGYEEQADAAEECQALADIEdwAD AAEECQAMACQEqQADAAEECQANASAEzQADAAEECQAOADQF7QADAAEECQAQABoGIQADAAEECQARAAwG OwADAAEECQATAHQGRwADAAEECQEAACQGuwADAAEECQEBACQG3wADAAEECQECACYHAwADAAEECQED ACIHKQADAAEECQEEADQHS0NvcHlyaWdodCAyMDE3IElCTSBDb3JwLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLklCTSBQbGV4IE1vbm8gTWVkaXVtUmVndWxhcjIuMTtJQk0gO0lCTVBsZXhNb25vLU1lZGl1 bVZlcnNpb24gMi4xSUJNUGxleE1vbm8tTWVkaXVtSUJNIFBsZXioIGlzIGEgdHJhZGVtYXJrIG9m IElCTSBDb3JwLCByZWdpc3RlcmVkIGluIG1hbnkganVyaXNkaWN0aW9ucyB3b3JsZHdpZGUuQm9s ZCBNb25kYXlNaWtlIEFiYmluaywgUGF1bCB2YW4gZGVyIExhYW4sIFBpZXRlciB2YW4gUm9zbWFs ZW5odHRwOi8vd3d3LmJvbGRtb25kYXkuY29taHR0cDovL3d3dy5pYm0uY29tVGhpcyBGb250IFNv ZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNp b24gMS4xLiBUaGlzIGxpY2Vuc2UgaXMgYXZhaWxhYmxlIHdpdGggYSBGQVEgYXQ6IGh0dHA6Ly9z Y3JpcHRzLnNpbC5vcmcvT0ZMaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxJQk0gUGxleCBNb25v TWVkaXVtc2ltcGxlIGxvd2VyY2FzZSBhc2ltcGxlIGxvd2VyY2FzZSBnc2xhc2hlZCBudW1iZXIg emVyb3BsYWluIG51bWJlciB6ZXJvYWx0ZXJuYXRlIGxvd2VyY2FzZSBlc3pldHQAQwBvAHAAeQBy AGkAZwBoAHQAIAAyADAAMQA3ACAASQBCAE0AIABDAG8AcgBwAC4AIABBAGwAbAAgAHIAaQBnAGgA dABzACAAcgBlAHMAZQByAHYAZQBkAC4ASQBCAE0AIABQAGwAZQB4ACAATQBvAG4AbwAgAE0AZQBk AGkAdQBtAFIAZQBnAHUAbABhAHIAMgAuADEAOwBJAEIATQAgADsASQBCAE0AUABsAGUAeABNAG8A bgBvAC0ATQBlAGQAaQB1AG0AVgBlAHIAcwBpAG8AbgAgADIALgAxAEkAQgBNAFAAbABlAHgATQBv AG4AbwAtAE0AZQBkAGkAdQBtAEkAQgBNACAAUABsAGUAeACuACAAaQBzACAAYQAgAHQAcgBhAGQA ZQBtAGEAcgBrACAAbwBmACAASQBCAE0AIABDAG8AcgBwACwAIAByAGUAZwBpAHMAdABlAHIAZQBk ACAAaQBuACAAbQBhAG4AeQAgAGoAdQByAGkAcwBkAGkAYwB0AGkAbwBuAHMAIAB3AG8AcgBsAGQA dwBpAGQAZQAuAEIAbwBsAGQAIABNAG8AbgBkAGEAeQBNAGkAawBlACAAQQBiAGIAaQBuAGsALAAg AFAAYQB1AGwAIAB2AGEAbgAgAGQAZQByACAATABhAGEAbgAsACAAUABpAGUAdABlAHIAIAB2AGEA bgAgAFIAbwBzAG0AYQBsAGUAbgBoAHQAdABwADoALwAvAHcAdwB3AC4AYgBvAGwAZABtAG8AbgBk AGEAeQAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBpAGIAbQAuAGMAbwBtAFQAaABpAHMA IABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBu AGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMA ZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAg AGkAcwAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6ACAA aAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0 AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABJAEIATQAgAFAA bABlAHgAIABNAG8AbgBvAE0AZQBkAGkAdQBtAEgAbwB3ACAAcgBhAHoAbwByAGIAYQBjAGsALQBq AHUAbQBwAGkAbgBnACAAZgByAG8AZwBzACAAYwBhAG4AIABsAGUAdgBlAGwAIABzAGkAeAAgAHAA aQBxAHUAZQBkACAAZwB5AG0AbgBhAHMAdABzACEAcwBpAG0AcABsAGUAIABsAG8AdwBlAHIAYwBh AHMAZQAgAGEAcwBpAG0AcABsAGUAIABsAG8AdwBlAHIAYwBhAHMAZQAgAGcAcwBsAGEAcwBoAGUA ZAAgAG4AdQBtAGIAZQByACAAegBlAHIAbwBwAGwAYQBpAG4AIABuAHUAbQBiAGUAcgAgAHoAZQBy AG8AYQBsAHQAZQByAG4AYQB0AGUAIABsAG8AdwBlAHIAYwBhAHMAZQAgAGUAcwB6AGUAdAB0AAAA AAIAAAAAAAD/hQBNAAAAAQAAAAAAAAAAAAAAAAAAAAADUwAAAAEBAgADAEQBAwBFAEYARwBIAEkA SgEEAQUASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQAkACUAJgAnACgAKQAq ACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0AEwEGAQcAFAAVABYAFwAYABkA GgAbABwACQAjABABCACyALMAQgARAKsAHQAPAB4ACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAowAE AKIAIgALAAwAPgBAAF4AYAASAD8AvAAIAMYAXwDoAIYAiACLAIoAjACdAJ4AgwANAIIAwgAGAEEA YQAOAO8AkwDwALgAIACnAI8AHwAhAJQAlQDDAIcAuQCkAKUAnACSAQkBCgELAJgAhAEMAKYAhQAH AJYBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwDAAMEAaQEgAGsAbAEhAGoB IgEjASQAbgElAG0BJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8 AT0BPgE/AUABQQFCAUMBRAFFAKABRgD+AQAAbwFHAUgBSQEBAOoAcAFKAUsAcgBzAUwBTQBxAU4B TwFQAVEBUgFTAVQBVQFWAVcA+QFYAVkBWgFbAVwBXQFeAV8BYADXAHQBYQB2AHcBYgB1AWMBZAFl AWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAOMBcgFzAXQAeAF1AXYAeQF3AHsAfAF4AHoBeQF6AXsA oQF8AH0BfQF+AX8BgAGBAYIBgwGEAYUBhgGHALEBiAGJAYoBiwDlAPwBjAGNAIkBjgGPAZABkQGS AO4AfgGTAIAAgQGUAH8BlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpADsAaUAugGmAacB qAGpAaoA5wGrAMkBrADHAGIBrQCtAa4BrwGwAGMBsQCuAbIBswG0AbUBtgG3AbgBuQG6AbsAkAG8 AP0A/wBkAb0BvgG/AcAA6QBlAcEBwgDIAMoBwwHEAMsBxQHGAccByAHJAcoBywHMAc0BzgD4Ac8B 0AHRAdIB0wDMAdQAzQDOAPoB1QDPAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIA4gHjAeQB5QBm AeYA0AHnANEAZwHoANMB6QHqAesAkQHsAK8B7QHuAe8B8AHxAfIB8wH0AfUB9gH3ALAB+AH5AfoB +wDkAPsB/AH9Af4B/wIAAgECAgDtANQCAwDVAGgCBADWAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQ AhECEgITAhQA6wIVAhYAuwIXAhgCGQIaAOYCGwCXAKgAmgCZAJ8AmwIcAh0CHgIfAiACIQIiAiMC JAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJA AkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwC XQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5 AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUC lgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKy ArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAPEA8gDzAsgCyQLKAssC zALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLo AukC6gLrAPQC7ALtAPUA9gLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwED AgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVANkDFgDaANwAjgDfAI0AQwDY AOEA2wMXAN0DGAMZAxoA3gDgAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0D LgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNK A0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cHdW5pMDAwRAdhLmFsdDAxB2cuYWx0MDEHZy5hbHQw Mgp6ZXJvLmFsdDAxCnplcm8uYWx0MDIHdW5pMDBBRAd1bmkyMTJFB3VuaTIxMTMHdW5pMjExNgRF dXJvB3VuaTBFM0YHdW5pMjBBMQd1bmkyMEE0B3VuaTIwQTYHdW5pMjBBOAd1bmkyMEE5B3VuaTIw QUEHdW5pMjBBQgd1bmkyMEFEB3VuaTIwQUUHdW5pMjBCMQd1bmkyMEIyB3VuaTIwQjQHdW5pMjBC NQd1bmkyMEI4B3VuaTIwQjkHdW5pMjBCQQd1bmkyMEJEB3VuaTIwQkYGYWJyZXZlB3VuaTFFQTEH dW5pMUVBMwdhbWFjcm9uB2FvZ29uZWsKYXJpbmdhY3V0ZQd1bmkxRUFGB3VuaTFFQjcHdW5pMUVC MQd1bmkxRUIzB3VuaTFFQjUHdW5pMUVBNQd1bmkxRUFEB3VuaTFFQTcHdW5pMUVBOQd1bmkxRUFC DGFhY3V0ZS5hbHQwMQxhYnJldmUuYWx0MDERYWNpcmN1bWZsZXguYWx0MDEPYWRpZXJlc2lzLmFs dDAxDXVuaTFFQTEuYWx0MDEMYWdyYXZlLmFsdDAxDXVuaTFFQTMuYWx0MDENYW1hY3Jvbi5hbHQw MQ1hb2dvbmVrLmFsdDAxC2FyaW5nLmFsdDAxEGFyaW5nYWN1dGUuYWx0MDEMYXRpbGRlLmFsdDAx DXVuaTFFQUYuYWx0MDENdW5pMUVCNy5hbHQwMQ11bmkxRUIxLmFsdDAxDXVuaTFFQjMuYWx0MDEN dW5pMUVCNS5hbHQwMQ11bmkxRUE1LmFsdDAxDXVuaTFFQUQuYWx0MDENdW5pMUVBNy5hbHQwMQ11 bmkxRUE5LmFsdDAxDXVuaTFFQUIuYWx0MDEHYWVhY3V0ZQtjY2lyY3VtZmxleApjZG90YWNjZW50 BmRjYXJvbgZlYnJldmUGZWNhcm9uCmVkb3RhY2NlbnQHdW5pMUVCOQd1bmkxRUJCB2VtYWNyb24H ZW9nb25lawd1bmkxRUJEB3VuaTFFQkYHdW5pMUVDNwd1bmkxRUMxB3VuaTFFQzMHdW5pMUVDNQd1 bmkwMjU5C2djaXJjdW1mbGV4DGdjb21tYWFjY2VudApnZG90YWNjZW50DGdicmV2ZS5hbHQwMRFn Y2lyY3VtZmxleC5hbHQwMRJnY29tbWFhY2NlbnQuYWx0MDEQZ2RvdGFjY2VudC5hbHQwMQRoYmFy C2hjaXJjdW1mbGV4BmlicmV2ZQd1bmkxRUNCB3VuaTFFQzkHaW1hY3Jvbgdpb2dvbmVrBml0aWxk ZQJpagdpamFjdXRlB3VuaTAyMzcGamFjdXRlC2pjaXJjdW1mbGV4DGtjb21tYWFjY2VudAxrZ3Jl ZW5sYW5kaWMGbGFjdXRlBmxjYXJvbgxsY29tbWFhY2NlbnQEbGRvdAZuYWN1dGUGbmNhcm9uDG5j b21tYWFjY2VudAtuYXBvc3Ryb3BoZQNlbmcGb2JyZXZlB3VuaTFFQ0QHdW5pMUVDRg1vaHVuZ2Fy dW1sYXV0B29tYWNyb24Lb3NsYXNoYWN1dGUFb2hvcm4HdW5pMUVEQgd1bmkxRUUzB3VuaTFFREQH dW5pMUVERgd1bmkxRUUxB3VuaTFFRDEHdW5pMUVEOQd1bmkxRUQzB3VuaTFFRDUHdW5pMUVENwZy YWN1dGUGcmNhcm9uDHJjb21tYWFjY2VudAZzYWN1dGULc2NpcmN1bWZsZXgMc2NvbW1hYWNjZW50 EGdlcm1hbmRibHMuYWx0MDEEdGJhcgZ0Y2Fyb24HdW5pMDE2Mwd1bmkwMjFCBnVicmV2ZQd1bmkx RUU1B3VuaTFFRTcNdWh1bmdhcnVtbGF1dAd1bWFjcm9uB3VvZ29uZWsFdXJpbmcGdXRpbGRlBXVo b3JuB3VuaTFFRTkHdW5pMUVGMQd1bmkxRUVCB3VuaTFFRUQHdW5pMUVFRgZ3YWN1dGULd2NpcmN1 bWZsZXgJd2RpZXJlc2lzBndncmF2ZQt5Y2lyY3VtZmxleAd1bmkxRUY1BnlncmF2ZQd1bmkxRUY3 B3VuaTFFRjkGemFjdXRlCnpkb3RhY2NlbnQGQWJyZXZlB3VuaTFFQTAHdW5pMUVBMgdBbWFjcm9u B0FvZ29uZWsKQXJpbmdhY3V0ZQd1bmkxRUFFB3VuaTFFQjYHdW5pMUVCMAd1bmkxRUIyB3VuaTFF QjQHdW5pMUVBNAd1bmkxRUFDB3VuaTFFQTYHdW5pMUVBOAd1bmkxRUFBB0FFYWN1dGULQ2NpcmN1 bWZsZXgKQ2RvdGFjY2VudAZEY2Fyb24GRGNyb2F0BkVicmV2ZQZFY2Fyb24KRWRvdGFjY2VudAd1 bmkxRUI4B3VuaTFFQkEHRW1hY3JvbgdFb2dvbmVrB3VuaTFFQkMHdW5pMUVCRQd1bmkxRUM2B3Vu aTFFQzAHdW5pMUVDMgd1bmkxRUM0B3VuaTAxOEYLR2NpcmN1bWZsZXgMR2NvbW1hYWNjZW50Ckdk b3RhY2NlbnQESGJhcgtIY2lyY3VtZmxleAZJYnJldmUHdW5pMUVDQQd1bmkxRUM4B0ltYWNyb24H SW9nb25lawZJdGlsZGUCSUoHSUphY3V0ZQZKYWN1dGULSmNpcmN1bWZsZXgMS2NvbW1hYWNjZW50 BkxhY3V0ZQZMY2Fyb24MTGNvbW1hYWNjZW50BExkb3QGTmFjdXRlBk5jYXJvbgxOY29tbWFhY2Nl bnQDRW5nBk9icmV2ZQd1bmkxRUNDB3VuaTFFQ0UNT2h1bmdhcnVtbGF1dAdPbWFjcm9uC09zbGFz aGFjdXRlBU9ob3JuB3VuaTFFREEHdW5pMUVFMgd1bmkxRURDB3VuaTFFREUHdW5pMUVFMAd1bmkx RUQwB3VuaTFFRDgHdW5pMUVEMgd1bmkxRUQ0B3VuaTFFRDYGUmFjdXRlBlJjYXJvbgxSY29tbWFh Y2NlbnQGU2FjdXRlC1NjaXJjdW1mbGV4DFNjb21tYWFjY2VudAd1bmkxRTlFBFRiYXIGVGNhcm9u B3VuaTAxNjIHdW5pMDIxQQZVYnJldmUHdW5pMUVFNAd1bmkxRUU2DVVodW5nYXJ1bWxhdXQHVW1h Y3JvbgdVb2dvbmVrBVVyaW5nBlV0aWxkZQVVaG9ybgd1bmkxRUU4B3VuaTFFRjAHdW5pMUVFQQd1 bmkxRUVDB3VuaTFFRUUGV2FjdXRlC1djaXJjdW1mbGV4CVdkaWVyZXNpcwZXZ3JhdmULWWNpcmN1 bWZsZXgHdW5pMUVGNAZZZ3JhdmUHdW5pMUVGNgd1bmkxRUY4BlphY3V0ZQpaZG90YWNjZW50B3Vu aTA0MzANdW5pMDQzMC5hbHQwMQd1bmkwNDMxB3VuaTA0MzIHdW5pMDQzMwd1bmkwNDM0B3VuaTA0 MzUHdW5pMDQzNgd1bmkwNDM3B3VuaTA0MzgHdW5pMDQzOQd1bmkwNDNBB3VuaTA0M0IHdW5pMDQz Qwd1bmkwNDNEB3VuaTA0M0UHdW5pMDQzRgd1bmkwNDQwB3VuaTA0NDEHdW5pMDQ0Mgd1bmkwNDQz B3VuaTA0NDQHdW5pMDQ0NQd1bmkwNDQ2B3VuaTA0NDcHdW5pMDQ0OAd1bmkwNDQ5B3VuaTA0NEEH dW5pMDQ0Qgd1bmkwNDRDB3VuaTA0NEQHdW5pMDQ0RQd1bmkwNDRGB3VuaTA0MTAHdW5pMDQxMQd1 bmkwNDEyB3VuaTA0MTMHdW5pMDQxNAd1bmkwNDE1B3VuaTA0MTYHdW5pMDQxNwd1bmkwNDE4B3Vu aTA0MTkHdW5pMDQxQQd1bmkwNDFCB3VuaTA0MUMHdW5pMDQxRAd1bmkwNDFFB3VuaTA0MUYHdW5p MDQyMAd1bmkwNDIxB3VuaTA0MjIHdW5pMDQyMwd1bmkwNDI0B3VuaTA0MjUHdW5pMDQyNgd1bmkw NDI3B3VuaTA0MjgHdW5pMDQyOQd1bmkwNDJBB3VuaTA0MkIHdW5pMDQyQwd1bmkwNDJEB3VuaTA0 MkUHdW5pMDQyRgd1bmkwNEQzB3VuaTA0RDENdW5pMDREMy5hbHQwMQ11bmkwNEQxLmFsdDAxB3Vu aTA0RDUHdW5pMDQ1Mwd1bmkwNDkxB3VuaTA0OTMHdW5pMDQ5NQd1bmkwNDUwB3VuaTA0NTEHdW5p MDRENwd1bmkwNDU0B3VuaTA0REQHdW5pMDRDMgd1bmkwNDk3B3VuaTA0REYHdW5pMDQ5OQd1bmkw NENGB3VuaTA0RTUHdW5pMDQ1RAd1bmkwNEUzB3VuaTA0NUMHdW5pMDQ5Qgd1bmkwNDlEB3VuaTA0 QTEHdW5pMDQ1OQd1bmkwNEEzB3VuaTA0NUEHdW5pMDRBNQd1bmkwNEU3B3VuaTA0NzMHdW5pMDRF OQd1bmkwNEFCB3VuaTA0RUYHdW5pMDRGMQd1bmkwNEYzB3VuaTA0NUUHdW5pMDRBRgd1bmkwNEIx B3VuaTA0QjMHdW5pMDRGNQd1bmkwNEI3B3VuaTA0QjkHdW5pMDRGOQd1bmkwNDU1B3VuaTA0NUYH dW5pMDQ1Ngd1bmkwNDU3B3VuaTA0NTgHdW5pMDQ1Mgd1bmkwNDVCB3VuaTA0QkIHdW5pMDREOQd1 bmkwNEQyB3VuaTA0RDAHdW5pMDRENAd1bmkwNDAzB3VuaTA0OTAHdW5pMDQ5Mgd1bmkwNDk0B3Vu aTA0MDAHdW5pMDQwMQd1bmkwNEQ2B3VuaTA0MDQHdW5pMDREQwd1bmkwNEMxB3VuaTA0OTYHdW5p MDRERQd1bmkwNDk4B3VuaTA0QzAHdW5pMDRFNAd1bmkwNDBEB3VuaTA0RTIHdW5pMDQwQwd1bmkw NDlBB3VuaTA0OUMHdW5pMDRBMAd1bmkwNDA5B3VuaTA0QTIHdW5pMDQwQQd1bmkwNEE0B3VuaTA0 RTYHdW5pMDQ3Mgd1bmkwNEU4B3VuaTA0QUEHdW5pMDRFRQd1bmkwNEYwB3VuaTA0RjIHdW5pMDQw RQd1bmkwNEFFB3VuaTA0QjAHdW5pMDRCMgd1bmkwNEY0B3VuaTA0QjYHdW5pMDRCOAd1bmkwNEY4 B3VuaTA0MDUHdW5pMDQwRgd1bmkwNDA2B3VuaTA0MDcHdW5pMDQwOAd1bmkwNDAyB3VuaTA0MEIH dW5pMDRCQQd1bmkwNEQ4B3VuaTIwNzAHdW5pMjA3NAd1bmkyMDc1B3VuaTIwNzYHdW5pMjA3Nwd1 bmkyMDc4B3VuaTIwNzkHdW5pMjA4MAd1bmkyMDgxB3VuaTIwODIHdW5pMjA4Mwd1bmkyMDg0B3Vu aTIwODUHdW5pMjA4Ngd1bmkyMDg3B3VuaTIwODgHdW5pMjA4OQl6ZXJvLm51bXIIb25lLm51bXII dHdvLm51bXIKdGhyZWUubnVtcglmb3VyLm51bXIJZml2ZS5udW1yCHNpeC5udW1yCnNldmVuLm51 bXIKZWlnaHQubnVtcgluaW5lLm51bXIJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVl LmRub20JZm91ci5kbm9tCWZpdmUuZG5vbQhzaXguZG5vbQpzZXZlbi5kbm9tCmVpZ2h0LmRub20J bmluZS5kbm9tB3VuaTIxNTMHdW5pMjE1NAd1bmkyMTU1B3VuaTIxNTYHdW5pMjE1Nwd1bmkyMTU4 B3VuaTIxNTkHdW5pMjE1QQd1bmkyMTUwB3VuaTIxNUIHdW5pMjE1Qwd1bmkyMTVEB3VuaTIxNUUH dW5pMjE1MQd1bmkyNzEzB3VuaTI3NEMHdW5pMjE5MAd1bmkyMTkxB3VuaTIxOTMHdW5pMjE5Mgd1 bmkyMTk2B3VuaTIxOTcHdW5pMjE5OQd1bmkyMTk4B3VuaTIxQjAHdW5pMjFCMgd1bmkyQjExB3Vu aTJCMEYHdW5pMkIxMAd1bmkyQjBFB3VuaTIxQjEHdW5pMjFCMwd1bmkyMUM2B3VuaTIxQzQHdW5p MjE5NAd1bmkyMTk1B3VuaTIxQjYHdW5pMjFCNwd1bmkyMUE5B3VuaTIxQUEHdW5pMjFCQQd1bmky MUJCC3RpbGRlLmFsdDAxCmJyZXZlLmN5cmwJcmluZ2FjdXRlB3VuaTAyQkIHdW5pMDJCQwd1bmkw MzAzB3VuaTAzMDQHdW5pMDMwNwd1bmkwMzA4B3VuaTAzMEIHdW5pMDMwMQd1bmkwMzAwB3VuaTAz MDIHdW5pMDMwQwd1bmkwMzA2B3VuaTAzMEEHdW5pMDMwOQd1bmkwMzEyB3VuaTAzMTUHdW5pMDMx Qgd1bmkwMzI3B3VuaTAzMjMHdW5pMDMyNgd1bmkwMzI4CmJyZXZlYWN1dGUKYnJldmVncmF2ZQli cmV2ZWhvb2sKYnJldmV0aWxkZQ1kaWVyZXNpc2FjdXRlDWRpZXJlc2lzY2Fyb24NZGllcmVzaXNn cmF2ZQ9jaXJjdW1mbGV4YWN1dGUPY2lyY3VtZmxleGJyZXZlD2NpcmN1bWZsZXhncmF2ZQ5jaXJj dW1mbGV4aG9vaw5kaWVyZXNpc21hY3Jvbg9jaXJjdW1mbGV4dGlsZGUKdGlsZGUuY2FzZRB0aWxk ZS5hbHQwMS5jYXNlC21hY3Jvbi5jYXNlDmRvdGFjY2VudC5jYXNlDWRpZXJlc2lzLmNhc2URaHVu Z2FydW1sYXV0LmNhc2UKYWN1dGUuY2FzZQpncmF2ZS5jYXNlD2NpcmN1bWZsZXguY2FzZQpjYXJv bi5jYXNlCmJyZXZlLmNhc2UPYnJldmUuY3lybF9jYXNlCXJpbmcuY2FzZQ5yaW5nYWN1dGUuY2Fz ZQx1bmkwMzA5LmNhc2UPYnJldmVhY3V0ZS5jYXNlD2JyZXZlZ3JhdmUuY2FzZQ5icmV2ZWhvb2su Y2FzZQ9icmV2ZXRpbGRlLmNhc2USZGllcmVzaXNhY3V0ZS5jYXNlEmRpZXJlc2lzY2Fyb24uY2Fz ZRJkaWVyZXNpc2dyYXZlLmNhc2UUY2lyY3VtZmxleGFjdXRlLmNhc2UUY2lyY3VtZmxleGJyZXZl LmNhc2UUY2lyY3VtZmxleGdyYXZlLmNhc2UTY2lyY3VtZmxleGhvb2suY2FzZRNkaWVyZXNpc21h Y3Jvbi5jYXNlFGNpcmN1bWZsZXh0aWxkZS5jYXNlB3VuaTAwQTAAAAEAAwAIAAoAEAAF//8ADwAB AAAADAAAAAAAAAACABsABAAPAAEAEQA6AAEArgCvAAIA3ADcAAEBAgECAAEBDwEPAAEBKAEoAAEB KwErAAEBUgFSAAEBfAF8AAEBwQHBAAEBxAHEAAEB6gHqAAECCAIIAAECCwINAAECDwIPAAECHAIc AAECIAIgAAECKAIoAAECKwItAAECLwIvAAECOAI4AAECPAI8AAECQAJAAAEDFgMjAAMDJQM1AAMD RANRAAMAAAABAAAACgBCAHoAA0RGTFQAFGN5cmwAIGxhdG4ALAAEAAAAAP//AAEAAAAEAAAAAP// AAEAAQAEAAAAAP//AAEAAgADbWFyawAUbWFyawAgbWFyawAsAAAABAAAAAEAAgADAAAABAAAAAEA AgADAAAABAAAAAEAAgADAAQACgASABoAIgAEAAAAAQAgAAQAAAABAToABAAAAAEBkAAEAAAAAQNm AAEDmAOiAAEADAAaAAMAAAB6AAAAegAAAHoANQByAHgAfgCEAIoAkACQAJYAnACiAKgAqACWAKgA rgC0ALoAwACoAKgAqADGAKgAqADMANIA2ADeAOQA6gCoAKgA8AD2APYAqACoAKgA5AD8AQIAqACo AKgAqACoAKgAqACcAKgAwACoAKgAAQAAAAAAAQEfAAAAAQEhAAAAAQE6AAAAAQEuAAAAAQEdAAAA AQE0AAAAAQEvAAAAAQFMAAAAAQE9AAAAAQEsAAAAAQEMAAAAAQEmAAAAAQFxAAAAAQEpAAAAAQHV AAAAAQE7AAAAAQEyAAAAAQEVAAAAAQEwAAAAAQCMAAAAAQErAAAAAQEUAAAAAQFDAAAAAQE3AAAA AQEnAAAAAQLAAsYAAQAMABIAAQAAABwACgAcACIAKAAuADQAOgBAACIARgAuAAEAAAAAAAECLwAA AAECCAAAAAEBjwAAAAECJwAAAAECBAAAAAECRQAAAAECCwAAAAEBjgAAAAECgAKWAAEADACuACgA AAEYAAABGAAAARgAAAEYAAABGAAAARgAAAEYAAABGAAAARgAAAEYAAABGAAAARgAAAEYAAABGAAA ARgAAAEYAAABGAAAARgAAAEYAAABGAAAARgAAAEYAAABGAAAARgAAAEYAAABGAAAAR4AAAEeAAAB HgAAAR4AAAEeAAABHgAAAR4AAAEeAAABHgAAAR4AAAEeAAABHgAAAR4AAAEeADoAggCIAI4AlACa AIgAoACmAKwAsgC4ALIAvgDEAMoA0ADWALIAsgCyANAAsgCsANwA4gDoAO4A9ADuAKwArAD6AQAB BgCsAKwArACsAKwBDAESAKwArACsAKwArACsAKwBGAEeASQAsgCyANYBKgCsAKwArAABAAACBAAB AAACugABAR8CBAABASECBAABATkCBAABAS4CBAABASgCBAABASoCBAABAIoCugABASwCugABASwC BAABAS8CBAABAToCBAABAR0CBAABAVUCBAABAS0CBAABASkCBAABAS8CugABAUECugABARUCugAB ATACugABATYCugABATwCugABATsCugABAKQCugABATICugABAS0CugABASsCBAABAUwCBAABAXwC BAABAX0CugABARwBIgABAAwAEgABAAAAEAAEABAAFgAcACIAAQABAuQAAQJCAuQAAQGvAuQAAQGH AwAAAQEvAuQAAgABAyUDJwAAAAIACgAEAAoAAAAOAA8ABwARABUACQAYADAADgAyADoAJwECAQIA MAErASsAMQFSAVIAMgHEAcQAMwHqAeoANAABAAEDKAABAAoABAAFAAkADwAbACEAJQApADUBAgAC AAMDFgMiAAADKQM1AA0DRANRABoAAgAQAAQABQAAAAcABwACAAkACQADAAsADgAEABIAGQAIABsA OgAQANwA3AAwAQIBAgAxAQ8BDwAyASgBKAAzASsBKwA0AVIBUgA1AXwBfAA2AcEBwQA3AcQBxAA4 AeoB6gA5AAEAAQMjAAEABAAIABIAGgAsAAEAAAAKAJYCwAADREZMVAAUY3lybAA8bGF0bgBkAAQA AAAA//8ADwAAAAMABgAJAAwADwASABUAGAAbAB4AIQAkACcAKgAEAAAAAP//AA8AAQAEAAcACgAN ABAAEwAWABkAHAAfACIAJQAoACsABAAAAAD//wAPAAIABQAIAAsADgARABQAFwAaAB0AIAAjACYA KQAsAC1hYWx0ARBhYWx0ARhhYWx0ASBjY21wAShjY21wATBjY21wAThkbm9tAUBkbm9tAUZkbm9t AUxmcmFjAVJmcmFjAVhmcmFjAV5udW1yAWRudW1yAWpudW1yAXBvcmRuAXZvcmRuAXxvcmRuAYJz YWx0AYhzYWx0AY5zYWx0AZRzaW5mAZpzaW5mAaBzaW5mAaZzczAxAaxzczAxAbJzczAxAbhzczAy Ab5zczAyAcRzczAyAcpzczAzAdBzczAzAdZzczAzAdxzczA0AeJzczA0AehzczA0Ae5zczA1AfRz czA1AfpzczA1AgBzdXBzAgZzdXBzAgxzdXBzAhJ6ZXJvAhh6ZXJvAh56ZXJvAiQAAAACAAAAAQAA AAIAAAABAAAAAgAAAAEAAAACAAIAAwAAAAIAAgADAAAAAgACAAMAAAABAAcAAAABAAcAAAABAAcA AAABAAUAAAABAAUAAAABAAUAAAABAAYAAAABAAYAAAABAAYAAAABAAQAAAABAAQAAAABAAQAAAAB ABAAAAABABAAAAABABAAAAABAAkAAAABAAkAAAABAAkD+gABAAsD9AABAAsD7gABAAsEJgABAAwE IAABAAwEGgABAAwEKAABAA0EIgABAA0EHAABAA0EIAABAA4EGgABAA4EFAABAA4EGAABAA8EEgAB AA8EDAABAA8AAAABAAgAAAABAAgAAAABAAgAAAABAAoAAAABAAoAAAABAAoAEgAmAC4ANgA+AE4A VgBeAGYAbgB2AH4AhgCOAJYAngCmAK4AtgABAAAAAQQOAAMAAAABBHoABAAAAAEAiAAGAAAABQD6 AQwBHgEwAUIAAQAAAAEBRAAEAAAAAQFGAAEAAAABArAAAQAAAAECwgABAAAAAQLUAAEAAAABAuYA AQAAAAEC+AABAAAAAQL6AAEAAAABAzAAAQAAAAEDPAABAAAAAQM+AAEAAAABA0AAAQAAAAEDPgAB AAAAAQRoAAEEigADAAwALgBYAAQACgAQABYAHAM0AAIDFwMtAAIDGwMvAAIDHAMuAAIDHgAFAAwA EgAYAB4AJAM1AAIDFgMwAAIDGwMyAAIDHAMxAAIDHwMzAAIDIQAEAAoAEAAWABwDLAACAxYDKQAC AxsDKgACAxwDKwACAyEAAwABBBoAAQQmAAAAAQAAABEAAwABBBoAAQQgAAAAAQAAABEAAwAAAAEE FAABBBoAAQAAABEAAwAAAAEEGAABBAgAAQAAABEAAwABBAwAAQRYAAAAAQAAABEAAgRWAAIAdQB2 AAEEVAAGABIAtADeARwBMgFcABAAIgAqADIAOgBCAEoAUgBaAGIAagByAHoAggCKAJIAmgLXAAMA aQA/AtgAAwBpAEAC2gADAGkAQQLcAAMAaQBCAuAAAwBpAEMC4gADAGkARALjAAMAaQBFAucAAwBp AEYC1wADAGsAPwLYAAMAawBAAtoAAwBrAEEC3AADAGsAQgLgAAMAawBDAuIAAwBrAEQC4wADAGsA RQLnAAMAawBGAAQACgASABoAIgLZAAMAaQBAAt0AAwBpAEIC2QADAGsAQALdAAMAawBCAAYADgAW AB4AJgAuADYC2wADAGkAQQLeAAMAaQBCAuQAAwBpAEUC2wADAGsAQQLeAAMAawBCAuQAAwBrAEUA AgAGAA4C3wADAGkAQgLfAAMAawBCAAQACgASABoAIgLhAAMAaQBDAuUAAwBpAEUC4QADAGsAQwLl AAMAawBFAAIABgAOAuYAAwBpAEUC5gADAGsARQACAvIACgLDAsQCxQLGAscCyALJAsoCywLMAAIC 2AAKAs0CzgLPAtAC0QLSAtMC1ALVAtYAAgK+AAoCrwKwArECsgKzArQCtQK2ArcCuAACAqQACgK5 AroCuwK8Ar0CvgK/AsACwQLCAAECmgABAAABAAACApYAGgAFAMYAxwDIAMkAygDLAMwAzQDOAM8A 0ADRANIA0wDUANUA1gDXANgA2QDaANsCBQJHAkgAAAEBAAICdAAFAAwA/AD9AP4A/wAAAQIAAQI+ AAEAAAEDAAECNAACAAABBAABAloAAQACAloAIQAFAAwAPQDGAMcAyADJAMoAywDMAM0AzgDPANAA 0QDSANMA1ADVANYA1wDYANkA2gDbAPwA/QD+AP8BQAIFAkcCSAACAkYANwAFAMYAxwDIAMkAygDL AMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA/AD9AP4A/wFAAgUCRwJIAzgDOQM6AzsD PAM9Az4DPwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRAAECEgANACAAJgAwADYAPABC AEgATgBUAFoAYABmAG4AAgAMAA0ABAA8AD0CwwLNAAICxALOAAICxQLPAAICxgLQAAICxwLRAAIC yALSAAICyQLTAAICygLUAAICywLVAAICzALWAAMDBQM2AzcAAwNAAw8DQQACAboAEgECAQ8DIwNE AyIDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQABAAMDGQMdAx8AAQAEAAgAEgAaACwAAQABAx4A AQABAAsAAQABAycAAQABAA8AAgACAxYDJAAAAykDNQAPAAEAAQAQAAIADAAhADoAAAFuAW4AGgF8 AXwAGwGAAYAAHAGQAZAAHQGXAZcAHgGnAacAHwHBAcEAIAHEAcQAIQHPAc8AIgHnAecAIwHqAeoA JAACAAIDIQMhAAADKQM1AAEAAQACAAQAFQACAAIAPgBCAAAARABEAAUAAgACADsAOwAAAD4ARgAB AAEAAQA7AAIABAAEAAQAAACwAMUAAQIEAgQAFwJFAkYAGAABAAUACwD4APkA+gD7AAEAAQE/AAIA CAAEAAQAAAALAAsAAQA7ADsAAgCwAMUAAwD4APsAGQE/AT8AHQIEAgQAHgJFAkYAHwACAAoABAAE AAAAsADFAAEA+AD7ABcBPwE/ABsCBAIEABwCRQJGAB0DBgMNAB8DEAMRACcDIQMhACkDKQM1ACoA AQANAAsAOwA+AD8AQABBAEIAQwBEAEUARgMEAw4AAgAFAA8AEAAAAx4DHgACAyEDIQADAycDJwAE AykDNQAFAAAAAAABAAAAAAAAACgAAAACZGxuZwAAACgAAAAJc2xuZwAAADEAAAAJQ3lybCxMYXRu Q3lybCxMYXRuAAAAAAABAAAAAA== --Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE Content-Disposition: attachment; filename="Charter Regular.otf" Content-Type: font/otf; x-unix-mode=0644; name="Charter Regular.otf" Content-Transfer-Encoding: base64 T1RUTwALAIAAAwAwQ0ZGIOpNwa8AAAu4AACCo0RTSUcAAAABAACXNAAAAAhHUE9T6C/3swAAkfAA AAVCT1MvMospfuEAAAEgAAAAYGNtYXBS8FTkAAAIjAAAAwxoZWFkG2TMRwAAALwAAAA2aGhlYQfc BfwAAAD0AAAAJGhtdHjtWSc0AACOXAAAA5RtYXhwAOVQAAAAARgAAAAGbmFtZWGaWzAAAAGAAAAH C3Bvc3T/bgA6AAALmAAAACAAAQAAAAIAABT1f4tfDzz1AAMD6AAAAADcIwwIAAAAANwjfIj/Xv8U BKgDwwAAAAMAAgAAAAAAAAABAAAD1ADsAAAEyf9e/2EEqAABAAAAAAAAAAAAAAAAAAAA5QAAUAAA 5QAAAAMCJwGQAAUACAKKAlgAAABLAooCWAAAAV4AOgEgAAACAAUDBgAAAgAEAAAAAQAAAAAAAAAA AAAAAHB5cnMAQAAg+wIC+ADwANgD1ADsAAAAAQAAAAAB4QKfAAAAIAACAAAADwC6AAEAAAAAAAEA BwAAAAEAAAAAAAIABwAHAAEAAAAAAAMAGQAOAAEAAAAAAAQABwAAAAEAAAAAAAUAMgAnAAEAAAAA AAYADgBZAAMAAQQJAAAEaABnAAMAAQQJAAEADgTPAAMAAQQJAAIADgTdAAMAAQQJAAMAMgTrAAMA AQQJAAQADgTPAAMAAQQJAAUAZAUdAAMAAQQJAAYAHAWBAAMAAQQJAAcAegWdAAMAAQQJAAgAOgYX Q2hhcnRlclJlZ3VsYXIyLjAwMDtweXJzO0NoYXJ0ZXJSZWd1bGFyVmVyc2lvbiAyLjAwMDtob3Rj b252IDEuMC4xMTc7bWFrZW90ZmV4ZSAyLjUuNjU2MDJDaGFydGVyUmVndWxhcgAoAGMAKQAgAEMA bwBwAHkAcgBpAGcAaAB0ACAAMQA5ADgAOQAtADEAOQA5ADIALAAgAEIAaQB0AHMAdAByAGUAYQBt ACAASQBuAGMALgAsACAAQwBhAG0AYgByAGkAZABnAGUALAAgAE0AQQAuACAAWQBvAHUAIABhAHIA ZQAgAGgAZQByAGUAYgB5ACAAZwByAGEAbgB0AGUAZAAgAHAAZQByAG0AaQBzAHMAaQBvAG4AIAB1 AG4AZABlAHIAIABhAGwAbAAgAEIAaQB0AHMAdAByAGUAYQBtACAAcAByAG8AcAByAGkAZQB0AHkA IAByAGkAZwBoAHQAcwAgAHQAbwAgAHUAcwBlACwAIABjAG8AcAB5ACwAIABtAG8AZABpAGYAeQAs ACAAcwB1AGIAbABpAGMAZQBuAHMAZQAsACAAcwBlAGwAbAAsACAAYQBuAGQAIAByAGUAZABpAHMA dAByAGkAYgB1AHQAZQAgAHQAaABlACAANAAgAEIAaQB0AHMAdAByAGUAYQBtACAAQwBoAGEAcgB0 AGUAcgAgACgAcgApACAAVAB5AHAAZQAgADEAIABvAHUAdABsAGkAbgBlACAAZgBvAG4AdABzACAA YQBuAGQAIAB0AGgAZQAgADQAIABDAG8AdQByAGkAZQByACAAVAB5AHAAZQAgADEAIABvAHUAdABs AGkAbgBlACAAZgBvAG4AdABzACAAZgBvAHIAIABhAG4AeQAgAHAAdQByAHAAbwBzAGUAIABhAG4A ZAAgAHcAaQB0AGgAbwB1AHQAIAByAGUAcwB0AHIAaQBjAHQAaQBvAG4AOwAgAHAAcgBvAHYAaQBk AGUAZAAsACAAdABoAGEAdAAgAHQAaABpAHMAIABuAG8AdABpAGMAZQAgAGkAcwAgAGwAZQBmAHQA IABpAG4AdABhAGMAdAAgAG8AbgAgAGEAbABsACAAYwBvAHAAaQBlAHMAIABvAGYAIABzAHUAYwBo ACAAZgBvAG4AdABzACAAYQBuAGQAIAB0AGgAYQB0ACAAQgBpAHQAcwB0AHIAZQBhAG0AJwBzACAA dAByAGEAZABlAG0AYQByAGsAIABpAHMAIABhAGMAawBuAG8AdwBsAGUAZABnAGUAZAAgAGEAcwAg AHMAaABvAHcAbgAgAGIAZQBsAG8AdwAgAG8AbgAgAGEAbABsACAAdQBuAG0AbwBkAGkAZgBpAGUA ZAAgAGMAbwBwAGkAZQBzACAAbwBmACAAdABoAGUAIAA0ACAAQwBoAGEAcgB0AGUAcgAgAFQAeQBw AGUAIAAxACAAZgBvAG4AdABzADoAIAAnAEIASQBUAFMAVABSAEUAQQBNACAAQwBIAEEAUgBUAEUA UgAgAGkAcwAgAGEAIAByAGUAZwBpAHMAdABlAHIAZQBkACAAdAByAGEAZABlAG0AYQByAGsAIABv AGYAIABCAGkAdABzAHQAcgBlAGEAbQAgAEkAbgBjAC4AJwBDAGgAYQByAHQAZQByAFIAZQBnAHUA bABhAHIAMgAuADAAMAAwADsAcAB5AHIAcwA7AEMAaABhAHIAdABlAHIAUgBlAGcAdQBsAGEAcgBW AGUAcgBzAGkAbwBuACAAMgAuADAAMAAwADsAaABvAHQAYwBvAG4AdgAgADEALgAwAC4AMQAxADcA OwBtAGEAawBlAG8AdABmAGUAeABlACAAMgAuADUALgA2ADUANgAwADIAQwBoAGEAcgB0AGUAcgBS AGUAZwB1AGwAYQByAEIASQBUAFMAVABSAEUAQQBNACAAQwBIAEEAUgBUAEUAUgAgAGkAcwAgAGEA IAByAGUAZwBpAHMAdABlAHIAZQBkACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABCAGkAdABz AHQAcgBlAGEAbQAgAEkAbgBjAC4AQgBpAHQAcwB0AHIAZQBhAG0AIABJAG4AYwAuACwAIABDAGEA bQBiAHIAaQBkAGcAZQAsACAATQBBAAAAAAMAAAADAAABIgABAAAAAAAcAAMAAQAAASIAAAEGAAAA AAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAECAwQFBgdoCQoLDA0ODxAREhMUFRYXGBka GxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0B8QkNERUZHSElKS0xNTk9QUVJT VFVWV1hZWltcXV5fAJianJ2lqK6ytbO0t7a4uby6u73Avr/BwsXDxMbIy8nKcNdhYmZ0c5XRz859 gwCKjQDfAABk2gAAAAAAi48AkJN7YNAAZQAAanh5AJmbqo6Ub4lpd0EI2ADMsGMAa2xtbnFydXZ6 l56Wn6ChoqOkpqcAqaytr5F+f4CBgoSFhoeIAAQB6gAAADYAIAAEABYAJwBfAGAAfgCsAP8BMQFC AVMBYQF4AX4BkgLHAt0gFCAaIB4gIiAmIDAgOiBEISIiEvsC//8AAAAgACgAYABhAKEArgExAUEB UgFgAXgBfQGSAsYC2CATIBggHCAgICYgMCA5IEQhIiIS+wH//wAA/+EAHP/hAAAAAP9gAAAAAAAA /zgAAP7TAAAAAAAAAAAAAAAA4FPgSuAy4B/frN7ABWwAAQA2AAAAAAAAAD4AVAAAAPQA9gD4AAAA +AAAAPgA+gEEAQYBCgEOAAAAAAAAAAAAAAAAAAAAAAABAAIAAwAEAAUABgAHAGgAYABhAGIAZwBk ANYAZgCDAM8AiwBqANAA0QCAANcA3wDjAOIAfQDaAHMAcgCFAN4AjwB4AN0A3ADhAHsAmQCWAJcA mwCYAJoAigCcAKAAnQCeAJ8ApAChAKIAowDTAKUAqQCmAKcAqgCoANsAjQCvAKwArQCuANUA1ACV ALUAsgCzALcAtAC2AJAAuAC8ALkAugC7AMAAvQC+AL8A2QDBAMUAwgDDAMYAxADYAJMAywDIAMkA ygDkAOAAzACMAJIAjgCUAKsAxwCxAM0AfgCIAIEAggCEAIcAfwCGAG8AiQBBAAgAdQBpAHcAdgBw AHEAdAADAAAAAAAA/2sAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAgABAQEPQ2hhcnRlclJlZ3Vs YXIAAQEBLPgbAvgcBPtGDAPFDAQdAOz6mA37NvuAHQAABKj6VwXvD6wdAAB4ghL3QREAAgEBEBZD aGFydGVyIFJlZ3VsYXJOb3JtYWwAAAEAAZQAqxkAxhsA4wEAmQAAqgAAlwAApQEAmgAAnQAAxQAA oAEAnwAApwAAmAAAqAAAmwAAngAAlgAAnAAAogEAqQAApAAA4gAA5QIAAQAEAAcAaQDMAV0CLAL3 A+UEJARiBKAFGQVXBZUFsgXeBf0GWwapBx8HzQghCJcJFwlJCekKYwqzCx0LSwt/C60MMA1TDckO jg8GD4EQHxCqEUQR2RIkEoMTKRONFC4UrhUpFbcWUBcXF60YGxipGQMZhhoxGrIbDhtLG2kbpBvS G+4cLRzHHT8dpB4/Hr4fPSAxIL4hMCGsIlcinyNsI/kkUyTyJXMl9iaGJtonWSe5KDYo2ilYKbMq NipUKtYrKyuNLDcs4S0ELbsuSS8XL6Yv3DBSMK4w4TETMd8yijKmMxozzjP7NEg0dTSzNSg1njX5 Nm03kjgUODk4YDiWOPo5FjlmOZE53TotOoo6vjr8Oy87TDw8PM89Tz3yPto/KkAMQFZAu0FLQhxD AkOORDBE6EV1RjJHCEfbSJNJZUpNSwVLZ0vfTHNM1E25TkpO8k+yUERRHVHhUohTRVQcVMNVlVYf VtVXnliGWT1aKVspW+Rcf10rXfZekl76X3JgBGBtYWRh22JiYwRjfGQ4ZPlll2ZFZxJnr2iAaQVp 1Wq+auRsM2xSbO1thm4gblBuoG8Gb5xwQXCGcVZx/nJYcqlzRnRPdPl1ZXYH+8oO+8oO+46C9wb4 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 VIsI+3iLBRPci2MFzIUFnH0Fi/y7BXp9BVKGBRPsi2IF9zj3xRWL99IFnY2di5uLCPcUi8haiyAI i/sCTlD7BosIfIt1jW6OCA73I/tEufcLvfjowQGy9fdC6vdB9QP4MoAV90Cn9vcZi/dPCIv3AWfm R8wIT8Q+qTWLCDWLP21PUghGSmcwi/sBCIv7UPcA+xr3QHEIi/sEylb3E4sItIu6kMCWCIu0BWeD bIhwiwgvi1yziNoIW70V+xeLMfcFi/dNCIv3UOT3AvcYiwj3GIvk+wSL+04Ii/tNMvsF+xiLCA7F g7pk/wArgAD/AQCAALj3rLlgthL15fd87xN2q/kzFRNui2MFxIUFnH0Fi/y7BXp9BVKGBYtiBfeC iwWLtAVSkAV6mQWL94IFnYycjJqLCOaLsnGmOQgTtqBLj0q7YQiid6yCuIsIooukjqmRCIuxBYiL iIuIiwg/i2uXdcYIebqKwm+5CHesaaBamAj3AKPBw4vhCIv3DzzE+zaLCBN2+5OLBfc4XRW7iwX3 EIvHZYsjCIsoUmT7DIsIhYt5i2yMCIv3qwUOa3/A+OS9EsfMVej3h+c8vxPox58VuXfJf9OLCPc0 i+7ei/cKCIu3fLBuqAhduFWbWKAIE9Qvsluki84Ii9S+u+CLCK6LqYSkfQiaegWaLAW/iwWL9y8F UJ5TlFSLCPsiizI8i/sFCIsqxWb3A1sIE+j3AVzFeYs4CItFVVkqiwhei2WTbpoIfpwFf/cHBVCL BYv7RAUOlIv/ACuAAP8B2YAA9y5duRKawvdK5vdKwhQcE7ya+TMVE9yL+y4FwosFE7yZ6AWZmgX3 LosFi/zJBXl9BUiGBYtiBfeZiwWLtAVIkAV5mQWL+MkF9y6LBRPcmXwFmS4FwosFE7yL9y4F/MmL BQ71f8n/AkCAAP8ALIAAYLYS7eb3+cETuKP5MxWLYwXEhQWcfQWL/AcFi0GQVLJcCLFd1W3qiwjq i9WpsbkIsrqQw4vUCBPYi/gABZ2dBceUBRO4i7MF+2eLBRPYi2MFx4IFnnkFi/v3BYv7HFdM+xKL CPsUi1jKi/ccCBO4i/f+BZ2ZBcmRBYuzBfuJiwUOqZt2+Q22Y7MSdPd993j3WxPQdPkzFRO4i2MF y38F93/9BAXQiwX3evkEBcmXBRPYi7MF+1uLBYtjBcmFBZV9BftJ/IwF+1D4jAWWmQXFkQWLswUT 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 T1kyiwg5i1W5i8UIi7eqsMKcCA5zi/8AJoAA/wGCgADN90aqbM4S6t73ad4T7Pcg+XQV+w5nBRPc i2wF2IsFi/z4BXp7BVWGBYtnBfdviwWLrwVckAV5mwWL9+MFtqGwlquLCNWLpm2LQgiL+50FensF XIYFi2cF926LBYuvBVaQBXmbBYv3rgWL71y/NIsIYItXdEhmCIv3xQUT7GWLBQ77yIv/ACaAAP8B fIAAqmzO9vcHEur3CCDeE7j3LflYFWuLcXKLagiLa6Vyq4sIq4ulpIurCIurcaVriwgT1If7chX7 B2cFE7SLbAXRiwWL+/4FensFVoYFi2cF93WLBYuvBVWQBXmbBYv4QQUT1GWLBQ771vtZdvkRqmzO 9vcHEuL3CCzeE7T3APg3FYv8RwWLL3tYZn8IKsYFcoB/eIt1CItrpHW3iwjBi76isrUIwseN1Yvy CIv4JgVliwUT1PsIZwUTtItsBdKLBRO4dvd7FYtrpXKriwiri6Wki6sIi6txpWuLCGuLcXKLaggO RIv/ACaAAP//2YAA/wAogAD/ALqAAKf3TbRksvdQqmzOEure9wz3UvsJ9zATq0CjixX3b4sFi68F XJAFeZsFi/c+BcWLBfcb+1YFi2oF9zCLBRNrQIuxBUuQBftE94wFE7OA9x33JQXLkwUTq4CLsAX7 UosFi2YFuIcFkn0F+y37PwV4iwWL+HUFZYsFE61A+w5nBROrQItsBdiLBYv8+AV6ewVVhgWLZwUO +8aL/wAmgAD/AnaAAKpszhLy3hOwposV936LBYuvBVKQBXmbBYv5OwVliwUT0PsOZwUTsItsBdiL BYv8+AV6ewVQhgWLZwUO95OL/wAmgAD/AXyAAKpszk7NEvDe917e91/eE574Wvg8FXS3ZaJaiwhh i1d2SWQIE66LwgVliwUTzvsIZwUTrotsBdKLBYv7/gV6ewVVhgWLZwX3b4sFi68FW5AFepsFE56L 9+MFt6GwlqyLCMeLp2qLRQiL+50FensFW4YFi2cF92mLBYuvBVyQBXmbBYv34wW2oLGXq4sIyYun aotFCIv7nQV5ewVchgWLZwX3bosFi68FVpAFepsFi/euBYvuWcA8iwhji1J0QF8IDneL/wAmgAD/ AXyAAKpszk7NEvDe92neE5ypixX3b4sFi68FW5AFepsFi/fjBbahsJariwjVi6Zti0IIi/udBXp7 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 1RPS+Cn5SxVeml6TX4sI+xCLR1aLMAiLUatk0GkIE+Q8aWRZi0MIi0eyUddnCPNazXSLSQiLXGJn TYsIE8xsi2uTap0IfuUFWosFjfsVBb92vIG5iwj3A4vTzIvhCIvGarVEqwgT0diquMqLzwiL0V6+ MLgIMbdSnIvFCIu7tbDGiwgT0qiLqoGvdwiVOwW4iwWL9xUFE+H7S/ujFelouV6LTwiLXW9kU2YI KrZdsIvOCIu9qLLFpQgOnfd5vffHvQHuvvfGvQPX+UkVaGcF8CcFb2Z8YYtdCItdmmGnZggmJwWu ZwXw8AWwbrN9u4sIu4u1mbCoCO8mBa6vBSfvBaewmbWLuQiLuX21b7AI7+8FaK8FJyYFZahhmlyL CFyLY3xlbggm8AX3dyAV4IvPRos3CIs3R0U2iwg2i0fQi+AIi9/P0OCLCA78Nvg697gBtt4D5/g6 Fav3cwWMk4ySi5AIi6t7nHGLCHGLfHqLagiLhYuFjIQIq/tzBZuLBQ77TfhO6QGtxvcixgP3Fvld FUtOa0+LUQiLU6pnuosIr4ujpIutCIuWh5aCmAhLiwWJk4uSi5MIi7mmvMDGCGCLBfddixVLTmtP i1EIi1OrZ7qLCK+Lo6SLrQiLloeWgpgISosFiZOLkouTCIu5przAxghgiwUO+ybO9+4Ssrpc9zit uV33NxOo91/4MRX7OPsZBYs7Bfc4+xkFi8wFE8j7CfcABROo9wn2BYvNBfdZixX7N/sZBYs7Bfc3 +xkFi8wFE7D7CfcABROo9wn2BYvNBQ7768737hKyulz3OBOg91/4MRX7OPsZBYs7Bfc4+xkFi8wF E8D7CfcABROg9wn2BYvNBQ7768737hK49zdduRPAuPgxFYtJBROg9wkgBRPA+wn7AAWLSgX3N/cZ BYvbBfs39xkFDn2L/wAmgAD/AX6AALr3EfKIvot3Eu7eON/3at458xPtAPfS+REVqJeZnIukCIuq caFiiwghizIni/s0CIuFi4aLhghLewWLbAXLiwWL/AAFeXsFVoYFi2cF93KLBYuvBViQBXqbBYv4 AAX3a4sFi/wABXl7BVWGBYtnBfduiwWLrwVckAV7mwWL+EoFaosFUXAFE9MA+2KLBYvUBYvbnr2y oQgT7QDYUwUT7IDbkxWLbqJ0qIsIqIuioouoCIundKJuiwhti3V1i24IDoKL/wAmgAD/AX6AALr3 W6dv2Fy6Eu7eON/3b94T5fhj+XsVJVsFE9WHqXOeZIsIIYsyJ4v7NAiLhYuGi4YIS3sFi2wFy4sF i/wABXl7BVaGBYtnBfdyiwWLrwVYkAV6mwWL+AAF9yCLBYu6BRPL+x+LBYvUBYvfob+2nwgT1dVT Ba6lBbiLBYv89gV6ewVWhgWLZwX3d4sFi68FUpAFepsFi/lCBRPldYsFDjP3ZsgBi/iIA4v3oxWL TgX4iIsFi8gF/IiLBQ4z+Hd3pHcSnPhmE2D3jfliFV8/BbH7IAWZiwWw9yAFXtcFE6D7NftSFURe BRNg0l0F9ySuBYubBROg+ySzBRNg99aLFfshYwUToIt7BfchaAXUuQUTYEK4Bfs7RxVi+zoFtPw7 BZmLBbX4OwVh9zoFfYsFDjP4d3ekdxKc+GYTYPeN+WIVXz8FsfsgBZmLBbD3IAVe1wUToPs1+1IV RF4FE2DSXQX3JK4Fi5sFE6D7JLMFE2D31osV+yFjBROgi3sF9yFoBdS5BRNgQrgF+ztHFVj7OgW+ +zsFmYsFu/c7BVv3OgV9iwX7L/vJFUReBdJdBfckrgWLmwX7JLMF99aLFfshYwWLewX3IWgF1LkF QrgF+ztIFWX7IAW3PwW41wVm9yAFfYsFDvvK96T3EwHW9xMD9x/4IxVoi25vi2cIi2iob66LCK6L p6eLrgiLr2+naIsIDiP5CrRnrxKk94nXvBOw+F35MxX7WIsF+zWLQFKL+yAIi/sW1Uz3LYsIkYuR i5GLCIv38QXXiwWL/VkFvIsFE3CL+VQFyZUFE7CLrwUOjfd397UB9yr3tQP3KvgIFYs7y0rbiwjb i8zNi9oIi9tKyzyLCDuLSkuLOwgO/BeX6gH3A8YD1fs4FcvIq8iLxAiLw2yvXIsIZ4tzcYtrCIt/ j3+UfgjLiwWNg4uEi4MIi11vW1dQCLaLBQ77TZfqAfcDxvcjxQPV+zgVy8iryIvECIvDbK9ciwhn i3Nxi2sIi3+Pf5R+CMuLBY2Di4SLgwiLXW9bV1AItosF916LFcvIqsiLxAiLw2yvXIsIZ4tzcYtr CIt/j3+UfgjMiwWNg4uEi4MIi11vW1dQCLaLBQ77Tfj/6QH3Asb3IsYD1PhOFcvIq8iLxAiLw2uv XIsIZ4tzcotrCIt/j3+UfgjMiwWNg4uEi4MIi1xwWlZRCLaLBfddixXLyKvIi8QIi8Nrr1yLCGeL dHKLawiLf49/lH4Iy4sFjYOLhIuDCItccFpWUQi2iwUO+ybO9+4SuPc3Xbmt9zhcuhPQuPgxFYtJ BROw9wkgBRPQ+wn7AAWLSgX3N/cZBYvbBfs39xkF91mLFYtJBRPI9wkgBRPQ+wn7AAWLSgX3OPcZ BYvbBfs49xkFDvgwgvcTAfH3E/di9xP3Y/cTA/c69woVaItub4tnCItnqHCuiwiui6eni64Ii69v p2iLCPfhixVoi25vi2cIi2eocK6LCK6Lp6eLrgiLr2+naIsI9+KLFWiLbm+LZwiLZ6hwrosIroun p4uuCIuvb6doiwgO+RF/r4h295yv0673hK9/dxKp0fcy0/dS0fcy09PR9zLTEysA90j5PxUxi08+ i/sYCIv7GsY/5osI5ovG2Iv3GQiL9xhP2DGLCBNGAPg/fxX8P/0zBceLBfhA+TMFTosFEysA/EFz Fb6LqFGL+wcIi/sHb1BXiwhYi3DGi/cHCIv3BqfGvYsIE5DA+ID7hBUxi08+i/sYCIv7GsY/5osI 5ovG2Iv3GQiL9xhP2DGLCBOQMPgIixUxi08+i/sYCIv7GsY/5osI5ovG2Iv3GQiL9xhP2DGLCBOQ wPwKaBW+i6hQi/sHCIv7B29QV4sIWItwxov3BwiL9wanx72LCBOQMPgIixW+i6hQi/sHCIv7B29Q V4sIWItwxov3BwiL9wanx72LCA4lgrn4qPcGEsfmyPcGOL8T8Peh+T8Va4tycYtsCItrpHKriwiq i6Wki6sIi6txpGyLCBPocftIFYv7CQX7D1ZPSIstCIv7ANtC9xSLCOSLxbaLvQiLrHWfZIsIhYuF i4WKCGQoBYeLiouJiwgyi1m/i+QIi967x+uvCIv3JgVXiwUOM/i291KLdxLz91gTYPP5dBUToPcm +1IFvYsFKvdSBRNgKIsFDjP4tvdSi3cS92j3WBNg98n5dBUToCr7UgW9iwX3JvdSBRNgKIsFDjP4 tvdSWrwS9vewE2D3bfl0FROg+wL7UgXCiwUTYOL3IQUToOP7IQXBiwUTYPsC91IFS4sFDjP438GJ wRLstfdytROw9/35WBWLiYuKi4kIi2B/eG6LCGuLWL9UiwgTcFWLbGaLQgiLiIuIi4cItosFi4+K j4uPCIutmp+giwipi8BXyIsIE7C6i7C0i8wIi5CKkIuQCGKLBQ4z+PTHAfD3wQPw+TAVi08F98GL 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 90fs9wD3KYsIsouvgrB6CJh5BZowBcOLBYv3LgVCokmWUIsI+2SL+x/7H4v7ZAgT34CL+xfN+wj2 Tgixdbp+v4gIjCoFkoySjJKLCKuLnX2LdAiLcXN6YIsIdot4jniQCItnBaWEooifiwjVi7evi8II i7hvplyLCIeLhIuCiggT74CLvQXMi86WzKIIDn+L/wArgAD//9SAALld9zf3N7n3kblgttP3UhL1 5fdLv6PDe78TWaCrixX4l4sFEzmgi/c3BVeLBRNZoHomBX17BfugiwWL96wF9ziLBZl8BZVDBbqL BYv3cAVciwWBQgV9fQX7OIsFi/eRBRNZwPd7iwWZfAWZNgXDiwWL9yYF/HOLBROVoItjBcSFBZx9 BYv8uwV6fQVShgUTWaCLYgUTW6D3z/o5FSr7UgW9iwX3JvdSBSiLBQ5/i/8AK4AA///UgAC5Xfc3 9ze595G5YLbT91JavBL15fdLv6PDe78TWNCrixX4l4sFEzjQi/c3BVeLBRNY0HomBX17BfugiwWL 96wF9ziLBZl8BZVDBbqLBYv3cAVciwWBQgV9fQX7OIsFi/eRBRNY4Pd7iwWZfAWZNgXDiwWL9yYF /HOLBROU0ItjBcSFBZx9BYv8uwV6fQVShgUTWNCLYgUTWdD3c/o5FRNa0PsC+1IFwosFE1nQ4vch BRNa0OP7IQXBiwUTWdD7AvdSBUuLBQ5/i/8AK4AA///UgAC5Xfc39ze595G5YLb3CPAS9eVX8ODw V7+jw3u/E1koq4sV+JeLBRM5KIv3NwVXiwUTWSh6JgV9ewX7oIsFi/esBfc4iwWZfAWVQwW6iwWL 93AFXIsFgUIFfX0F+ziLBYv3kQUTWTD3e4sFmXwFmTYFw4sFi/cmBfxziwUTlSiLYwXEhQWcfQWL /LsFen0FUoYFE1koi2IFE1rI9zf6DBVvi3R1i24Ii2+idaeLCKeLoaGLpwiLqHWhb4sI906LFW+L dHWLbgiLb6J1p4sIp4uhoYunCIuodaFviwgOf4v/ACuAAP//1IAAuV33N/c3ufeRuWC20/dSEvXl 90u/o8N7vxNZoKuLFfiXiwUTOaCL9zcFV4sFE1mgeiYFfXsF+6CLBYv3rAX3OIsFmXwFlUMFuosF i/dwBVyLBYFCBX19Bfs4iwWL95EFE1nA93uLBZl8BZk2BcOLBYv3JgX8c4sFE5Wgi2MFxIUFnH0F i/y7BXp9BVKGBRNZoItiBRNboPcC+jkV9yb7UgW9iwUq91IFKIsFDvuci/8AK4AA/wJIgAC20/dS AfcI5gOuixX3kYsFi7QFS5AFepkFi/i7BZyZBcuRBYuzBfuRiwWLYwXLhQWcfQWL/LsFen0FS4YF i2IF9076ORUq+1IFvYsF9yb3UgUoiwUO+5yL/wArgAD/AkiAALbT91JavBL3COYT2K6LFfeRiwWL tAVLkAV6mQWL+LsFnJkFy5EFi7MF+5GLBYtjBcuFBZx9BYv8uwV6fQVLhgWLYgXp+jkVE+j7AvtS BcKLBRPY4vchBRPo4/shBcGLBRPY+wL3UgVLiwUO+5yL/wArgAD/AkiAALb3CPASnfCI5ojwE8iu ixX3kYsFi7QFS5AFepkFi/i7BZyZBcuRBYuzBfuRiwWLYwXLhQWcfQWL/LsFen0FS4YFi2IFE/St +gwVb4t0dYtuCItvonWniwini6Ghi6cIi6h1oW+LCPdOixVvi3R1i24Ii2+idaeLCKeLoaGLpwiL qHWhb4sIDvuci/8AK4AA/wJIgAC20/dSAfcI5gOuixX3kYsFi7QFS5AFepkFi/i7BZyZBcuRBYuz BfuRiwWLYwXLhQWcfQWL/LsFen0FS4YFi2IFePo5Ffcm+1IFvYsFKvdSBSiLBQ73EYu4/wJFgAD/ ACyAAGC29wXBicES9wDBVfWBtfdytbjBE9XAqIsV92eLBYu0BU+TBXmeBYv4iAX4EfzMBc2LBYv4 8AWdnQXHlAWLswX7ZosFi2MFx4IFnXkFi/xqBRPSwPvp+JQFi6QFE9XA+1CLBRO1wItjBcuFBZ19 BYv8swV5eAVOgwUT1cCLYgX4S/odFYuJi4qLiQiLYH94bosIa4tYv1SLCBPNwFWLbGaLQgiLiIuI i4cItosFi4+Kj4uPCIutmp+giwipi8BXyIsIE9XAuouwtIvMCIuQipCLkAhiiwUO9yN7wPjpwcL3 UgG18/hJ9AP4AflEFTWLQG1PUQhISmgxi/sBCIv7Aa4wz0kIxVPYbeCLCPcIi+/Fw+sIrcWczYvV CIv3AWflSMwIT8VBqTWLCItVFfcVi+T7BIv7TgiL+04y+wX7FYsI+xaLMvcFi/dOCIv3UOT3AvcW iwjH978VKvtSBb2LBfcm91IFKIsFDvcje8D46cHC91JavBK18/hJ9BPc+AH5RBU1i0BtT1EISEpo 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 j4uPCPfYiwWMlouVi5UIi/cPRNX7AYsI+xqLKiSL+ysIi/sn5ij3GIsIyovMn8ezCIvCBTL3WxUT 6/t7iwWR4MTDy4sIzouwX4s6CBPti4aLhYuGCPsb+EMVE/X7AvtSBcKLBRPt4vchBRP14/shBcGL BRPt+wL3UgVLiwUOKoLE92u19yG47vASsOE15nzw4PBi5BPogPhU9RVSZVl3WYsIJotI14v3FAiL jouPi48I99iLBYyWi5WLlQiL9w9E1fsBiwj7GosqJIv7KwiL+yfmKPcYiwjKi8yfx7MIi8IFMvdb FRPkgPt7iwWR4MTDy4sIzouwX4s6CBPogIuGi4WLhggT8wD7V/gWFW+LdHWLbgiLb6J1p4sIp4uh oYunCIuodaFviwj3TosVb4t0dYtuCItvonWniwini6Ghi6cIi6h1oW+LCA4qgsT3a7X3IbjC91KL dxKw4TXm93vkE+34VPUVUmVZd1mLCCaLSNeL9xQIi46Lj4uPCPfYiwWMlouVi5UIi/cPRNX7AYsI +xqLKiSL+ysIi/sn5ij3GIsIyovMn8ezCIvCBTL3WxUT6/t7iwWR4MTDy4sIzouwX4s6CBPti4aL hYuGCPuM+EMVE/X3JvtSBb2LBSr3UgUT7SiLBQ77yIv/ACaAAP8BfIAAqmzOx/dSi3cS898TzPcp +HoV+wdnBROsi2wF0YsFi/v+BXp7BVaGBYtnBfd1iwWLrwVVkAV6mwWL+EEFE8xkiwUTrL33jhUT tCr7UgW9iwX3JvdSBROsKIsFDvvIi/8AJoAA/wF8gACqbM7H91JavBLz3xPM9yn4ehX7B2cFE6yL bAXRiwWL+/4FensFVoYFi2cF93WLBYuvBVWQBXqbBYv4QQUTzGSLBROsYfeOFRO0+wL7UgXCiwUT rOL3IQUTtOP7IQXBiwUTrPsC91IFS4sFDvvIi/8AJoAA/wF8gACqbM7z8BKH8JLfhfAT1Pcp+HoV +wdnBRO0i2wF0YsFi/v+BXp7BVaGBYtnBfd1iwWLrwVVkAV6mwWL+EEFE9RkiwUTuiX3YRVvi3R1 i24Ii2+idaeLCKeLoaGLpwiLqHWhb4sI906LFW+LdHWLbgiLb6J1p4sIp4uhoYunCIuodaFviwgO +8iL/wAmgAD/AXyAAKpszsf3Uot3EvPfE8z3Kfh6FfsHZwUTrItsBdGLBYv7/gV6ewVWhgWLZwX3 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 BXp7gnmLdwiLaqZ0tYsIzIu7wrr3BQgTw4D3XPh6BROLgMWTBROTgIuwBftGiwWLZgXBhwWTewX7 EfvLBfsM98sFl5sFwI8Fi7AF+22LBffJ95MVE5WAKvtSBb2LBfcm91IFE5OAKIsFDnub+HWW90ed upMG+26LB7YK3gu2DAzeDA34iBT44BWsEwBfAgABAAUADgAdACEAOgBJAE0AUgBWAFoAkgCXAJwA 9wEkASwBYwFoAboCCwI2AnQCjgKeArcCwQLGAtgC3QLiAyUDZQN4A4gDmAOfA6cDrwO2A74DxwPN BDIEXQS8BOMFLAVxBa0FyQX1BioGXAaLBrkG5wcEByMHMAdTB3QHhQeiB60HwAfXB+kH/wgRCBcI LAg8CEgIVQhnCHEIgwiSCKIIrQi9CMoI2QjgCOwI+Aj7CQAJBwkNCRcJIQkrCTUJPoYFYgsVbAr3 ThZsCg4VKvtSBb0G9yb3UgUoBg6RBbMLFfsC+1IFwgbi9yHj+yEFwQb7AvdSBUsGDhX3JvtSBb0G KvdSBSgGDoYFZwsoCmMHC/kzFQtnBWwLFYmLiokaYH94bh5rWL9UG1VsZkIfiIuIhxq2Bo+Kj48a rZqfoB6pwFfIG7qwtMwfkIqQkBpiBg6QeZsFC5B6mwUL9yP4AflEFTVAbVFPH0hKaDH7ARr7Aa4w z0keU8XYbeAb9wjvxevDH63FnM3VGvcBZ+VIzB7FT0GpNRtVBPcV5PsE+077TjL7BfsV+xYy9wX3 TvdQ5PcC9xYfCzr34cUVmFEF9yGvBlYrCve2B/BfVwqtBG5ZYntqG1ltrLzUyqb3IbIf+0QHC773 sPk7UAoLWveh+H8V+xsqJvsp+yjtJfca9xru8fco9ygp8fsbH2AE3MU9+xX7FlE+OjtR2fcV9xbE 2NwfC5B6mQUL9aMoCmMHxDoK/AcHQZBUslweXbHVbeob6tWpubEfsrqQw9Qa+AAHnZ3HlAWz+2dj B8eCnnkF+/cH+xxXTPsS+xRYyvccHvf+B52ZySMK+4kHCyr4VPUVZVJZd1kbJkjX9xQfjouPjxr3 2AaMlouVlRr3D0TV+wH7Giok+yv7J+Yo9xjKzJ+zxx7CBzL3WxX7ewbgkcTDyxvOsF86H4aLhYYa C3+rFviX9zdXBnomfXsF+6D3rPc4Bpl1Cn19Bfs495H3e3oK/HNjBkMKBwt49yL4fxX7CGYFbNL7 rAcnu1bhvMCitsceU/corwdcKwr4RmUH+whmBWzS++cHd2JlgWYbSG2t0x/332UHC/ucrhb3kbQG S3sKyyMK+5FjB8s5CksgCgcL+8j3Kfh6YAp6mwX4QWQHCxX3AvtSBcsG9wL3UgVVBjP7ITT3IQVU Bg6FnH0F/LsHen0LhZx9BQtobm9nZ6hwrq6np66vb6doHwsHeT0KC3tWJgoLLon4dRVmB8iF9zz8 RnJEbllwbhkrsQV6e4J5dxpqpnS1zLvC9wW6Hvdc+HrFkwWw+0ZmB8GHk3v7EfvL+wz3y3wKC4l9 JwrIgfdb+/EF+2gHe31HIAr3l7QHR5B7mQX3dQf3ZPfhyJgFs/tgYwfIgJR9+zz7n/st96eVlsQj Cvt8BwsVSVhYSUm+V83Nv7/NzVe+SR8LFfw//TMFyAb4P/kzBU4GC/sH+wdvUFdYcMb3B/cGpwvE OQpSIAoLZQf7CCkK0gsGjYOLhIMaCyYK926vBwtrf49/lH4eCxVS+N3E/N0HC6Wkq6txC2vHnxV3 ucl/0xv3NO7e9wq3fLBuqB9duFWbWKAIL7JbpM4a1L674K6phH2kHpp6miwFv/cvBp5QU5RUG/si Mjz7BSrFZvcDWx/3AVzFeTgaRVVZKl5lk5puHn6cf/cHBVD7RAYL90j5P2EK+D9/Ffw//TMFxwb4 QPkzBU4G/EFzFb6oUUIKxr0f+ID7hGEKC/tQ9+v4aRWaaWSSXxv7BkxXM0i3a+BlH81tr3lXGlxn aVFub5Obbx5/4AVb+xYGfq63g74b9wrQxOiwfalznh9qpmWZaJwIU6ZuoLYauKmmwKOjhH2lHpNE Bbz3BQYLd6kW92+vBluQemIKWyYK92+vB1UsCveuB+9bvzRgWHRmSB5oCgcLt/jfohX3MlMHdfsD e3sFgm1uh28b+zYo9wT3UvdH7PcA9ymyr4J6sB+YeZowBcP3LgaiQkmWUBv7ZPsf+x/7ZPsXzfsI 9k4fC/cRqBb3Z7QGT5N5ngX4iAf4EfzMBc348AadnceUBbP7ZmMHx4KdeQX8agf76fiUBaT7UGMH y4WdfQX8swd5eE6DBWIHCxX7fv0GUX8FYvdYtAdKkIGZ0vdTBfeABtP7U4R9TSAK93e0B0+X+4T5 BgVJBpsiFfL7qQX7Xgbu96kFC/eN+WIVXz+x+yAFmQaw9yBe1wX7NftSWwpHFQv3q/dX+TkV+xxn BXQH7poF+8EHg4FDiAVz92ejB0eNg5QF9+95B/g5hUEKC/si+D21Fb8Hb2FifV8bI0nU9w/3EsjY 4ZybhoKaHzkHgZqahpobraGgq8VVsyv7ICom+ykLBCQoYUJDH0JBZCwlGiOyLNVBHkLU62PtG/Xp sdLTH9fWte7uGvNj7kXSHtRDJrYmGwuJzigK+y/CB5vpnpgF958G/A/82gVi+IL3SVUHefsLgH4F +8IG+BD42AW1/GcHC/sMuBb4FvcnWAaANnx7BftrBvep+CEFsfv9+x+6B5bYmZsF900G+5/8FQVZ Bwu2IvsSP1dOc5OEoh7Q3waWpqOQpBvTn2o8H2sH+1xbL20jGkC8Vtq7wKG2yh4L9xb5XRVLTmtP URpTqme6r6OkrZaHloKYHktuCgvU+E4Vy8iryMQaw2uvXGdzckcKzEUKXHBaVlEetgYL1fs4FcvI q2kKy28KCxVEXtJd9ySuBZsH+ySzBffWFvshYwV7B/chaNS5QrgF+zsLB3p9UiAK94sH79eWvs8f 3cm26PcLGvdm+xj3EfuBHjgL91/4MRX7OPsZBTsH9zhwCgu4+DEVSQf3CSD7CfsABUoH9zf3GQXb B/s39xkFC2gVvqhQQgrHvR8LFfsHKQrR+/4Hej0K93WvB1WQCxUxTz77GPsaxj/m5sbY9xn3GE/Y MR8LeAq2sJarG9WmbUIf+50HensL5/g6Fav3cwWMk4ySkBqre5xxcXx6C/k/FWtycWxrpHKrqkkK pGwfC6snCkMKC/h1FWhvcGdop26urqiorq9upmgfC3cK9yC6+x/UB9+hv7afHgvCRAr7/gd6e1Um CgvIxBrDbK9cZ3NxRwoL2eEay22vWWlydWp5kH2Wfx4LYwbMOQpSIAoHC290dW5vonWnp6Ghp6h1 oW8fCwaHi4eIGkJmXkJ9HmoHDgaJk4uSkxq5przAxh5gBgtFCl1vW1dQHrYGC/sZBcwH+wn3APcJ 9gXNBwv096soCvuLYwbEOgoLl60b4sZG+wf7D0c8KXMLmckjCvuHC5MFsPtFZgfBh5N7C3yVQwW6 93BcBoFCC3wKDiwK+AALmwX34wehC/sOKQrYCwaZfJk2BcP3JguQepkF+LsHnJkLl5vAjwWw+20H C+n7Alxcd2NWHwv3qBX35AehsQsAARYAAAEWAAABUgBwAUsAKwLpAD8CLAA5A1QAHgLAADUAyQAe AaEAaQGhAB8B9AA1A0EAfAEWACcBPwAvARYASwHh/+MCLAAoAiwAXgIsACoCLAAoAiwAGgIsADEC LAAyAiwARgIsACsCLAArAT8AYAE/AEADQQCAA0EAfANBAIEB5gA2A64ATAJ///gCXAAgAngAKgK1 ACACQAAgAhkAGAK2ACoC4gAgAUQAIwG8AAwCYwAgAggAGgNiAB4CyQAaAtsAKgIuABgC2wAnAoYA IAIsADwCVQAPArYAGAJq/+kDoAAAAlj/9wJK//ICSgAtAaUAigHhAAwBpQAtA+gAyQH0AAAAyQAi AfsAKQIbAAgBvgAlAjUAJAHrACUBQQAcAgsAJwI0ABIBGAAiAQr/sQIFABIBGgAaA0sAHgI4AB4C GwAlAicAFwITACQBfgAdAZAAKQFOABgCOQAaAe7/+gMD//0B9wAMAe///gHUAC0B5gBAAfQA2wHm AEADQQBWAVIAcAIsAEACLAAlAKf/XgIs//oCLAAGAfQAPgJeACkAqgArAZMAIgG6ACcA9QAnAPUA LQI+ABwCQwAcAfQAAAH0ABEB9AARARYASwHkABkCTgCWAMkAHwGTAB8BkwAeAboALQPoAGYEyQAe AeYAPAH0AGgB9ADUAfQAawH0AGEB9ABlAfQAbAH0AMQB9ABqAfQAhAH0ALMB9ACFAfQAtgH0AGsD 6AAAA2L/xwF8AB4CCAAKAtsAKgPhACoBlAAbAtUAKwEYACIBGgAEAhsAJQMxACQCYQASAn//+AJ/ //gCf//4An//+AJ///gCf//4AngAKgJAACACQAAgAkAAIAJAACABRAAjAUQAEwFEABIBRAAQAskA GgLbACoC2wAqAtsAKgLbACoC2wAqAiwAPAK2ABgCtgAYArYAGAK2ABgCSv/yAkoALQH7ACkB+wAp AfsAKQH7ACkB+wApAfsAKQG+ACUB6wAlAesAJQHrACUB6wAlARgAIgEY//0BGP/8ARj/+gI4AB4C GwAlAhsAJQIbACUCGwAlAhsAJQGQACkCOQAaAjkAGgI5ABoCOQAaAe///gHUAC0DNgB2A4QAQgNB AHwDhABCA0EAfAK1AA4CLgAjAkr/8gH0ANsBSQAaA0EAfAIQACECI//ZA0EAkgNjADsDYwA7AW8A PgNBAHwCJwAUA2QAGQFvABoBbwAbAe///gABAAAACgAeACwAAURGTFQACAAEAAAAAP//AAEAAAAB a2VybgAIAAAAAQAAAAEABAACAAAAAQAIAAEExgAEAAAAIABKAGAAmgDEAN4A9AEqATwBRgGIAaoB wAH+AgwCVgLEAtIDKAN2A5QD1gPoA/4ECAQSBBwEJgQ4BD4EYAR2BLAABQA1/9sAN//IADj/yAA5 /9sAOv+2AA4ACP9+ADX/kQA2/+kAN//IADj/1gA6/9YAR//tAFX/7QBX/+AAWP/SAFr/6QBt/+0A bv/tAHf/fgAKAA4AJQAkABMAKAATADAAEwA0ABMAN//bADj/7QA6/+0AjQATAI4AEwAGAAgAJQAO ABcAIv/tADQAEwB3ACUAmv/tAAUADgAlACL/7QA3/+0AOv/tAJr/7QANAA3/QgAO/6MAD/9CABv/ 2wAc/9sAIv+fAEL/sQBG/78AUP+/AJD/sQCT/78AlP+/AJr/nwAEAA4AEwA1/+0AOP/tADr/6QAC ACL/2wCa/9sAEAAO/9sAIv/pACT/5AAw/+QANv/bADj/2wA6/+QARv/tAFD/7QBW/+0AWv/kAI3/ 5ACO/+QAk//tAJT/7QCa/+kACAAI/w8ANf+tADb/7QA3/4gAOP+oADr/mgBa/+0Ad/8PAAUADf/E AA4AJQAP/8QAN//tADn/7QAPAA3+/QAO/6MAD/79ABv/2wAc/9sAIv+jADb/7QBC/8gARv/IAFD/ zQBU/+AAkP/IAJP/zQCU/80Amv+jAAMACAATAA4AJQB3ABMAEgAI/9sAG//tABz/7QA1/9sAN//I ADj/1gA6/80AQf/bAEb/2wBQ/9sAVv/bAFr/0gBp/9sAdQAlAHYAJQB3/9sAk//bAJT/2wAbAAgA EwAN/2wADv9+AA//bAAb/9sAHP/bACL/kQA1ABMAQQAlAEL/nwBE/58ARv+fAEr/7QBQ/58AU/+2 AFT/tgBW/5EAWP+2AFr/owBpACUAav/bAGv/2wB3ABMAkP+fAJP/nwCU/58Amv+RAAMAIv/gACv/ 5ACa/+AAFQAIACUADf8iAA7/owAP/yIAG/+aABz/mgAi/7EAMP/tAEL/kQBG/5YASv/kAFD/owBW /78AWv+/AHcAJQCN/+0Ajv/tAJD/kQCT/6MAlP+jAJr/sQATAAgAEwAN/1AADv+2AA//UAAb/6gA HP+oACL/xABC/7sARv+tAEr/7QBQ/7sAU//SAFb/1gBa/+kAdwATAJD/uwCT/7sAlP+7AJr/xAAH AA7/2wAi/+0AJP/tADD/7QCN/+0Ajv/tAJr/7QAQAA3/fgAO/34AD/9+ABv/gwAc/4MAIv/EACT/ 7QBC/58ARv+WAEr/2wBQ/58AVv+7AJD/nwCT/58AlP+fAJr/xAAEACL/fgAr/1kAiv+RAJr/fgAF AAgASgAN/9sADv/tAA//2wB3AEoAAgAN/5EAD/+RAAIADf+IAA//iAACAA3/iAAP/4gAAgAN/3oA D/96AAQAIv9+ACv/WQCK/5EAmv9+AAEADgATAAgACP8PADX/rQA2/+0AN/+IADj/qAA6/5oAWv/t AHf/DwAFAA3/xAAOACUAD//EADf/7QA5/+0ADgAI/34ANf+RADb/6QA3/8gAOP/WADr/1gBH/+0A Vf/tAFf/4ABY/9IAWv/pAG3/7QBu/+0Ad/9+AAUADgAlACL/7QA3/+0AOv/tAJr/7QABACAADgAi ACMAJAAlACcAKAArACwALQAwADEAMgAzADUANgA3ADgAOQA6AEEARwBTAFcAWABaAGkAigCMAI0A mgDTAAAAAAABAAAAAA== --Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_4FEC1A87-97EC-4386-B470-B2809E42D9FE-- From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 15:12:43 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 20:12:43 +0000 Received: from localhost ([127.0.0.1]:38381 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7j8-0006ST-EN for submit@debbugs.gnu.org; Fri, 18 Nov 2022 15:12:42 -0500 Received: from mail-pl1-f175.google.com ([209.85.214.175]:44929) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow7j4-0006SE-KX for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 15:12:41 -0500 Received: by mail-pl1-f175.google.com with SMTP id g10so5487373plo.11 for <59347@debbugs.gnu.org>; Fri, 18 Nov 2022 12:12:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=MVJzObU0TBo6UNLqcJ1lBX9PKkvgNJwb8F8dUbo9hfk=; b=J/s+VXHRc7uAIa0JaGPjNg+XRQBog0Y6Yw91FSrG5U2zZPUV8m9+K8oueKc1+FvpTb fZGQ8IZlKfYJb8I9rC+d3saERzXGlwyRbAj6I4Al/tzPsvWzrxro/dPqcOZyHiWjwdGe no6qjdNbSVoAa1y8+FDuC2U/F/yR9povVjTpKVbUjogSgtFR1RM3QdOFpNJu2hrNwqRf 71dNBB18+nDD5X40adsKVxUDMMJQq2We7cVgYg71ampvVDEYSYFMGfXEWcLEHgj13rDC kLn5zTyY+mqV8IZSNvQ32XLgW5KxkUQVUJbfBiyjMD3U7prdCHHHQOMB4tCfn3lqnZFD MM3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MVJzObU0TBo6UNLqcJ1lBX9PKkvgNJwb8F8dUbo9hfk=; b=zGPGZNI470Cz7mC2xoNXXMMl5gPpS9L+tCuRdyO6ETe8twXrYCTr9mmeaQPSUofqw/ i3N5nckE0dV91cjQxGt06PENKGYEzfFqb9xoaPs5kbQJt2SiabN3g5OAwkSYtf/PVUMJ azM75eMToyYwzJKTSW5aLkbewIdXitEBKNM8TgkUK2W4VD4/sknpCURb81L/K6f122aA 9esE464uhf42m72oQSfDy6dRtWCtjGEEvfPiSSBVXQ5lA0zvn7QvxgSYc6GbMP778pPv h42Pjq89pCj5/fZNkdnrdizmQxTBsI9wnzH/nFF+UxMEkH6Pjgsmf85UHSyuyrC8hMbe Ec2w== X-Gm-Message-State: ANoB5pmSTipScEdTojVGhhp7Re0HU51a747DdkbEIE9FPsw7Z6zwBlie Uw5QfxtVEDGTzql3CJV9DQI= X-Google-Smtp-Source: AA0mqf6gfkcohU6+RvLCNb3TgZhAPVsIdrSUU6DyWQ7B/Uzk9XTfoZ04cPr4QKBqj3BbA5/x+DLUDg== X-Received: by 2002:a17:902:e9c2:b0:187:4920:3a78 with SMTP id 2-20020a170902e9c200b0018749203a78mr1071141plk.88.1668802352718; Fri, 18 Nov 2022 12:12:32 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id x136-20020a62868e000000b00561b53512b0sm3527208pfd.195.2022.11.18.12.12.32 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Nov 2022 12:12:32 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored From: Yuan Fu In-Reply-To: Date: Fri, 18 Nov 2022 12:12:29 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <7B856D61-9CA6-4068-A9DB-FAE31258F114@gmail.com> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83k03s9o0z.fsf@gnu.org> To: Eli Zaretskii X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Stefan Monnier , 59347@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 (-) > On Nov 18, 2022, at 12:00 PM, Yuan Fu wrote: >=20 >=20 >=20 >> On Nov 18, 2022, at 9:21 AM, Eli Zaretskii wrote: >>=20 >>> Cc: 59347@debbugs.gnu.org >>> Date: Fri, 18 Nov 2022 18:54:02 +0200 >>> From: Eli Zaretskii >>>=20 >>>> What should I change in my recipe in order to keep the same default = font >>>> but get the DejaVu Sans that used to get? >>>=20 >>> The default font would be my guess. Try using some other font, not >>> from the fixed-misc family. >>=20 >> I take that back: I tried your recipe, and it works with every font I >> tried except DejaVu Sans. So I guess that font is the culprit, and >> you should find some other font that you like. >>=20 >> Why DejaVu Sans is rejected, I donb't know, but that font has some >> issues that we already discovered in the past, so it could be a good >> idea to get rid of it regardless. >=20 > I might have some more information, and here is a reproduce of what I = see:=20 >=20 > Load these two (open source) fonts in to your machine, and emacs -Q -l = reproduce.el >=20 > The content of reproduce.el is: >=20 > (pop-to-buffer > (let ((font1 "IBM Plex Mono") > (font2 "Charter")) > (with-current-buffer (get-buffer-create "*test*") > (set-face-attribute 'default nil > :font (font-spec :family font1 > :weight 'medium)) > (insert (propertize "Some Text\n" 'face `(:family ,font2))) > (insert (propertize "Some Text" > 'face `(:font ,(font-spec :family font2)))) > (current-buffer)))) >=20 > It inserts two lines of text, both using font2, but the first line = using :family and the second using :font. The one using :family is not = displayed in font2 (it falls back to some other font), but the one using = :font is. >=20 > I think this is because the default font (font1) uses medium weight, = but font2 doesn=E2=80=99t have a medium weight. I tried with different = fonts for font2, and whether that font has a medium weight correlates to = whether the first line of text can be displayed in that font. >=20 > So my guess is that if the face uses the :family attribute, it = inherits the weight from default, and if Emacs cannot find that weight = in that font, it falls back to some other font. >=20 > I don=E2=80=99t know how to =E2=80=9Cfix=E2=80=9D this, but at very = least we should make it easy to figure out why the family attribute = =E2=80=9Cdidn=E2=80=99t work=E2=80=9D. (It=E2=80=99s not unreasonable = for someone to think: I have the font on my machine, the family settings = is set to that font, why is the text not displayed in that font??) >=20 > Personally I think falling back to the same font but different weight = is probably less confusing. >=20 > Yuan >=20 > Basically the culprit in Stefan=E2=80=99s recipe is probably = semicondensed rather than Dejavu. Yuan= From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 15:55:55 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 20:55:55 +0000 Received: from localhost ([127.0.0.1]:38412 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow8Ow-0007Zt-Jq for submit@debbugs.gnu.org; Fri, 18 Nov 2022 15:55:54 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:3844) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow8Ou-0007Zh-5j for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 15:55:53 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id BC2091000EF; Fri, 18 Nov 2022 15:55:46 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 2E3ED1000C3; Fri, 18 Nov 2022 15:55:45 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668804945; bh=MUjZ/4F7I0yCbN0B0fZKuNWL97VxYF7bM7DtTM0VfXs=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=pHlvItaAm1CQUd8JOQmlMKLGf++sUDlRDgcvai2UBBaVyBnhn2fUoAm9Yt4Mr6BZh c8AzKM8Ch1wpdlA1XtdasW0oDxV2CZOofQkitfc7Emgrq9AetKnf679VnVebNMqDB6 mmzuOCg4xvqAdBXxtPRUQa+L8iuQOaKoIuBVo9QcjK66qeKne2gqdN5uuRYHO1HeRX qV6qZSUnZBUFRscvkXOb2AveyPh90nxktnzZK6hvjtLu2JCQZloIYaIAUPrsrsPs7t LVKsv+1sIJzI19j8RUNJTxU8pe0RjPepkPK5+tt8C01uG/vFJ/8dLInalefpBD4i0e x7MwaIzNOBxYw== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id DD73312027C; Fri, 18 Nov 2022 15:55:44 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Stefan Monnier's message of "Fri, 18 Nov 2022 14:46:46 -0500") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> Date: Fri, 18 Nov 2022 15:55:43 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL 0.018 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) Stefan Monnier [2022-11-18 14:46:46] wrote: >> So this recipe is something that stopped working recently? > > I think so, yes (at least a similar setup in my config did). > >> Can you tell when, or bisect? > > Not sure when, yet. Presumably within the last 2 months. > I'll try to bisect. `git bisect` says: 6b1ed2f2c99a1c2da56c5f434570c438cad6576d is the first bad commit commit 6b1ed2f2c99a1c2da56c5f434570c438cad6576d Author: Eli Zaretskii Date: Sat Aug 27 13:13:48 2022 +0300 Fix antialias face attribute when text is scaled This restores the code we had in realize_gui_face before commit bf0d3f7. The problem described in bug#17973, which led to that commit, only happens if one uses a specific (misc-fixed) font family, not for the usual default fonts used by Emacs, and I'm not sure what's described there is a bug at all. At least for the purposes of text-scale-adjust, it makes no sense to ignore the foundry/family/adstyle of the original font, because we _want_ the same (or very similar) font, just of a different size. And likely in other use cases: if the :font attribute of a face specifies some font properties, we want to keep them all, not arbitrarily to ignore some of them. And definitely catering to an obscure use case such as the one cited in bug#17973 is NOT a good reason to make such radical changes in face-realization behavior. So I think backing out that part of commit bf0d3f7 is TRT, and if we decide that this causes bug#17973 in too many situations we care about, I'd rather find a kludge for that specific case than do that for every face realization. * src/xfaces.c (realize_gui_face): Preserve face attributes when text is scaled. This reverts part of the changes installed in commit bf0d3f7. (Bug#37473) src/xfaces.c | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) :-( > The only way I know is to set font-log to nil before you do this, and > then look at the log. But I have never learned anything useful from > that log. :-( > Anyway, can you confirm that using other fonts instead of DejaVu Sans > does work? I just tried with `Noto Sans`, `Verdana`, `STIX`, and `Courier New` and none of them works (although they work with Emacs-28), so no I can't confirm. Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 16:15:38 2022 Received: (at 59347) by debbugs.gnu.org; 18 Nov 2022 21:15:38 +0000 Received: from localhost ([127.0.0.1]:38424 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow8i1-00083E-TO for submit@debbugs.gnu.org; Fri, 18 Nov 2022 16:15:38 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:25864) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ow8i0-000832-LQ for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 16:15:37 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id B3A2C441CFD; Fri, 18 Nov 2022 16:09:48 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 6061F440C3A; Fri, 18 Nov 2022 16:09:47 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668805787; bh=qauwYFFNEpt7tPgdfLlfRb4VwPQRTjGh2SKNvRm+RFA=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=elCcxrziULnSZ1U+mbqz6PasFZs0BhrDSdfJEzgU8PSTQZBE90evU5B7PXh6nzTfJ IhrQJCi4Eyk0e4+lkOTgFWbwEupNe1Myfi3EtfPZzJ3rNkRi2NhGouZqOKmPaAd5+g EhQRhgwPB1naUZ0/SuLM+hrZBtPqtwkKQtMASEGxRjS98WAEeNeqVgL7mkfaixjOid bEhS0RSyv7w6kb7PzeU8xsZX+O+Dfc4OkAfsL3U1A58bNY8l3PHELjgfaAj0CsE9bI j09oKzdr31VZ1wbJHYrl2KPGcWCVr6uqX6YdpN7QihTZr/RqLJFnvV5DWwq6uhNZvF kbJH8dQgeowaA== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 3922A120EF7; Fri, 18 Nov 2022 16:09:47 -0500 (EST) From: Stefan Monnier To: Yuan Fu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <7B856D61-9CA6-4068-A9DB-FAE31258F114@gmail.com> (Yuan Fu's message of "Fri, 18 Nov 2022 12:12:29 -0800") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83k03s9o0z.fsf@gnu.org> <7B856D61-9CA6-4068-A9DB-FAE31258F114@gmail.com> Date: Fri, 18 Nov 2022 16:09:46 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.016 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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: -3.3 (---) >> So my guess is that if the face uses the :family attribute, it >> inherits the weight from default, and if Emacs cannot find that >> weight in that font, it falls back to some other font. But my `font` pattern doesn't specify a "weight". >> Personally I think falling back to the same font but different weight >> is probably less confusing. Ignoring a "bold" setting would probably surprise/disappoint users just as often. > Basically the culprit in Stefan=E2=80=99s recipe is probably semicondensed > rather than Dejavu. Could be, indeed. I don't actually care about the width of the font when I request `DejaVu Sans`. This said, if I use (:family "DejaVu Sans" :width normal) I still don't get `DejaVu Sans` but I get a "normal" (hence wider) misc-fixed instead :-( Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 19:20:45 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 00:20:45 +0000 Received: from localhost ([127.0.0.1]:38517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owBbB-0004D3-8Y for submit@debbugs.gnu.org; Fri, 18 Nov 2022 19:20:45 -0500 Received: from sonic306-22.consmr.mail.ne1.yahoo.com ([66.163.189.84]:41041) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owBb8-0004Cn-CN for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 19:20:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1668817236; bh=Ig7SLMCmGJzM26fCg3mnZId4HZL+d/3C2X6CQyI8164=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=Btj7sItP10+/dAHijQM01HvdbO4fPT2oCV19NderFKCNO0R7Y26nI1+WNlWQif5EJaKgw9hNs/pYwFkzUMfuWcmBHzO+Wq3K0KWSs/8fPRo7UiWhuFLA2JEI9soxLIGyafS2B7yl7zxFKpanxlP9jbOkDm6pbSHQiNlkM1e587xGa7z5vEqHouiNUVfw1BOJyFF2KHXhYr31BEYLQqkwtTVc5nmCAVfy0L8OPI/LjMnC7qRX0N2NDOADYvtPUg8aFOQkaxz62ZDsHIlhzY1MMs0m82Hbjdes3jKCIPln7Sf91cEgk9nZVTmFoGllPu80DrafvDEwyd0kbshidKwzRw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1668817236; bh=Jj21HABkoKfUF0rs1wmC43XbN1oDrUlPhjT/VE5Zv5T=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=iv4Q64uWIVss3SJgEx8MNZnGOeKCAGpWRvAujj189TYI5J0o50oEp6zPOVl7or+QaT7hB+H8TZI3morVszFoJykFK101lUULNVR4oRLnHlCMqbpKX8eLhP8ZYdxXRniJqP/rfdaOFa+DeGAN+Opm1kthrmGo+2l5OGYbp5sFF+x0xA64j/TVBuiuxvCwv99jRcTzKlghhU7IX5PoIM+VUpvB1U4fCWu9YzgT+A+EP5dB3FxxuR/559PitEcSFsXgnY4Zrhamu7KOBNiJIaC80LQaZy74IiDqDkFFw6iSWUG38uDwH8Z57pdLj3gbPfrpjgFVov20QIjRlMH+HU0y/A== X-YMail-OSG: bk1l9zAVM1nZoZxR25kED2TFn96diPdxU_X_IXydK9M83HTpBiQd2sIQPNEljsA Vam4q4hkSUNdGb1XMoOmypNF3rx38LJMKUv6pqmK6WxSjM_Tc2M7JcFOJTHE3WahciNv4AXJ0c5. sjWfJgjW6taRyyoqgrH1PjwxErsKnO8k4rlhESBMfcCr2OEpXFdgtal_DWffNDaPDQMxmIudKXjP rnYODswRHUoEk5.fikd5Dz2fMoSSiComAiYoQ0LesXQW9aErDy_hulv0KUm2rlHSllMBdYraRr38 87K9xpjBJ9iHkwEBzUKNS9WlELrVkvBiwRIVkBDWnVFQxZaQ.hEbHGtV.DqDKZuJimGsmxSKGvn3 ec2cejc3dOovS73ka1FDOzs3y50u_hnwU87zpQJfryPprydtisENnYhgdhhLdfXOBQ4RwWFVHX92 tJmT.iGp32u9._9oFRLbC93j5mw15sNQ_qPuxHSWypSJnjc285kQFbcKI0QmCNTr5V80zHfQrZAp xnzKBZ2Kvk07q539or7LpVg4xsWF5RYGPNxrs5UGeUdXk2WW0ZfoO0ngCVQqJ5_9_8czqVi8McOy 1t0XI4arTKS28.keWz9PJRZBN6xJtU.kKMIxi9hvFWZqdRgjZZyZSktLETLPh7LkJdKxN_BOT6hz MI2yDyIGMlPzsFLE.Cy.reAP8FjMlSPiB54BvLmNkr9BMz0fnjjyKu0G_IJSs0UhawKfNM2t.utk E9mqgeIF3v03pFaGCy7cVwt4lTdPv3.N5fAlwuCeCU9Fvmrzo6bZpr4B0nxpRzY4inC8cWtiGWAK 9fkVtWLb9Vjft.iegN00GyxNIBozJBQ8PontCiNhOxPCn68bUtnE_QA9TcnrAUSGv5E.76B58NNT .TuAfWA7ZrMfi3LqWvLYGARRDtNmkbfD9pI5kHF9C_M3DJZl_c55tmN_9wDJ_38GP6nh4nBwJhry MpiVXlpIyQG0c.V1Up433XD8DRenAmqcfkP39inDZcet6iZlJc7vDjaUoiTv9RJ2pCApBrQcpye4 EhNeozrjaWKCKF9psfltqcXFLZOQFgEW8OnQNU9JK5DhVLPfIIm9PYLSU2gY7BIfHnBWW73IMuxM vls1pnhVdAPMgK3otKn9HEt10RMc7ZSKM8T7EJzm2WCWCvhWPUld2UsPrcMvzSpN7n9Y2W6CbwGW _tp3E0nsfAxAfMuMuwyKTGbTp9jr9.EH7LgsAjKT4_8lAnJkAjar3TwlFqLYryDAw.GTYQxOwufh AsYjmZ_zDZynBH5Jvi5pjqwnojKMusZaUPYtVCAlGUvf.KKdKMfqwhBXLwbSXkeYVXFNboTCQELs UxLZFyAQ2j46VbMX_s4py.50QIQxsKpNEUYTNggJDu1kHdI.ge5ZsiGYhmwZb6MbD55aDQgIb0eO 89IlRcDqrVecPcaDkUzCQ81M81JeJi_5tbWlAQ_XwontMLojDdPcadGKIVPIdd2NYIDUIuN1G2np PGa0_w__f.8fc0iqNtDOGyeUXjnB_EUAyYORzqt5lSJgrhF10OchYPdggBNRMz0BDMMHJixFTQP_ t5O7UZXI.uH_o59kzLhjFMRXvEa9iJ45ReIQadsEESvkMGx0zKWMlrjwRUATlq8.fqojuD3Wr6KW UveKx8lsZvHyC1kRKGY0rGIBaT4dT4pvoTTAphlyzjgOiYYy_F0mFxxYKYgEZbtGFz9ncotZ_WYn 1j1IEYfavGIfs36_Oks8AW.1fVev5bHmepKHSNZckxC0hUVc4RU7AM_hed9LGIEn3b8X4QDIOXPN GHcOc3Fp.lcisdYQjjMDvVY2YEX85JS5VIso270yCD2GC7yppUBRxI40PYD0l2aJw2jV4O6dmIaC 0dMMg3ohTL2gnCAduIjc7t_1DhEd.IqUAqyoAF55s5mh9yzgSwjXNyLwHfBrJw2JdUam_KaT.2Yn np9KPNbMh7vIYQzJBlpmVN7hEapQSplc0YMqJ1Pq0LjrIxWUJ.DW2Y6VWp5MEyuWAlLkjTCB2X8y c_DIt5YWjsAHW.Ga5DtTuOvPwSJFoAVM6.bmayB.LLZnGxB_D5xiymT2n996bRTUrzoUkGC0TOyN .9gijVHcltT_7Jl08C7LvSl9j6LgVWcH8HGUkSbcGTnnMMQU8rBwqn2A2pNkXuDMI3pzeL.CEh6n CmerYxBXbn8pvhV0Eok4nrMCqDJeg.53hE0eCHQAGDEMy9cY7mlubHYfcNLr1GNc3MQO47yyB.zy cM0my0V40vZB3dcAUSlGnVvhfKKMXyFF5yeJAIYS.qtE0RQDK98WzIuqleNCDYqZ182ZE X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.ne1.yahoo.com with HTTP; Sat, 19 Nov 2022 00:20:36 +0000 Received: by hermes--production-sg3-6c8895b545-mvhb5 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 2feda0716d865580547fbc6cde3973f8; Sat, 19 Nov 2022 00:20:34 +0000 (UTC) From: Po Lu To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Stefan Monnier's message of "Thu, 17 Nov 2022 23:57:31 -0500") References: Date: Sat, 19 Nov 2022 08:20:26 +0800 Message-ID: <877czrdcc5.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20863 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 927 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: 59347@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 (-) Stefan Monnier writes: > Package: Emacs > Version: 29.0.50 > > > When I do: > > src/emacs -Q --eval \ > '(progn > (custom-set-faces `(variable-pitch > ((t (:family "DejaVu Sans"))))) > (add-to-list `default-frame-alist > `(font . "-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*")) > (font-lock-mode -1) > (insert (propertize "hello" `face `variable-pitch)))' > > I get "hello" shown in the same font as with the default face > (i.e. "misc-fixed") instead using DejaVu Sans. > > > Stefan > > > In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo > version 1.16.0, Xaw3d scroll bars) of 2022-11-05 built on pastel > Repository revision: 452771086a1638bd11bae3633a3c10d51c83d9f8 What happens if you revert xsettings.c to the state it was on the 1st of October? From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 19:28:36 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 00:28:36 +0000 Received: from localhost ([127.0.0.1]:38529 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owBil-0004Ot-O5 for submit@debbugs.gnu.org; Fri, 18 Nov 2022 19:28:35 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:8222) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owBij-0004Oi-Ls for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 19:28:35 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 18868442281; Fri, 18 Nov 2022 19:28:27 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 6AA2744227F; Fri, 18 Nov 2022 19:28:25 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668817705; bh=xtjdpnSKhl0o0PX+TEhp/6XeT/Llw7IQ+9vQk3jzigc=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=WERawqOWN09SDvh+abLlW8yxg02FXXhsVnqBBoVZQJj7LDPcZDwB2NeM2igRDq9Px 8qVOIbZtOuJY9xEByqqB0l1V/H+29at2eA8ROdG6KXatuKguane4Eu1LfOaQvLwTrq 9lqtIZ4TcEcpPi3pso9xZSpUZw4ZwSj+lw/gK//6GrmmyvQyatJBJaE/sQXvz0m4t/ 78MT1rTgQFIkLvzLVPKfQwJp494l9DaHxQ2Upn5cYkK0U9f5xSJc9Zbv2/6zunpEGj mrLfFFX1EqXZtyYoHjFQK1OZfcVeYck+E9a9/vQcVZybkVs3zTJgxDKA/SyPTLA9tM xXVUefpR25ZSA== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 4467D120BB8; Fri, 18 Nov 2022 19:28:25 -0500 (EST) From: Stefan Monnier To: Po Lu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <877czrdcc5.fsf@yahoo.com> (Po Lu's message of "Sat, 19 Nov 2022 08:20:26 +0800") Message-ID: References: <877czrdcc5.fsf@yahoo.com> Date: Fri, 18 Nov 2022 19:28:24 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.015 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > What happens if you revert xsettings.c to the state it was on the 1st of > October? I used `master` and then git checkout 568920a5b703e80c43e1b6f31778ea5776218a1e -- src/xsettings.c But the result behaves like `master` w.r.t to this problem (it does fix the minibuffer-only frame's font bug#59371, OTOH). Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 18 23:37:26 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 04:37:26 +0000 Received: from localhost ([127.0.0.1]:38672 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owFba-00024u-7y for submit@debbugs.gnu.org; Fri, 18 Nov 2022 23:37:26 -0500 Received: from sonic316-22.consmr.mail.ne1.yahoo.com ([66.163.187.148]:40991) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owFbY-00024e-5u for 59347@debbugs.gnu.org; Fri, 18 Nov 2022 23:37:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1668832638; bh=kb3AhaTOLhX3sQeyS6PAW2wnT7zY8CKfchdhim9/ksQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=RFQm/kWzjO3JWLBpJYN98kYPKyQKVBHx3Rx9/WaqP9DQp3TziI3k60FueOW8HOrzcI+5i6D6U0srZWyn+RAK0SSNqi8CdofLWLQMg1YCNperfL44eIXf2djP3JwSZ0jsNgEjhd21+FfATcIoQO50xudSOyZcm4JIoCmkY1UCwJFvMLITmE/cfEzGAK6WQkrmxwbNi5s6z8L6WMBeZdAP6vvhcSz+XrnTSSNopf3DrrgAmGsxfQXDsJHxV2lrWPxWgSrioyYz8t/2Ye7PaZAie5XYEyME+RnP3XYcjfL0C09l7R95k7FRRloSegdzo+R7Q8yK1zL0UhQ5a2RoMJagig== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1668832638; bh=Um04X0LziAkcx4dr41UQsNwz0CL7AUnGGHwtZROYnhv=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=VX9dN110mmAyGa+/MNhkGJgP9taRVDCr5AaNWz3ALvlb0KApSvjEiENUULia0NY6OPCYEJYrptMlLVRRwEeN3CQCNs3JYn1HsfRyHOz5Jk6cJlyCV0yyXEga7lDILNGmo4A1Ur1rU+vR6Os/l7R8JS3JPTFEgh4wf1y5UzofdSVR/NQClg+OPGMH/oL4KSemjAVHVXCmP6/9/n7hu2mz4+2IbxbLqqfpIcMKivVdky+bEH2SCb4ug0t3egPj8l5k5XBDIyq1yaKd6Y67Nu9cevlTRMeJ0Sczk16kr8KChzmvs8KCEASSllxnSRMMsqYTpHCMCU8nif1eFdE32wLuHg== X-YMail-OSG: cHho_6EVM1lgORg3IguSx2om8dDB6d7loVjU.Ocvh8UKXG9t7Ol2znYl4tESbaI h8CR_GzONX.QNh_qPoUjxlnl82UlZTD98xS8uOD5D8MWso7_dyokLVXgbp.HUmfSHDogo9mRbWna Rys6qDtw4QAq7Fk18ts7YYDYqK5ua8suGKgTUkiE3BZB9_Ic8Dmc9Kg4n5YhQMRnkhFk0FPc09bp tTqXJRE07CIpM8RePTmwd72HNlHn5vv7ZYPl5w5AvFbN.5BS1B8Ti19rSpDscjpqPo4B5TI0iWZu pBsyYITsTGhZ4Dbv7TtPTNVI4LA0yoTCcJovGM8NLb9Xmxp12hfc_PTpNPm8h9vVeSalCeC7jChE VpVx79eg0ZIadKPusilrri0qwxTmtgmJaTBXTtGmvQIQ2Cip0MTDl2jcMRJDaMkskHAIcX52P2oF EDJqDo5QyGKG5lHtZouqBdURNcYiTxX7RXooxJtM1Gv2YMfLyhX3Cvob5VOgZF771Q5hyjEFO0Iy 3nm6H1X3B_6IzZMjXSEob4t_lhjym5XoBMHTGSan8bFDW9DHBPk4wfzPY6YRGZ_zeBADkQ6_mpop NSgRb_YbgTtb5CN_DuNgJgd1my.xlsXeDLWuqWXKYw.RmbBoEQHQMmYk1pB2UJdl8Ac.i0Niq6Jw uUdF1j1WUqE7jBse8zICwLFwQvrUQ01u.4M8FDpkSGN1X18OC.mpAsBqBF4krNy0nLV0Vibro0DN m83koyy02Ws_BngKLTnCaxcCNpegTgQM401rzyxK.JeB7qPflvVHFBBLrrvUtZSVOXAQANLGZnpT Kg3wJW8W8Ghsaft.UcsYOOckx6b7zzlUeF12kcgkVQTuHMPAwB9cBvjSb_kOasx_pNihmG_VfWD_ TajGxeKkDy0raCBUD0fM8fWCBJnfUcfKTf4kNTtrCJ3_sH4XVAS7ZvJQQ3tu173ZJIlVOaAQOhnX o_ZXdSsBUUOliezQ.U1CnLG_YUmFL5IQ7w5QMxPbhIfoNVqh178Dj_mBa7Izx698_uk52tBxzFJE 2NYaI5Moi8hbGxvRxbrZfEbnTDQmRJ1.CDTKMfIxcoF6nyBv1cFeMa7I_h9v1RppWR90lrLrC5qg GMOgcnNvArfJjwVffOnPs3KxxPM5BUreVqFZW92JvgmlPNIbKc9EsgsTFqK3vkmugTve6pijrtqF 2gYJt8LHFrK1dAARmdD3g6Mwcurxp763LPdpYvz0CeAH7FpWiB2LMiPaTgD50VifhGnqX4Qy5CX_ _pnUNroHHaoWPmnPGAwKn0C2l8kXB2tliOXy7cEW0izpMTVD0S9RCO7bGNZzWbfugcQ_d9IlZ2zn SvoF8EEJxMKkNK.b04IzvJsaFlap_52J3zMiQ3MF3Wg9ar6G0U3uxMegZuhx1vvf5kcYaSV7IYJp NMGd9arIEG_VumyrIvYlQvlm02CnWzerHZaaifTjUzQFDWrqKZbrBbciPXKadMt0xZeC5FtwbJhG JolIgYDuEk0o9OslLvV1k2Xo0RA20eZftNgvDLyTgcBmvVW1XhP4.txK.Pkucc56H9fSKMxzONJp Z_8txgdVJ7H.0EkIXrbOQhVUumtA5Zvo7RDmKqAKDnEZmfqJHURbdS50PIJWOQlpu03n7.iXN9Xj jNZ0E5_yjnuHrYx54RIF8zTSTsWJQMUixViYU8yMe9GJEOy.MsciT2FiX8I1TTL0y.O0z4B8AZ6V 1VLgbAlx2VZqRV0z8fcSgfH00dtbSbt5OGUAxdqaqTUkoMMNvyM0hwBlWMwfpTWHyYUCNqVd8C1S wgxsKtVyXToc4mzZJbCvARp.IFJOnfEIop3N4t519RR7XhLimpzdbaOZhIL8OK6uDGQMnGbhSn2y bRHoLhz07HeNRsr1qPgrSHlTqKhHqiWEncHt5Bi_tzLugdsc7o8f7JHaxYVIJhdZZOutgUVFoK0K .yRLJtvwdeTJmDlERK50l32T2Vn.GrG0lKCzu1PrsOw6xLAxB4cijsNnf17omQgvaRvmOcvO64pY bKMmkLueeO05Jm09z2JQGqxipTdg6De_4nXUNAkcWBTMgoHCCqSsphPrbuEH7_v0BF6COf59EoVo xKm.GV7AsXr3bqSMMLINmJ3Vzh.oo_6QJ8Mb10nByqllJlY2pr8_f08RDHIOoZOsJ319yOqJUObr hz_Cjjf8bBedjWT1w5MGJamTTQXgLZ04PEb.XRHK5xNLcKZikT2haJh3xa2Sn6nH_xxnjsSp4jCO 5i1SJ_kmoK0w0QRdHeaXQgtgwNyJw9Fo2DxluECip5Gwd6l_z4NQmlebtgDgxWgIoIsYdSQ-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic316.consmr.mail.ne1.yahoo.com with HTTP; Sat, 19 Nov 2022 04:37:18 +0000 Received: by hermes--production-sg3-6c8895b545-26lc9 (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 9aef487afd309932e119639bda998c4b; Sat, 19 Nov 2022 04:37:14 +0000 (UTC) From: Po Lu To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Stefan Monnier's message of "Fri, 18 Nov 2022 19:28:24 -0500") References: <877czrdcc5.fsf@yahoo.com> Date: Sat, 19 Nov 2022 12:37:06 +0800 Message-ID: <87r0xzblvx.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20863 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 448 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: 59347@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 (-) Stefan Monnier writes: >> What happens if you revert xsettings.c to the state it was on the 1st of >> October? > > I used `master` and then > > git checkout 568920a5b703e80c43e1b6f31778ea5776218a1e -- src/xsettings.c > > But the result behaves like `master` w.r.t to this problem (it does fix > the minibuffer-only frame's font bug#59371, OTOH). > > > Stefan Thanks. I should have a fix installed shortly. From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 01:01:40 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 06:01:40 +0000 Received: from localhost ([127.0.0.1]:38801 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owGv6-0004Lm-4L for submit@debbugs.gnu.org; Sat, 19 Nov 2022 01:01:40 -0500 Received: from sonic312-25.consmr.mail.ne1.yahoo.com ([66.163.191.206]:39248) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owGv2-0004LO-FV for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 01:01:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1668837690; bh=H7Lmf79QjUSFMHd9SbHR0VXnqD/HdWdmH1TxoNit6Zs=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=Oz9UvQXpqeEXrUscrAs5/A4mc2mPidqce6fYm50bnpHOGgU8jzMWEVsnnKCHALkYLX+yKmIlcfgHzy7hjFwyXLwPknn4uKouBy91dKE1pdvhylTmnXvjyB3SCupqPUVYdiZts172OtSjfQ8KkdUCT6hUwwuzytquMbdYgMGm6eo33C9Vu3SWJEC29lwvoI/bXPZolfyOxW4dQqwnCajZWfQUpmWHxc8H8eExXolAG93Cc1RnrVExEUVFVYY91EdZx1h1ZK3amXDG19NGun70rsheYvwLL+8HrevFhg0/yQRuYgLwvaASv1f1kAtzd7YMVb8K+6CYzODe9blyLxG+bw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1668837690; bh=VBBAENTkljBXAidQ4I8cIzA8k3GTFbNk1Tj580xrgqf=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=kIjes73/3VrQdmMgy4kkoCRBBtH7YqIYyo4LZqpZU4efHBoFsMtkEAXLWSkN5HAZPryJKyR83jEnqH34lsw9XBqRk7Gx3VPMe+BCTlHhdBe9rfCPynOaO3v02g/DmNS+J3kEna1kQcA2hei47YU/cX7o4nFSx4uYzwluT8Nob4PfyfMosEQfs1aLBM1lsv6kcupLA6FVDwH16npSgMdlDsJhBj9V/g5EjLNIDKsys3Kli/wODVBOgq3zVaIdyc4CApkRb4sHJo+W6iBnDLmrk6Jir2ZniH1L+z/Bfd/vKtVU3yWYodpjC8MulokSCVEUpt2iYl7It76KTsYbcfT1lw== X-YMail-OSG: re_X2doVM1mXYgwcYknTz6jO.KdiyzCwOnx3EFu24CCyaDXoWMoiZRfWWbWADth j4q7Jb.rWBEFcM0b7aAH_PK46oCsDejh1h8khNWp1YijEakSypvvNykxj5W5KKb_WKQVgqa4gfZG YpPO1vg9Ihpuhh3VlxUG7BWjDR6FBoz_GcdltofSJXccVnbEy7l3xNwwoQWqiYjbu4rY43NixC62 MlMWp5Png6LWFaiJ.bexLxSp8y.2.rMRp5Mg76YwPtzXF2v5C2Gbqvip_yDt.h11Qj1jp2_wqRCI r_B60Xrsv4F8PphOefyGk8JhQovNQ68SIu5wWyJXwu2DmrvIFVc1foYUWUFqHDwjNEVVH2M.IEq0 33CSKUsZKkx_UJrjCosHB4OIgUhW0N6GyhkjJobRHM6mCFILA7vLxZD6c.3Q6d95Nn7Q4xpWHyre W9o89z_woIlt1AbFyeHfSwBuwjjnVw1L7WL9Miu1xS5wc1ikRRESvQRC2hvDv5SQQvnuZFfa1OsY NWcKtkZ0ARwBDNTjAngxD0TxPRiwkBB4XNChgFfmiUGSBLSNJvufx1d8YwWXRoPLJrEMgLxijSDW lKyQQan1ZAnedUbcpInEisAKAH8rq.vvLy288QR0WPYK4xt8Za1GyiZgY.jeczNXJMbUxsQGAI0b w9nBQKbS.pS.ub8v4Z.7LV7IFLrEIPpICdyevOi7hDwAU1DCCtim.cRMGQ6lLjBI3wzGWHwBgzXr qbhTcJuqm_ql4OtV7Kw5uYK1RmMdpofLtezJvZMNtUALPABG6BaeGrw1yfhKDooNjAOylUwdN.Sa H9F7lv9ACDQPdx0Ebr.s35Oaf1oier4IGH5ax43OPyLbj55MHCCFThFf7MOEzWyZ34ts94S.Yrwr CRiJqeUuxKuDjD3upZCLu3o.KHtayCRfFywhKQ41bfYA76J6kogfz7zwK12txsXSjC0r1ytmsES2 dkCktNsC0G2GGJzVwqwGokB.Gy4cU.NGXxKxmd9oSiEztVMWks9VigPfBTgllbCz074.Hg94RmnD 0nTCdMeYD_x5W3J.JheCSInB7loHoe4mEeRwXgF2QTTmIBWgWkEibgMIssM6VO_RbnCsfSGFtb4i IdQMmLhyrJ0d2Cw9Kn5gazlyV1Het1LBx0Mv4G9TbhEmDViA.XwhAy0V4mVjc6jJnUfLIWDbGLtY 6X9B3rJVMsVE8eAwZGXpHQuMgb3xrvV2OW8ea6SGA_oNftEPxmql9ynKTcnhrCPPJKLhslm3Ti9z 7PdwSkppW_P9wPZWTcS3ZkMJO3dsoJ9EEeW_jJkRrFkdQRYpmrWeSbX6qBUi.PM0dsmDxr8v6Yvy 5pEVUc9cYxw4c5amxa58wID8yQiY6.X8Xu6TeiV9tj9KMnYHzktKDwXeF.Ta_.Ntyxcj81WwTNFD a1NTi1pwOccMdgL_uZMnyk0l.qt0bHVE4Xh3n2qkkCTMFZ0dO7tsL0YChzu25yGe54O0MB6F5AWG AJuBAxVd5G6zRufHwyl3j4eFjy.vVWcedBU3XN0chDTBSkZUKsX5H.g_J2CytJ_OrilrcWZmexal m3TDv0w0au2simRawSpbSNkDoOSmpGxpbVydORWnFyy8OyX8yHbFVbwsnAE3vusXzpw00IZwEsbm g_7fIrU4QDdHdFpxNcqlduGq4ligRSZci0_nBkf_mdAQrHIJzDFZTi4xpWsoTeto9jCNv57h6ImS y0Ybybq5xFbEAg1nYMHqQ9JkP.MsBh2VKSKktQzhbwYTnmgCjTeeyJaKZzNXuuHPawVQfqkiPj49 geFeVIWz_s__h3HhhHJDCMzL3DSHzXQLpMn7jsbhixQGdivkgtI0KekFXtyJB2T8GdukebErauCR lnQnsP9G1VVHdaOQO1TpJO8i3KBwtT8pUmd3yecv67zKjjRkChVJgj9RpgjxjGJBPSVddV_jVpiz Tf4XHP83tmZVB1.4rb7QkM6CABqFrdXlLBaLPomz2GZFrllye3baq6wh3po.zMamtws2K5it924J 0UyMjfYUUn6bMl0sosyxOA618zHg1poQkTwXobsTtjxDP0ZwWxIdFCFM8IbBYZTPA9HG.Nh1Cmla 4xAEHg85I4q.1fi6FUCFnEzlutN399uLLGc18zXskadKUuYjy1.ApSoEj5ExHYPRs2He2kvHVz80 OPQaWW0fVL.FBBzn3tARXO06vorDmBByjS.1CoNgWB9JMaYWjONLcHFLkNQaPtPBcBkXGyNXu_Mv 67dEynBlgkBDmeMt0NCxNjjvO8djf3Dy7PyG.u2I9tBsviUo50eLWigWMsmM5Xjr2KHOE X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic312.consmr.mail.ne1.yahoo.com with HTTP; Sat, 19 Nov 2022 06:01:30 +0000 Received: by hermes--production-sg3-6c8895b545-lgf2t (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID aa8d2cb9ec3e8bf65c536bea376e234b; Sat, 19 Nov 2022 06:01:23 +0000 (UTC) From: Po Lu To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <87r0xzblvx.fsf@yahoo.com> (Po Lu's message of "Sat, 19 Nov 2022 12:37:06 +0800") References: <877czrdcc5.fsf@yahoo.com> <87r0xzblvx.fsf@yahoo.com> Date: Sat, 19 Nov 2022 14:01:15 +0800 Message-ID: <87cz9jbhzo.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20863 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 550 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: 59347@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 (-) Po Lu writes: > Stefan Monnier writes: > >>> What happens if you revert xsettings.c to the state it was on the 1st of >>> October? >> >> I used `master` and then >> >> git checkout 568920a5b703e80c43e1b6f31778ea5776218a1e -- src/xsettings.c >> >> But the result behaves like `master` w.r.t to this problem (it does fix >> the minibuffer-only frame's font bug#59371, OTOH). >> >> >> Stefan > > Thanks. I should have a fix installed shortly. Would you please see whether or not it worked? From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 02:16:02 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 07:16:02 +0000 Received: from localhost ([127.0.0.1]:38872 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owI54-0006MP-0Z for submit@debbugs.gnu.org; Sat, 19 Nov 2022 02:16:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owI4z-0006M6-PP for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 02:16:01 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owI4s-0008MM-No; Sat, 19 Nov 2022 02:15:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=gEe1bZneQDEwJhciFd2XpCDwqNvnIyKNym3g+AHCO7A=; b=V/dGhI2UtqU+ AY+LjjylqiQVvNHEHEuvGOjStVOOQLmtrd53F4SBbuKoZ4p5addwj8rWpO2tNzUkRazYoxoP5RMDg Bu3HhX0/TREPHA9npNvty8HV6kC14CWVWQRvdf/1Jxfh4hbwi7DjCYDRcxgRygJL/WbrPcRgeysfp h1qUiX/Fv17mdVAcbdRELjQo3zAhrUImjcSOkacsBeZZIbfwe6ks04WdMK5W8ctbELo3vCu8mQMJU DeUWYb/PnUNdS1yXnH6VdaKSs4SH1ts0EUK8edLsnc/oBRuJHutDqwhzHXXvHE6ju0zGItsLi0Zeg hNzJvOZ7cWTaEzQTnhZ1/g==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owI4p-0006Mf-J6; Sat, 19 Nov 2022 02:15:48 -0500 Date: Sat, 19 Nov 2022 09:15:53 +0200 Message-Id: <83cz9j9zyu.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Fri, 18 Nov 2022 15:55:43 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: 59347@debbugs.gnu.org > Date: Fri, 18 Nov 2022 15:55:43 -0500 > > `git bisect` says: > > 6b1ed2f2c99a1c2da56c5f434570c438cad6576d is the first bad commit > commit 6b1ed2f2c99a1c2da56c5f434570c438cad6576d > Author: Eli Zaretskii > Date: Sat Aug 27 13:13:48 2022 +0300 > > Fix antialias face attribute when text is scaled Then Emacs does here what we intended it to do: it tries to match the variable-pitch font to the attributes of the default font. And DejaVu Sans fails that test on your system, because DejaVu Sans doesn't have a variant with the font attributes that are present in misc-fixed font you use as the default face's font. From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 02:21:55 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 07:21:55 +0000 Received: from localhost ([127.0.0.1]:38877 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owIAl-0006V4-04 for submit@debbugs.gnu.org; Sat, 19 Nov 2022 02:21:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46760) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owIAi-0006Ur-AL for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 02:21:53 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owIAc-0001By-RH; Sat, 19 Nov 2022 02:21:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=x13O+Stg9QLLgkFnRFOTJyKNAzRJvqwVrWDdWVi5vqw=; b=U+Pcv4P93Ze16f78O1JK evGydsQQ6CapVZZ79APMuUZiFeRfa2O3Hq2o2qv0gtWd0u13VErLex/Ko5C7kDjrgRJE3Vy0xZuxx y72TTH6yHtUbpqpX1MVX6qa1+/tDMdkQaNCC3h9S+DVyZOd6IEMNzHnIlynKjdV3GsaPWHcC1sRk1 qz9z/LYoif40zjkzhV3EG8/6+vIGVQdsgwAdYSRo1zRONOyDXkpbD8b8nbjmLR+ajaRQ/uQDp0wEg z5Dl7OXHtn0uLdmcTPprXpzZv9hmVraPSk1VVCnzj4j68cbTO4hmHZLCHtfalMGY2pLpp254oTqj0 U7LomI5THggtPQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owIAc-0006FC-Ak; Sat, 19 Nov 2022 02:21:46 -0500 Date: Sat, 19 Nov 2022 09:21:52 +0200 Message-Id: <83bkp39zov.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Fri, 18 Nov 2022 16:09:46 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83k03s9o0z.fsf@gnu.org> <7B856D61-9CA6-4068-A9DB-FAE31258F114@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: casouri@gmail.com, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: Eli Zaretskii , 59347@debbugs.gnu.org > Date: Fri, 18 Nov 2022 16:09:46 -0500 > > >> So my guess is that if the face uses the :family attribute, it > >> inherits the weight from default, and if Emacs cannot find that > >> weight in that font, it falls back to some other font. > > But my `font` pattern doesn't specify a "weight". Then it's some other attribute. > >> Personally I think falling back to the same font but different weight > >> is probably less confusing. > > Ignoring a "bold" setting would probably surprise/disappoint users just > as often. Exactly. > > Basically the culprit in Stefan’s recipe is probably semicondensed > > rather than Dejavu. > > Could be, indeed. I don't actually care about the width of the font > when I request `DejaVu Sans`. This said, if I use > > (:family "DejaVu Sans" :width normal) > > I still don't get `DejaVu Sans` but I get a "normal" (hence wider) > misc-fixed instead :-( The basic problem here is that we don't know which attributes to ignore and which to enforce, first, because different users have different preferences and expectations, and second, because the same font selection routines are involved in many different use cases. All the attempts to resolve these issues till now boiled down to arbitrarily ignoring some or even all attributes of the font whose face is being modified by setting a different font, and that can never be TRT. If we can find a reasonable way to decide which attributes of a font are important and which aren't, or maybe lax some of the criteria for matching fonts to a font spec, that could solve at least some of the problems. From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 09:18:09 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 14:18:09 +0000 Received: from localhost ([127.0.0.1]:39364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owOfY-0006sC-QZ for submit@debbugs.gnu.org; Sat, 19 Nov 2022 09:18:09 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:37676) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owOfW-0006ri-UO for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 09:18:07 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A6A16440C48; Sat, 19 Nov 2022 09:18:01 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 8A3A3440B7A; Sat, 19 Nov 2022 09:18:00 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668867480; bh=MHGQ2u2ByT3pNjsoGbgXN00mvqqxmg13vkwuYc0reI8=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=lSrcnlRN+suZfCANwRlH/DcJ9OuyIJ6XYmrbs2pmHM6PcirMxb78KtCedPvzERFZN /33WaXensFl2IU+HAzbBBuKClvL3HUaaM+cHeUmST1gjtp0zGr4s5QN5wsKZn5JJol GQHXa6HUK/ncrbMOnmnaeHTrcuTY9kyIpvjr+EkzRQLm7jaiLbMj0eq0MdKB91qkf4 hJQDTQkEH88h5otLPZ2PuWKIsTXPhP5XnCBls39JCPY81zaaykEESf3FrmMX4oKoi0 hw8BNRtWelYDIl3EpMlita5eoKRqhnrJpafggwnd0IRa1HreG2PEYlbtOstvUe6J5a ihmMB2f/eFQTg== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 69030120A6F; Sat, 19 Nov 2022 09:18:00 -0500 (EST) From: Stefan Monnier To: Po Lu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <87cz9jbhzo.fsf@yahoo.com> (Po Lu's message of "Sat, 19 Nov 2022 14:01:15 +0800") Message-ID: References: <877czrdcc5.fsf@yahoo.com> <87r0xzblvx.fsf@yahoo.com> <87cz9jbhzo.fsf@yahoo.com> Date: Sat, 19 Nov 2022 09:17:59 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.015 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) Po Lu [2022-11-19 14:01:15] wrote: > Would you please see whether or not it worked? No, the `:family` setting is still ignored in my recipe. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 09:55:46 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 14:55:46 +0000 Received: from localhost ([127.0.0.1]:40700 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owPFy-00086z-5L for submit@debbugs.gnu.org; Sat, 19 Nov 2022 09:55:46 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23585) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owPFs-00080d-DU for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 09:55:44 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id ED1EA1000F2; Sat, 19 Nov 2022 09:55:34 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 300AF100099; Sat, 19 Nov 2022 09:55:33 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668869733; bh=BR4kn0jrN60aVCkZojlJg9FAxQ5mLehkXSC5OarQAKQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=f6oZOW9TX6i10qGBY0BuBgwAtZdrDFg5dEpcHlli68vLEqwR4MrYcqmuCQERZtLGv F3j3SjcOqW2bZErpAB8B29ivJ4dqybmRX678HngwxIPW+VAGknCghKWP5+csGIzVvP hVbH7rvRn5/0AFpI/yFK19ivKoQOdZLnIirY/g+ha550TSVhJUAq7YFcl+IRLCJAU0 IC6WYF95OhQ9/SmZ3AIuNs/++0LRCxp+Sz/ryjbH/7xdjwBWa46e17WuoVogZxzaIB XTne86GBReRnWPsd7VIMKoI/lCtovL1fTjarVAAlQMfE2Es5IHm9Xo1FYBJS7x1PUC bamWbcU4etq1A== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E6DC4120415; Sat, 19 Nov 2022 09:55:32 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83cz9j9zyu.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 19 Nov 2022 09:15:53 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> Date: Sat, 19 Nov 2022 09:55:29 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.020 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > Then Emacs does here what we intended it to do: it tries to match the > variable-pitch font to the attributes of the default font. And DejaVu > Sans fails that test on your system, because DejaVu Sans doesn't have > a variant with the font attributes that are present in misc-fixed font > you use as the default face's font. Then maybe the problem is the following: I do not consider `-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*` to include "please use non-anti-aliased fonts", contrary to the `-fn monospace:antialias=0` of bug#37473? I'd actually be happier if Emacs could find an anti-aliased version of misc-fixed :-) The only part I could see that "collides" with "DejaVu Sans" is the "semicondensed" part, but if I change my recipe to add `:width normal`, I *still* don't get to see my variable-pitch text in DejaVu Sans. Oh wait... I can recover the behavior I want by selecting :family "DejaVu Sans" :foundry "PfEd" so the problem is the foundry info. Changing the recipe to use -*-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* doesn't help, OTOH (IOW Emacs insists on preserving the foundry even if I did not explicitly request any particular foundry). Does it make sense to preserve the `:foundry` attribute when the `:family` is different? I always thought of `:foundry` as a weird detail which only makes sense when selecting a specific implementation of a given `:family`. In my experience the foundry is very rarely used/exposed (e.g., I had no idea what was the foundry to use for `DejaVu Sans` and I have no idea what "PfEd" means (but my web search suggests it's not really a "foundry")), and it's rare to have several foundries for the same font family. Is there some way to say `:foundry any` in order to override the default's foundry but without having to choose a particular foundry? Stefan PS: Things become really weird with: src/emacs -Q --eval '(progn (custom-set-faces `(variable-pitch ((t (:family "DejaVu Sans" :foundry "*"))))) (add-to-list `default-frame-alist `(font . "-*-fixed-*-*-semicondensed-*-13-*-*-*-*-*-*-*")) (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch) " world"))' where "hello" ends up with the following font: ftcrhb:-urw-Century Schoolbook L-medium-normal-normal-*-13-*-*-*-*-0-iso10646-1 From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 10:32:01 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 15:32:02 +0000 Received: from localhost ([127.0.0.1]:40970 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owPp3-0000f1-9j for submit@debbugs.gnu.org; Sat, 19 Nov 2022 10:32:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33106) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owPoz-0000ei-Av for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 10:31:59 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owPot-0005BG-RI; Sat, 19 Nov 2022 10:31:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=u3N7WX9zUGdtllOP74uBBA+ud2ZEG4o7O98ecKu2zP4=; b=qN9MQK5OY480 kBxmiY4Gx55tWQttpW0FmM7eh4bGOeMrMGZGFnbWj3v/rAcej+rpQwHPc2PExqd7yQYxrVEiY9iAW qfOcC26TXVwOE2JLeLrwH5/Mqx4dplmH+uzRRIhX6wKx/4JIdH9UDu0BPK/1kbcVTLSVHI3sj6fjP 0EY8W2sHFNqlJ/X30NuxABCc0D0jPvqE7UMsj5fgG6ZoQ5kNhBmx1OJZKP7pa2UsKm12NjnXjiybi l8EDOcPvmjCb/ckLuSpnPUEAXTKFCrH/1NPeJS4K0mZn0/zThtdK/35n5RxL66f8J0d6sc2y3iCT7 Gt+MTma3WO5qnO45i4MB/w==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owPot-0002TV-3g; Sat, 19 Nov 2022 10:31:51 -0500 Date: Sat, 19 Nov 2022 17:31:55 +0200 Message-Id: <838rk77yfo.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Sat, 19 Nov 2022 09:55:29 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: 59347@debbugs.gnu.org > Date: Sat, 19 Nov 2022 09:55:29 -0500 > > > Then Emacs does here what we intended it to do: it tries to match the > > variable-pitch font to the attributes of the default font. And DejaVu > > Sans fails that test on your system, because DejaVu Sans doesn't have > > a variant with the font attributes that are present in misc-fixed font > > you use as the default face's font. > > Then maybe the problem is the following: I do not consider > `-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*` to include "please > use non-anti-aliased fonts", contrary to the `-fn monospace:antialias=0` > of bug#37473? Antialias attribute is just one of the attributes. The problem is much larger and more general than just that single attribute. > Oh wait... I can recover the behavior I want by selecting > > :family "DejaVu Sans" :foundry "PfEd" > > so the problem is the foundry info. Changing the recipe to use > > -*-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* > > doesn't help, OTOH (IOW Emacs insists on preserving the foundry even if > I did not explicitly request any particular foundry). > > Does it make sense to preserve the `:foundry` attribute when the > `:family` is different? I don't know; it might be. > Is there some way to say `:foundry any` in order to override the > default's foundry but without having to choose a particular foundry? We will need to set it to nil where the font spec is passed to font-selection functions, I guess. But I'd be happier if you could step through the code and verified that indeed the foundry mismatch is what causes us to reject DejaVu Sans, and that after we reject it, we never try it with foundry set to nil in the font-spec. Perhaps we first set family to nil and only after that set foundry to nil? If this is indeed what happens, I'm okay with adding a variable that could control whether we try to adhere to foundry in font selection, and letting people try with it on and off. Alternatively, why not document that including foundry in the font spec is the solution to such problems? > PS: Things become really weird with: > > src/emacs -Q --eval '(progn (custom-set-faces `(variable-pitch ((t (:family "DejaVu Sans" :foundry "*"))))) (add-to-list `default-frame-alist `(font . "-*-fixed-*-*-semicondensed-*-13-*-*-*-*-*-*-*")) (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch) " world"))' > > where "hello" ends up with the following font: > > ftcrhb:-urw-Century Schoolbook L-medium-normal-normal-*-13-*-*-*-*-0-iso10646-1 Why is this weird? From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 11:01:18 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 16:01:19 +0000 Received: from localhost ([127.0.0.1]:41003 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owQHO-0001P0-H0 for submit@debbugs.gnu.org; Sat, 19 Nov 2022 11:01:18 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63487) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owQHL-0001Om-UF for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 11:01:17 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 63B2A44115C; Sat, 19 Nov 2022 11:01:10 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id DB873440B09; Sat, 19 Nov 2022 11:01:04 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668873664; bh=bg3cP6ry/qSBEZVZXKhi2uFWx4Osmut886vSWsCgoVY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=OG2SYlYQJYRTq3cVAUudVBWI1o4C+HVF8ZKwJMiK542vMS6R+LMQGFUCPUubOIblY 3F6XFnvZJzmV9YOCcC1z3uL+Ri1aONVRpKWRl8uaVR1gaia7mQgXI/XJ8I3uOQTs2V E2NPT0EKgZ6LkifXBqAYkM1z0AEgqxt3AYcF4HJWIKJq1NGw5EL/ozgli7rETkgd8g rNpo3ZN9mlFnWOVMN5TAeka2MbO7r0g4XWagHI+PXP15bUtJE/55cS4bUdZ5Bn3DgY oVwJFvjjpI26FYjYekbLHibxNvYsXYjqkKoiDV6X9S5mez8JL6bo3Avw7JvNjEifTN jPSEewfnbrhlw== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B912C1205CC; Sat, 19 Nov 2022 11:01:04 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <838rk77yfo.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 19 Nov 2022 17:31:55 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> Date: Sat, 19 Nov 2022 11:01:03 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.041 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > But I'd be happier if you could step through the code and verified > that indeed the foundry mismatch is what causes us to reject DejaVu > Sans, and that after we reject it, we never try it with foundry set to > nil in the font-spec. Perhaps we first set family to nil and only > after that set foundry to nil? I'll try that, tho I haven't looked at that code in quite a while, so it'll take some time for me to figure out how&where to look. >> PS: Things become really weird with: >> >> src/emacs -Q --eval '(progn (custom-set-faces `(variable-pitch ((t >> (:family "DejaVu Sans" :foundry "*"))))) (add-to-list `default-frame-alist >> `(font . "-*-fixed-*-*-semicondensed-*-13-*-*-*-*-*-*-*")) >> (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch) " >> world"))' >> >> where "hello" ends up with the following font: >> >> ftcrhb:-urw-Century Schoolbook L-medium-normal-normal-*-13-*-*-*-*-0-iso10646-1 > > Why is this weird? To me this font comes literally out of nowhere. AFAICT the only relevant face specifications at play here are the two pieces of font-info in the recipe (and `face-font-family-alternatives` but this doesn't seem to play any role). So, how do we end up with the `Century Schoolbook L` family (rather than either `fixed` or `DejaVu Sans` both of such seem just as qualified)? And if `urw` matches `*`, then why doesn't `PfEd` match it as well? Stefan From debbugs-submit-bounces@debbugs.gnu.org Sat Nov 19 11:16:20 2022 Received: (at 59347) by debbugs.gnu.org; 19 Nov 2022 16:16:20 +0000 Received: from localhost ([127.0.0.1]:41009 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owQVw-0001jo-3v for submit@debbugs.gnu.org; Sat, 19 Nov 2022 11:16:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43696) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owQVr-0001jZ-Fp for 59347@debbugs.gnu.org; Sat, 19 Nov 2022 11:16:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owQVm-0002Ce-60; Sat, 19 Nov 2022 11:16:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=LrtIdGU5N2le3Q/I7CUILr9R9xiQgwdM8aMgLO8HAqE=; b=T1+4EzChjQP0 2RNkuNSCqMfliaQZKhINNV+m6Yhh7bi+0/0JRI4bkGHaQxqqg73notBZyfpx5xbpXAkKsx8Z1u3Sd MX7NqEf/qgC3AM6a+VjaYSIq+hID4bf0Kw+o1bvFnPU5gyfn1HPMcr23G4+pAaOcedQ2Nc7o2no2C eyLtblhaupY1MQk54KfQCA+Br8VIGy5dN2cojhliqkcDKFwC9+GZYbRTd/C3oZyIBk5LDG+PlaB2s rbVzTwuhrRiJHIOVJthm5egaWAQm1qdzECe2hbWSGU+7SNlciQ5WejEZJcCLfQvkGT5DIlI9CtoZX E9el3DcKTSj8hTOTdTe50A==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owQVk-0004TW-97; Sat, 19 Nov 2022 11:16:09 -0500 Date: Sat, 19 Nov 2022 18:16:13 +0200 Message-Id: <834juu9aya.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Sat, 19 Nov 2022 11:01:03 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: 59347@debbugs.gnu.org > Date: Sat, 19 Nov 2022 11:01:03 -0500 > > >> PS: Things become really weird with: > >> > >> src/emacs -Q --eval '(progn (custom-set-faces `(variable-pitch ((t > >> (:family "DejaVu Sans" :foundry "*"))))) (add-to-list `default-frame-alist > >> `(font . "-*-fixed-*-*-semicondensed-*-13-*-*-*-*-*-*-*")) > >> (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch) " > >> world"))' > >> > >> where "hello" ends up with the following font: > >> > >> ftcrhb:-urw-Century Schoolbook L-medium-normal-normal-*-13-*-*-*-*-0-iso10646-1 > > > > Why is this weird? > > To me this font comes literally out of nowhere. AFAIR, when we fail to find fonts that match the spec, we progressively set more and more attributes to nil, so that in the end we have all of them nil, and then the first font that matches the size is fine. > AFAICT the only relevant face specifications at play here are the two > pieces of font-info in the recipe (and `face-font-family-alternatives` > but this doesn't seem to play any role). The other attributes come from the default face's font, I think. > So, how do we end up with the `Century Schoolbook L` family (rather > than either `fixed` or `DejaVu Sans` both of such seem just as > qualified)? I think if you step through the code, you will see it. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 08:57:53 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 13:57:53 +0000 Received: from localhost ([127.0.0.1]:42711 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owkpV-0005GJ-4R for submit@debbugs.gnu.org; Sun, 20 Nov 2022 08:57:53 -0500 Received: from heytings.org ([95.142.160.155]:51366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owkpT-0005GB-0v for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 08:57:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668952669; bh=lb6GmvWM7QKFOzj9cdilycWXZUIfcPRx6MW/zFj0cFM=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=gfzMHldAUhfw4NTiNp0W8RusK4CZb+DKvhlXoj4B2+Ez5OVF1OAm8a0XwMU75724o djhEh/yVKN/PwrZW0eT1OaHLEow2xZ42oKsRRDKD2+EyFZA3hPmKH2xMCXu60TTtyq ysB6N9th1/6MfXyCBQkgLuDftLtA/+sd803j3YAeBx88EXqrzmbD+/WDcuvgA/b5AH RkTBlZV+wdBgkveIwg6ydxBtM0BM0NYAfvqI74PDv6ClfHOjjmaT/napiCVHC1p0P0 HX/Xgw5w4A/9HNTyrYOkCKtcNqog/8+y1tWkwDRVyA7uLxJ6Y9nMAdc0Xi1stc4Fe1 z31OdYfdBWAeQ== Date: Sun, 20 Nov 2022 13:57:48 +0000 From: Gregory Heytings To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <834juu9aya.fsf@gnu.org> Message-ID: <7cc9e03786024fc72f3b@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="axwjubdfCc" Content-ID: <7cc9e0378693f00ae85c@heytings.org> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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 (-) --axwjubdfCc Content-Type: text/plain; charset=us-ascii; format=flowed Content-ID: <7cc9e03786ae02be6287@heytings.org> Stefan, could you please try the attached patch and see if it fixes your problem? (It does here, with your recipe.) Eli, could you please review that patch? Thanks. --axwjubdfCc Content-Type: text/x-diff; name=Also-try-normal-weight-when-searching-a-font-with-me.patch; charset=us-ascii Content-Transfer-Encoding: base64 Content-ID: <7cc9e037868c13170294@heytings.org> Content-Disposition: attachment; filename=Also-try-normal-weight-when-searching-a-font-with-me.patch RnJvbSBhYjcwOTBlMDU1YjdjMjA0M2Y5ZmRiMDdiNzYwYWU4YjMwNGZlMDJj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBTdW4sIDIwIE5v diAyMDIyIDEzOjUwOjQ3ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIEFsc28g dHJ5ICdub3JtYWwnIHdlaWdodCB3aGVuIHNlYXJjaGluZyBhIGZvbnQgd2l0 aCAnbWVkaXVtJw0KIHdlaWdodC4NCg0KQmV0d2VlbiBjb21taXRzIGJmMGQz Zjc2ZGMgKDIwMTQpIGFuZCA2YjFlZDJmMmM5ICgyMDIyKSwNCnJlYWxpemVf Z3VpX2ZhY2UgY2FsbGVkIGZvbnRfbG9hZF9mb3JfbGZhY2Ugd2l0aCBhbiBl bXB0eSBvciBwYXJ0bHkNCmVtcHRpZWQgZm9udCBzcGVjLCBpLmUuIGl0IGln bm9yZWQgYSBwYXJ0IG9mIGl0cyBhdHRycyBhcmd1bWVudC4gIFRoZQ0KcmF0 aW9uYWxlIGdpdmVuIGluIGJ1ZyMxNzk3Mywgd2hpY2ggbGVkIHRvIGJmMGQz Zjc2ZGMsIGlzIG5vdCBjbGVhci4NCkluIHRoZSBtZWFudGltZSwgY29tbWl0 IDY1ZmQzY2E4NGYgYWRkZWQgc3VwcG9ydCBmb3IgdGhlICdtZWRpdW0nIGZv bnQNCndlaWdodCwgd2hpY2ggd2FzIHByZXZpb3VzbHkgc3lub255bW91cyB0 byAnbm9ybWFsJy4NCg0KVG9nZXRoZXIsIHRoZSB0d28gY29tbWl0cyA2YjFl ZDJmMmM5IGFuZCA2NWZkM2NhODRmIGxlYWQgdG8gc3Vib3B0aW1hbA0KZm9u dCBjaG9pY2VzLiAgV2hlbiB0aGUgZm9udCBjaG9zZW4gZm9yIHRoZSBkZWZh dWx0IGZhY2UgaGFzIGl0cw0Kd2VpZ2h0IHNldCB0byAnbWVkaXVtJyBhbmQg YWN0dWFsbHkgc3VwcG9ydHMgdGhhdCB3ZWlnaHQsDQpmb250X2xvYWRfZm9y X2xmYWNlIHdpbGwgYmUgY2FsbGVkIHdpdGggYSB3ZWlnaHQgYXR0cmlidXRl IHNldCB0bw0KJ21lZGl1bScgaW4gc3BlYyBmb3Igb3RoZXIgZmFjZXMuICBI b3dldmVyLCBmb250cyB3aXRoIGFuIGV4cGxpY2l0DQonbWVkaXVtJyB3ZWln aHQgYXJlIG11Y2ggbGVzcyBjb21tb24gdGhhbiBmb250cyB3aXRoIGFuIGV4 cGxpY2l0DQonbm9ybWFsJyB3ZWlnaHQsIHdoaWNoIG1lYW5zIHRoYXQgZm9u dHMgdGhhdCBvbmx5IHN1cHBvcnQgYSAnbm9ybWFsJw0Kd2VpZ2h0IGFyZSBy ZWplY3RlZCwgYWx0aG91Z2ggdGhleSBhcmUgY2xvc2UgdG8gdGhlIGRlc2ly ZWQgZm9udC4NCg0KVGhlcmVmb3JlLCBmb250X2ZpbmRfZm9yX2xmYWNlIHNo b3VsZCBhbHNvIHRyeSB0aGUgJ25vcm1hbCcgd2VpZ2h0DQp3aGVuIHRoZSB3 ZWlnaHQgaW4gc3BlYyBpcyAnbWVkaXVtJywgYWZ0ZXIgdHJ5aW5nIHRoZSAn bWVkaXVtJyB3ZWlnaHQuDQoNCiogc3JjL2ZvbnQuYyAoZm9udF9maW5kX2Zv cl9sZmFjZSk6IFdoZW4gdGhlIHdlaWdodCBpbiBTUEVDIGlzDQonbWVkaXVt JywgYWxzbyB0cnkgdGhlICdub3JtYWwnIHdlaWdodC4NCi0tLQ0KIHNyYy9m b250LmMgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTIg ZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9zcmMvZm9udC5jIGIvc3Jj L2ZvbnQuYw0KaW5kZXggNmU3MjBiYzI4NS4uNDIyMmQ2MDIzMSAxMDA2NDQN Ci0tLSBhL3NyYy9mb250LmMNCisrKyBiL3NyYy9mb250LmMNCkBAIC0yOTU5 LDkgKzI5NTksOSBAQCBmb250X2ZpbmRfZm9yX2xmYWNlIChzdHJ1Y3QgZnJh bWUgKmYsIExpc3BfT2JqZWN0ICphdHRycywgTGlzcF9PYmplY3Qgc3BlYywg aW50DQogew0KICAgTGlzcF9PYmplY3Qgd29yazsNCiAgIExpc3BfT2JqZWN0 IGVudGl0aWVzLCB2YWw7DQotICBMaXNwX09iamVjdCBmb3VuZHJ5WzNdLCAq ZmFtaWx5LCByZWdpc3RyeVszXSwgYWRzdHlsZVszXTsNCisgIExpc3BfT2Jq ZWN0IGZvdW5kcnlbM10sICpmYW1pbHksIHJlZ2lzdHJ5WzNdLCBhZHN0eWxl WzNdLCB3ZWlnaHRbM107DQogICBpbnQgcGl4ZWxfc2l6ZTsNCi0gIGludCBp LCBqLCBrLCBsOw0KKyAgaW50IGksIGosIGssIGwsIG07DQogICBVU0VfU0FG RV9BTExPQ0E7DQogDQogICAvKiBSZWdpc3RyeSBzcGVjaWZpY2F0aW9uIGFs dGVybmF0aXZlczogZnJvbSB0aGUgbW9zdCBzcGVjaWZpYyB0bw0KQEAgLTMw ODEsNiArMzA4MSwxNyBAQCBmb250X2ZpbmRfZm9yX2xmYWNlIChzdHJ1Y3Qg ZnJhbWUgKmYsIExpc3BfT2JqZWN0ICphdHRycywgTGlzcF9PYmplY3Qgc3Bl YywgaW50DQogCX0NCiAgICAgfQ0KIA0KKyAgLyogSWYgd2VpZ2h0IGlzICJt ZWRpdW0iIGluIFNQRUMsIGFsc28gdHJ5ICJub3JtYWwiLiAgRm9udHMgd2l0 aCBhbg0KKyAgICAgZXhwbGljaXQgIm1lZGl1bSIgd2VpZ2h0IGFyZSBtdWNo IGxlc3MgY29tbW9uIHRoYW4gZm9udHMgd2l0aCBhbg0KKyAgICAgZXhwbGlj aXQgIm5vcm1hbCIgd2VpZ2h0LCBhbmQgZm9yIGEgbG9uZyB0aW1lICJtZWRp dW0iIGFuZA0KKyAgICAgIm5vcm1hbCIgKGEuay5hLiAicmVndWxhciIgYS5r LmEuICJib29rIikgd2VyZSBzeW5vbnltb3VzIGluDQorICAgICBFbWFjcy4g IFNlZSBlLmcuIGJ1ZyM1OTM0NyBhbmQgYnVnIzU3NTU1LiAgKi8NCisgIHdl aWdodFswXSA9IEFSRUYgKHNwZWMsIEZPTlRfV0VJR0hUX0lOREVYKTsNCisg IGlmIChFUSAod2VpZ2h0WzBdLCBRbWVkaXVtKSkNCisgICAgd2VpZ2h0WzFd ID0gUW5vcm1hbCwgd2VpZ2h0WzJdID0gemVyb192ZWN0b3I7DQorICBlbHNl DQorICAgIHdlaWdodFsxXSA9IHplcm9fdmVjdG9yOw0KKw0KICAgLyogTm93 IGxvb2sgdXAgc3VpdGFibGUgZm9udHMsIGZyb20gdGhlIG1vc3Qgc3BlY2lm aWMgc3BlYyB0byB0aGUNCiAgICAgIGxlYXN0IHNwZWNpZmljIHNwZWMuICBB Y2NlcHQgdGhlIGZpcnN0IG9uZSB0aGF0IG1hdGNoZXMuICAqLw0KICAgZm9y IChpID0gMDsgU1lNQk9MUCAoZmFtaWx5W2ldKTsgaSsrKQ0KQEAgLTMwOTUs MTggKzMxMDYsMjIgQEAgZm9udF9maW5kX2Zvcl9sZmFjZSAoc3RydWN0IGZy YW1lICpmLCBMaXNwX09iamVjdCAqYXR0cnMsIExpc3BfT2JqZWN0IHNwZWMs IGludA0KIAkgICAgICBmb3IgKGwgPSAwOyBTWU1CT0xQIChhZHN0eWxlW2xd KTsgbCsrKQ0KIAkJew0KIAkJICBBU0VUICh3b3JrLCBGT05UX0FEU1RZTEVf SU5ERVgsIGFkc3R5bGVbbF0pOw0KLQkJICAvKiBQcm9kdWNlIHRoZSBsaXN0 IG9mIGNhbmRpZGF0ZXMgZm9yIHRoZSBzcGVjIGluIFdPUksuICAqLw0KLQkJ ICBlbnRpdGllcyA9IGZvbnRfbGlzdF9lbnRpdGllcyAoZiwgd29yayk7DQot CQkgIGlmICghIE5JTFAgKGVudGl0aWVzKSkNCisJCSAgZm9yIChtID0gMDsg U1lNQk9MUCAod2VpZ2h0W21dKTsgbSsrKQ0KIAkJICAgIHsNCi0JCSAgICAg IC8qIElmIHRoZXJlIGFyZSBzZXZlcmFsIGNhbmRpZGF0ZXMsIHNlbGVjdCB0 aGUNCi0JCQkgYmVzdCBtYXRjaCBmb3IgUElYRUxfU0laRSBhbmQgYXR0cmli dXRlcyBpbiBBVFRSUy4gICovDQotCQkgICAgICB2YWwgPSBmb250X3NlbGVj dF9lbnRpdHkgKGYsIGVudGl0aWVzLA0KLQkJCQkJCWF0dHJzLCBwaXhlbF9z aXplLCBjKTsNCi0JCSAgICAgIGlmICghIE5JTFAgKHZhbCkpDQorCQkgICAg ICBBU0VUICh3b3JrLCBGT05UX1dFSUdIVF9JTkRFWCwgd2VpZ2h0W21dKTsN CisJCSAgICAgIC8qIFByb2R1Y2UgdGhlIGxpc3Qgb2YgY2FuZGlkYXRlcyBm b3IgdGhlIHNwZWMgaW4gV09SSy4gICovDQorCQkgICAgICBlbnRpdGllcyA9 IGZvbnRfbGlzdF9lbnRpdGllcyAoZiwgd29yayk7DQorCQkgICAgICBpZiAo ISBOSUxQIChlbnRpdGllcykpDQogCQkJew0KLQkJCSAgU0FGRV9GUkVFICgp Ow0KLQkJCSAgcmV0dXJuIHZhbDsNCisJCQkgIC8qIElmIHRoZXJlIGFyZSBz ZXZlcmFsIGNhbmRpZGF0ZXMsIHNlbGVjdCB0aGUNCisJCQkgICAgIGJlc3Qg bWF0Y2ggZm9yIFBJWEVMX1NJWkUgYW5kIGF0dHJpYnV0ZXMgaW4gQVRUUlMu ICAqLw0KKwkJCSAgdmFsID0gZm9udF9zZWxlY3RfZW50aXR5IChmLCBlbnRp dGllcywNCisJCQkJCQkgICAgYXR0cnMsIHBpeGVsX3NpemUsIGMpOw0KKwkJ CSAgaWYgKCEgTklMUCAodmFsKSkNCisJCQkgICAgew0KKwkJCSAgICAgIFNB RkVfRlJFRSAoKTsNCisJCQkgICAgICByZXR1cm4gdmFsOw0KKwkJCSAgICB9 DQogCQkJfQ0KIAkJICAgIH0NCiAJCX0NCi0tIA0KMi4zNS4xDQoNCg== --axwjubdfCc-- From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 09:59:20 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 14:59:20 +0000 Received: from localhost ([127.0.0.1]:44312 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owlmx-0007Bx-UI for submit@debbugs.gnu.org; Sun, 20 Nov 2022 09:59:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33688) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owlmu-0007Bi-I2 for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 09:59:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owlmo-0000fl-Ht; Sun, 20 Nov 2022 09:59:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ifft2y+a2yyaT5c9JMCmMibjjJxLwe/dxN4OeZQDEPk=; b=EU3QrQAbDCy5 0lOD+hhcFxGTOVkQKtMTYk0mvBNVCEZVLUJ+8qxmJNkC/U5+OEqp9fw5nLL5p0bnYqLKCCVI4RaYb la19ps2Qf+hc4QmBi3SpB3GIoDeyfN5d8+/OzGgSlxHQHewL66todgHj55fMtPaIhdmjK4/eB39td BOfKCA54i9/QzsFBVKUd/j1gBax9fyRT/mQXELYf/PhnzMMhYQXlwfxCOuwpJ9cNxKn2iSqjRIm4U P2cp7pw/fvCFZZeiJTOQwTFBGrpLpJnaE+3gGqw0BB08LlkHPgvbxfpKRhrWGdW+sNbvY/LbJnRtv S0CR1W75DeRenYQMCHB0yw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owlmX-0006Yj-1M; Sun, 20 Nov 2022 09:59:08 -0500 Date: Sun, 20 Nov 2022 16:59:01 +0200 Message-Id: <83a64l65ai.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e03786024fc72f3b@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 13:57:48 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 13:57:48 +0000 > From: Gregory Heytings > cc: Eli Zaretskii , 59347@debbugs.gnu.org > > Stefan, could you please try the attached patch and see if it fixes your > problem? (It does here, with your recipe.) > > Eli, could you please review that patch? I'd prefer to delay the discussion of this until after Stefan has time to see why DejaVu Sans is rejected in his cases and describe his findings. If you already did that, please describe your findings. AFAIU, Stefan discovered that the problematic attribute was foundry, and your patch does nothing about foundry. It sounds like your patch is for another problem altogether. A quick comment wrt the patch itself: > + /* If weight is "medium" in SPEC, also try "normal". Fonts with an > + explicit "medium" weight are much less common than fonts with an > + explicit "normal" weight, and for a long time "medium" and > + "normal" (a.k.a. "regular" a.k.a. "book") were synonymous in > + Emacs. See e.g. bug#59347 and bug#57555. */ > + weight[0] = AREF (spec, FONT_WEIGHT_INDEX); > + if (EQ (weight[0], Qmedium)) > + weight[1] = Qnormal, weight[2] = zero_vector; > + else > + weight[1] = zero_vector; This is not enough, IMO: you need to make sure the scoring of candidates is still correct. For example, if the weights of two candidates differ (normal vs medium), but sizes are the same or close, how will that compare with candidates whose weights are identical, but sizes differ? IOW, we need to reconsider how font_score scores the candidates. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 10:35:10 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 15:35:10 +0000 Received: from localhost ([127.0.0.1]:44341 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owmLe-00085g-5f for submit@debbugs.gnu.org; Sun, 20 Nov 2022 10:35:10 -0500 Received: from heytings.org ([95.142.160.155]:51510) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owmLc-00085V-4t for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 10:35:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668958507; bh=pm/71hcLoA90IjvKm63KJawZ6/MPaEgENXs7yC9IgZU=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=sleZlKAVdaeWKfiGMdLv+u1EVl98UuSwj3b0nn4Cbq3b4cR7iBuPoUyTRWhz38mHK Afhvoeewtu+PzQb7xqhFGJXsqpKhQnWdDJ3ckHWr5HLr/PuKAnosBt324d1lxg+ALW D3ImexURZ/JRhhKifBo3P9moX0BHM/u5MzpEdN/sqPIRuZuwKkpAyIKnhRTSedWBTG Ihm8OaS7g/QiuV29/jjeDNY+poPDOUnEr10hLSnl64+4pvHHeJzN+ohYaKfFQkrdTz qPGsPQA0PMWgZFkN530zSkOQM89Yjm7GThMxm7iuvNPohCNidu4vN2CoypjEv3DvmQ tQbthunmUNbzw== Date: Sun, 20 Nov 2022 15:35:06 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83a64l65ai.fsf@gnu.org> Message-ID: <7cc9e0378678a092e6ee@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) > > I'd prefer to delay the discussion of this until after Stefan has time > to see why DejaVu Sans is rejected in his cases and describe his > findings. > > If you already did that, please describe your findings. > It's described in the commit message. DejaVu Sans is rejected because the font of the default face has a 'medium' weight, and DejaVu Sans (like many other fonts) does not explicitly support that weight. For many fonts (and for Emacs until recently), normal, regular and medium are the same weight. > > AFAIU, Stefan discovered that the problematic attribute was foundry, and > and your patch does nothing about foundry. > I don't know how he reached that conclusion, but it's most likely not the cause of the problem. > > It sounds like your patch is for another problem altogether. > I don't think so, at least my intention was to fix this bug (and also at least bug#57555, which is the same one). >> + /* If weight is "medium" in SPEC, also try "normal". Fonts with an >> + explicit "medium" weight are much less common than fonts with an >> + explicit "normal" weight, and for a long time "medium" and >> + "normal" (a.k.a. "regular" a.k.a. "book") were synonymous in >> + Emacs. See e.g. bug#59347 and bug#57555. */ >> + weight[0] = AREF (spec, FONT_WEIGHT_INDEX); >> + if (EQ (weight[0], Qmedium)) >> + weight[1] = Qnormal, weight[2] = zero_vector; >> + else >> + weight[1] = zero_vector; > > This is not enough, IMO: you need to make sure the scoring of candidates > is still correct. For example, if the weights of two candidates differ > (normal vs medium), but sizes are the same or close, how will that > compare with candidates whose weights are identical, but sizes differ? > IOW, we need to reconsider how font_score scores the candidates. > I don't understand your question. The patch essentially adds an inner loop in the loop of fond_find_for_lface, to make sure that when weight == medium, we call font_list_entities two times, first with (family, foundry, registry, adstyle, weight == medium) and then (if the previous call did not succeed to find a matching font, IOW, if it did not return nil) with (family, foundry, registry, adstyle, weight == normal) There is no scoring involved at that point, AFAIU. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 10:54:30 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 15:54:30 +0000 Received: from localhost ([127.0.0.1]:44354 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owmeL-000087-Mo for submit@debbugs.gnu.org; Sun, 20 Nov 2022 10:54:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43714) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owmeH-00007q-BE for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 10:54:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owmeB-0003qG-9X; Sun, 20 Nov 2022 10:54:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=qwjqmHTK3IVGrlfvJbURfGlkFdZPNSXVqSd5tEFw23Q=; b=MVdb3jDSVHPX KQSJcF6mkrKMqH8u36NXRCJexAChW+UN49E1973LdWXNIN+NgubqeEx0b3RSZ1nbRPESo5+rORAMz CqXoEC0n/zSDtYOH/iVHsjg7Zjp6v8de9UVGdgvUQAnA6PJ//W1gp1TPlbUTynOGcr601fkgCdIxa wWy7GfYOxAywOtK/FMjLAarX2Q4SExQejJcxwJe67MeKt0/OkQijTmmzTA1XWlKXFpYbRhFW7wmjN J536l4jiemVbeDhdb2O164SpCQTZGEygMZstR91c19MP/Yzh0493ZZ13rscq3Zt6m+mKwtRaQz3Wn Eoh/UVp0WOIBPLLs72ZDuQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owmeA-00017N-N5; Sun, 20 Nov 2022 10:54:19 -0500 Date: Sun, 20 Nov 2022 17:54:27 +0200 Message-Id: <835yf962q4.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e0378678a092e6ee@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 15:35:06 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 15:35:06 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > I'd prefer to delay the discussion of this until after Stefan has time > > to see why DejaVu Sans is rejected in his cases and describe his > > findings. > > > > If you already did that, please describe your findings. > > It's described in the commit message. DejaVu Sans is rejected because the > font of the default face has a 'medium' weight, and DejaVu Sans (like many > other fonts) does not explicitly support that weight. Stefan said that he tried to change the weight, but that had no effect on the problem. So maybe what you see on your system is a different issue. > > AFAIU, Stefan discovered that the problematic attribute was foundry, and > > and your patch does nothing about foundry. > > I don't know how he reached that conclusion, but it's most likely not the > cause of the problem. He described how he reached that conclusion in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#65 > > This is not enough, IMO: you need to make sure the scoring of candidates > > is still correct. For example, if the weights of two candidates differ > > (normal vs medium), but sizes are the same or close, how will that > > compare with candidates whose weights are identical, but sizes differ? > > IOW, we need to reconsider how font_score scores the candidates. > > > > I don't understand your question. The patch essentially adds an inner > loop in the loop of fond_find_for_lface, to make sure that when weight == > medium, we call font_list_entities two times, first with > > (family, foundry, registry, adstyle, weight == medium) > > and then (if the previous call did not succeed to find a matching font, > IOW, if it did not return nil) with > > (family, foundry, registry, adstyle, weight == normal) > > There is no scoring involved at that point, AFAIU. If we don't make font_score consistent with the change you made, we will have other weird problems. Maybe not in this particular case (although I'm not sure even in this), but in others. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 11:59:05 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 16:59:05 +0000 Received: from localhost ([127.0.0.1]:44404 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owner-0001ki-94 for submit@debbugs.gnu.org; Sun, 20 Nov 2022 11:59:05 -0500 Received: from heytings.org ([95.142.160.155]:51614) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owneo-0001kI-7z for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 11:59:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668963540; bh=cJ2akB+UkpifIv8FT2xfeTYBBXlgSyjItaY9QDd+2iw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=ZWxvoUGb1i8S8qOMEzHvPJmtLoc5AkyR6E0kLKspd/njaFA9ubPBkZ19hpMyFJ3xc J8C5/f1CTV2XNUkj1jj6h1DVpzYBlCz9verp7bxSgXFkgAoFjy8hSCPi0YAGgP7cmh 8HCPgYhNmlQrabGAWfd28CSDZ5HyHgj6Ul/jWIkIHoX1L87aLBqAHDoHtz+Bn1zx1U TT8fD2sCj9+N+usQtHkwez/h3QwSl9NXAXE7l7feZut7QURQlzRevQOmOP6bqv1jNy 46ZTLUsFgMmK+5HTBreQzS/TMCBDftTrxzZx2eQxJ+SbySQTEDCyvxj+24fJdVKZ/O Sg/lB3PEzcdLg== Date: Sun, 20 Nov 2022 16:59:00 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <835yf962q4.fsf@gnu.org> Message-ID: <7cc9e03786754c9e0aaf@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >>> AFAIU, Stefan discovered that the problematic attribute was foundry, >>> and and your patch does nothing about foundry. >> >> I don't know how he reached that conclusion, but it's most likely not >> the cause of the problem. > > He described how he reached that conclusion in > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#65 > Thanks. What he describes there looks like a workaround more than a solution to me. The actual problem is that -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* selects -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 in which you see the 'medium' height. > > If we don't make font_score consistent with the change you made, we will > have other weird problems. Maybe not in this particular case (although > I'm not sure even in this), but in others. > Thanks, I think I see what you mean now. I overlooked the fact that font_select_entity is called with attrs and not with work, so indeed font_score called in font_sort_entities might reject (?) a legitimate font. Is that what you mean? From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 12:29:30 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 17:29:30 +0000 Received: from localhost ([127.0.0.1]:44478 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owo8I-0002dn-5M for submit@debbugs.gnu.org; Sun, 20 Nov 2022 12:29:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41104) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owo8H-0002db-4G for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 12:29:29 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owo8B-00006Y-0V; Sun, 20 Nov 2022 12:29:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=NjlWi1U3RrKzqIqn5Hwiu0/JNlG2OZbLAEhmrUo2NcM=; b=ABgL06eVIxF/ OPkPZ+JMMUHRVN9/cQByJmElI71BLLQQ9igodLfyXfl2+RcF1KVcag/n71OHizcmkMrvILePoBNx+ ydBkeCcUonOg/XCHHCTCQz54QnCRvDIKKtsKPndrS+YmolGPBqVLDXDFJk1Wjt3BrmKw09i5yJk03 zIxuMWve9YfIrOMIKYD9U5qnPgVZUkhSxl639+ZORGCLgjjiilnbnM5tY17jhPZGnTH1RYcXO02Xc YWZzO2Q9l8CQkksysX35Dr8yxCfdWyLFowy/Dj864PYtjNBcf7HcXM1Z0LUTDFhIVG6wW9rtap8O+ MIe1jnUPBby6SL6goS8vBw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owo88-0007vO-Bu; Sun, 20 Nov 2022 12:29:22 -0500 Date: Sun, 20 Nov 2022 19:29:29 +0200 Message-Id: <83zgcl4jra.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e03786754c9e0aaf@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 16:59:00 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 16:59:00 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#65 > > > > Thanks. What he describes there looks like a workaround more than a > solution to me. The actual problem is that > > -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* > > selects > > -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 > > in which you see the 'medium' height. You mean weight, not height, right? Does this font have a 'regular' weight? If it does, why didn't Emacs choose the 'regular' variant? In any case, I don't understand how asking for a specific foundry can work around the problem with weight. If you do understand that, please tell the details. > > If we don't make font_score consistent with the change you made, we will > > have other weird problems. Maybe not in this particular case (although > > I'm not sure even in this), but in others. > > Thanks, I think I see what you mean now. I overlooked the fact that > font_select_entity is called with attrs and not with work, so indeed > font_score called in font_sort_entities might reject (?) a legitimate > font. Is that what you mean? Yes. We need to make sure the scoring will not now sometimes prefer the medium weight where the regular weight exists and is a better match. Not only should it not reject a legitimate font, but also not prefer another font due to this change. IOW, the change should ideally only affect the cases where the 'medium' weight doesn't exist, and we therefore prefer to use 'regular' rather than reject the family. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 12:43:27 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 17:43:27 +0000 Received: from localhost ([127.0.0.1]:44498 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owoLm-0002zu-QL for submit@debbugs.gnu.org; Sun, 20 Nov 2022 12:43:27 -0500 Received: from heytings.org ([95.142.160.155]:51688) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owoLl-0002zl-0n for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 12:43:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668966204; bh=744YgYffAQaoeCZqCCkV9YEZ6tOQ+DFQcOGzl8Hhz+I=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=Rnz+d6egmH+DHxgV32vtnT9vBF0Ke7IUURboCcA5JsXfSsAmhk0rVkt0X9p6f4j/w LLRj23JESgEaXn9rTLRrwKmEeD/knMtj5w3RcAfZugTv1Yzz+sR5acfUhv/BHLVIZ+ gRbxFcesYCfYCUhg1GnUwejTcej0Al9RBabXs/8nFhx3H8z7gLhCzl5v5Mh77mKjGK IzxTiUltd9XU1MH772qVXhZAK1PELB4Nc7jVULys7uS8c4rp5Amy+m0SjWvLtPIDkR yYEYR069gjNQyjcW0JkllIgxDSCqUumaBttu60gB4hv7zkeRZ6leOtcpDQPv+Ul2a9 GBz82jc5ANg9Q== Date: Sun, 20 Nov 2022 17:43:23 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83zgcl4jra.fsf@gnu.org> Message-ID: <7cc9e03786c281cffdd4@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 >> >> in which you see the 'medium' height. > > You mean weight, not height, right? > Yes, sorry for the typo. > > Does this font have a 'regular' weight? If it does, why didn't Emacs > choose the 'regular' variant? > Because the spec specified that it should find a medium variant. So regular variants are rejected (because of 65fd3ca84f). > > In any case, I don't understand how asking for a specific foundry can > work around the problem with weight. If you do understand that, please > tell the details. > I'd have to investigate this, is it really worth the effort given that a proper fix has already been found? >>> If we don't make font_score consistent with the change you made, we >>> will have other weird problems. Maybe not in this particular case >>> (although I'm not sure even in this), but in others. >> >> Thanks, I think I see what you mean now. I overlooked the fact that >> font_select_entity is called with attrs and not with work, so indeed >> font_score called in font_sort_entities might reject (?) a legitimate >> font. Is that what you mean? > > Yes. We need to make sure the scoring will not now sometimes prefer the > medium weight where the regular weight exists and is a better match. > Not only should it not reject a legitimate font, but also not prefer > another font due to this change. IOW, the change should ideally only > affect the cases where the 'medium' weight doesn't exist, and we > therefore prefer to use 'regular' rather than reject the family. > I don't think the case you have in mind could happen in the scenario of this bug or bug#57555 (if a regular weight exists and is a better match the loop in font_find_for_lface will exit with that better match), but indeed with some other call sequence this could perhaps happen. I'll see what I can do. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 12:58:52 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 17:58:52 +0000 Received: from localhost ([127.0.0.1]:44525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owoai-0003Q0-7n for submit@debbugs.gnu.org; Sun, 20 Nov 2022 12:58:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37652) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owoah-0003Po-06 for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 12:58:51 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owoab-0006Y5-HU; Sun, 20 Nov 2022 12:58:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=St28sz3LG2fp8cMMwTXDXKS0kz3FITPqZBOO8PtZET8=; b=sVgJ0IFCYN1e IOmY2UAO00Ul9DFufxjX+nIRi27t7ki9uncrFIcNHF+4wzD05XZBrsgdKXzOhhZ1cR4YfnrM3t3wS 4kK2QItGpxpEDPbp8enN1NYzQ7Fn6pn3NDxO76sf6BPOvwoCGoHfh8k0tpyIJK2uWkj6qIh9njo19 skOwPVpNzmtOmyS3fUbwaGLmIZsMKLV3qHN9bxF8gvyBpiv5DsEX3MdYKzIy4qtuXKxw4TtqjfijA lXZPTRPXuTP6/kEeevdK1fLnQeMNw07++hFG8NjpzFQ0Iq9gWU0UJv8N/khWkfEUzSDMdvVycCzgO 2EKnREpMMm5CQHsKNM+tlQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owoaa-0005hj-VA; Sun, 20 Nov 2022 12:58:45 -0500 Date: Sun, 20 Nov 2022 19:58:54 +0200 Message-Id: <83tu2t4ie9.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e03786c281cffdd4@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 17:43:23 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 17:43:23 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > Does this font have a 'regular' weight? If it does, why didn't Emacs > > choose the 'regular' variant? > > Because the spec specified that it should find a medium variant. So > regular variants are rejected (because of 65fd3ca84f). No, the spec was -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*, so any weight should be okay. See Stefan's original recipe. > > In any case, I don't understand how asking for a specific foundry can > > work around the problem with weight. If you do understand that, please > > tell the details. > > I'd have to investigate this, is it really worth the effort given that a > proper fix has already been found? I'd like to hear Stefan say that this is fixed on his system as well. And yes, I'd still be interested in understanding why asking for another foundry fixed or worked around the problem. > > Yes. We need to make sure the scoring will not now sometimes prefer the > > medium weight where the regular weight exists and is a better match. > > Not only should it not reject a legitimate font, but also not prefer > > another font due to this change. IOW, the change should ideally only > > affect the cases where the 'medium' weight doesn't exist, and we > > therefore prefer to use 'regular' rather than reject the family. > > > > I don't think the case you have in mind could happen in the scenario of > this bug or bug#57555 (if a regular weight exists and is a better match > the loop in font_find_for_lface will exit with that better match), but > indeed with some other call sequence this could perhaps happen. I'll see > what I can do. Thanks, it's indeed the other cases that I worry about. We had a lot of changes in this area which solved one problem only to create others. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:11:16 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:11:16 +0000 Received: from localhost ([127.0.0.1]:44562 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owomh-0005z7-Nu for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:11:16 -0500 Received: from heytings.org ([95.142.160.155]:51744) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owome-0005yx-MK for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:11:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668967871; bh=KO1FXhGUqP1AdRgmpVV9jKC/vx9ns6FSGqRicy18ZBc=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=xaL0ZF4DiRNZ5E41gBF34vt15whWWYEdTVpRaH0Duf/KbHb8UaqqwFQVuKm2ZwacA CRD+v/iZsls3FBE5VTT5Hl8a1THdyvtu93uIsEoIvx8enkdLKSFvWX4quEv0K2aI0E FbVpA2AGwGMB7vmdeZCayjJHhdf653LiHS9+zrmatDfXJnHuMWSfcImeHI2X7rGu7q Gq+SpkF2uG+l3tipGXKalFPzO6hwefHIUN5LB+3gOxc5tDqkfh/3mFawjn87lcLGTR S70kd5m5d+KCaU3ZRRhdqkf5jfiYzw2iwMfY0Xupcqk8TCnzK1bfgE4HA42BfElIyY 3CNxMg2Bm27vw== Date: Sun, 20 Nov 2022 18:11:11 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83tu2t4ie9.fsf@gnu.org> Message-ID: <7cc9e037869a7335b0f1@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >>> Does this font have a 'regular' weight? If it does, why didn't Emacs >>> choose the 'regular' variant? >> >> Because the spec specified that it should find a medium variant. So >> regular variants are rejected (because of 65fd3ca84f). > > No, the spec was -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*, so > any weight should be okay. See Stefan's original recipe. > It's the spec of the default face, so its realization takes place before the realization of the other one (DejaVu Sans), and the medium weight is selected. When Emacs tries to realize the DejaVu Sans font, it sees that DejaVu Sans does not have a medium weight, and it is rejected. >> I'd have to investigate this, is it really worth the effort given that >> a proper fix has already been found? > > I'd like to hear Stefan say that this is fixed on his system as well. > And yes, I'd still be interested in understanding why asking for another > foundry fixed or worked around the problem. > Okay, I'll try to find out if I have time. > > Thanks, it's indeed the other cases that I worry about. We had a lot of > changes in this area which solved one problem only to create others. > If bug fixes did not create other bugs, programming wouldn't be fun, isn't it? ;-) From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:16:35 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:16:35 +0000 Received: from localhost ([127.0.0.1]:44587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oworq-00068X-UQ for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:16:35 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:9842) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oworp-00068L-Ru for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:16:34 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 27C9A1000E1; Sun, 20 Nov 2022 13:16:28 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id A5D94100054; Sun, 20 Nov 2022 13:16:22 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668968182; bh=SevxzSdQIe77789QUazG1Da9vnD99sS7++PtQAOFQW8=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=peIqNyEeIlZKin5T5t/MZzWkDmSPAO0aD3bkFc4xiASST3hFwQXGKFjGFdJ9BT4wS B5KwevDalGMYaHgmTlXyImiqiv+hXXF8qXxQm+UMAwSbgW+jLJ2VggjlUa+QyJ3KHz Pj5OgJXSYqgU2h2pnjIyYdtzvCTK/9Y3ufhvvwLj0EjTLkp0OBp7HUQ3AIrqZcZS+b BFm1EaW8V+tRzcSOINbYLph5NFQ/mmpwGaEKpw8PrONcBIvR0apYGS1icnhBTtxW12 YzQxv0o6B7vo1H619Clx+kT3Clz1OdEor1Zznk3WYUgqgeTyKtZAuMPRbqOjHU5tfP 7R91YpJ6YOQKA== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7550C120074; Sun, 20 Nov 2022 13:16:22 -0500 (EST) From: Stefan Monnier To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <7cc9e03786024fc72f3b@heytings.org> (Gregory Heytings's message of "Sun, 20 Nov 2022 13:57:48 +0000") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> Date: Sun, 20 Nov 2022 13:16:21 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.040 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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: -3.3 (---) > Stefan, could you please try the attached patch and see if it fixes your > problem? (It does here, with your recipe.) It works for me, indeed! Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:19:32 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:19:32 +0000 Received: from localhost ([127.0.0.1]:44592 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owoui-0006Co-GO for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:19:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55876) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owouf-0006Ca-Ty for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:19:31 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owouZ-0004CK-Ur; Sun, 20 Nov 2022 13:19:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=evrZ48I+k3MfwcMaG0az/Yu7V8X4VCM3YQuK+GfUjQs=; b=Rers/8rQyird rLXPkzb6y/wmc/ff4I7C3Z9M7nTk2UyiCjaYbwaswXDJYxGQYlai9Ms7domQOrUGUmpMEmClVuMud y1wSbM05KNG+xYnmyBbIAZXGxq/tEaJscCb9NSYLG4cLlcP9/ywWxUQCM39q3TPcTAyrcC1dYWz/U a/9FElEOzvS57u8Ux4O8qgymVtDIRx+MfQ1KT1SoMTiFPaGZX6zIwmyN0bRNllsyi54CWuJgDZkyt 7kBysArVQ+7tT91vax2bvbZFvC8+j1UPEAZV6IOhXH+nkgJHoToyDtnAwByeVWmRird0Rvze30TA5 HJ9tC0ib+yE8UkzRf7D6aA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owouZ-0002AY-E0; Sun, 20 Nov 2022 13:19:23 -0500 Date: Sun, 20 Nov 2022 20:19:33 +0200 Message-Id: <83sfid4hfu.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e037869a7335b0f1@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 18:11:11 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e037869a7335b0f1@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 18:11:11 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > No, the spec was -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*, so > > any weight should be okay. See Stefan's original recipe. > > It's the spec of the default face, so its realization takes place before > the realization of the other one (DejaVu Sans), and the medium weight is > selected. Yes, but why medium? Is that the default (I don't think so)? > > Thanks, it's indeed the other cases that I worry about. We had a lot of > > changes in this area which solved one problem only to create others. > > If bug fixes did not create other bugs, programming wouldn't be fun, isn't > it? ;-) Of course. I just think in this case we've had enough fun already. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:30:59 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:30:59 +0000 Received: from localhost ([127.0.0.1]:44603 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owp5n-0006UX-2o for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:30:59 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:17442) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owp5k-0006UL-N9 for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:30:57 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 7B651440A49; Sun, 20 Nov 2022 13:30:50 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id B466E440A1E; Sun, 20 Nov 2022 13:30:44 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668969044; bh=epwlysr9J6ukE7RCPMypX3x0S+yGXezYiZ46vIyI8hc=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=NBRL8oRbeZrCgB6sJA8p9D48bUcT/BqksJAMCfD9IwmvDMdscWKAQGf0Vtx9vN3uY lCVQ5u8gNERAwjIri7oclrVjqCvrXYgExOGBNgi7i4srOXXsY6Hx2n+4MEcfW64fiY NOKV94ePbwpLX/QO+t8FWO1yoztXpYKkBZci/PXnq2JOpOV4wOGpSbP5j2fsocC43c kZ2e5nUOqcMOGzPCFjw2hBoWIU0vVqgc+gWAjs4diUi1MNFdQkLrFzb8lkxFw3bbIT alIcjtPxPzFcwK3BoC389NnoKZRPt8Qs6N+0XGG/u2KkpbB717SbmbPyDZ+2FxQ/mW WHPW97ulsarDQ== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 13290120CE3; Sun, 20 Nov 2022 13:30:44 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83tu2t4ie9.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 20 Nov 2022 19:58:54 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> Date: Sun, 20 Nov 2022 13:30:41 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.039 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , 59347@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: -3.3 (---) >> I'd have to investigate this, is it really worth the effort given that a >> proper fix has already been found? > I'd like to hear Stefan say that this is fixed on his system as well. As mentioned in my other message, it does fix it for me. > And yes, I'd still be interested in understanding why asking for > another foundry fixed or worked around the problem. Haven't found that out yet. >> > Yes. We need to make sure the scoring will not now sometimes prefer the >> > medium weight where the regular weight exists and is a better match. >> > Not only should it not reject a legitimate font, but also not prefer >> > another font due to this change. IOW, the change should ideally only >> > affect the cases where the 'medium' weight doesn't exist, and we >> > therefore prefer to use 'regular' rather than reject the family. [...] > Thanks, it's indeed the other cases that I worry about. We had a lot of > changes in this area which solved one problem only to create others. BTW, when scoring fonts, I'd expect that the different weights get turned into a number and we then look at the difference between the requested number and the font's number. This way `medium` and `normal` won't be considered as "equal" but "almost equal" [ tho, to be honest, I have no idea which of `regular`, `normal`, and `medium` is supposed to be heavier or lighter. The same problem can affect the width attribute where many of the possible choices seem to use just arbitrarily different names for the same thing. ] Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:32:02 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:32:02 +0000 Received: from localhost ([127.0.0.1]:44608 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owp6o-0006WT-G5 for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:32:02 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:58316) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owp6m-0006W0-Hb for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:32:00 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 44BFE1000E1; Sun, 20 Nov 2022 13:31:55 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D77ED100054; Sun, 20 Nov 2022 13:31:53 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668969113; bh=fPAAj60YbPjHFx+Sr/X1Mc9cBban9nlSPpTpajpGQOs=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=Mx+jYcuna9RxrozjW927bnIHA8eAMqQK+DKng39Gy5l/XS+VQCHsCsQLvbOUW4wPb cikwll0e22cf3kERS8ElSKgLiwz2huR6ph4D0HodUmZam4yQVwoxWwnK8cPI8CD3A5 2W1f8iM5ZoWRi82K8SNn47Ta3dljHb82fFXr9pKsEwpG/csHarwHQ2auplyG6cE/Iw Jlp2h+5M1RlKURWHrJC9E0B9kql1zA9cP7oGDgxZSYnb2S6qv3Jt4HH0tw2ayCGWOr PsgyPUNeibWg3cf3H7VXTIBkRVmeYZYFVFaBSMY7AndrMj3MYDese6BoLVWp/HoQ0p MyJjkudM4dztg== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B07951201C3; Sun, 20 Nov 2022 13:31:53 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83tu2t4ie9.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 20 Nov 2022 19:58:54 +0200") Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> Date: Sun, 20 Nov 2022 13:31:52 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.039 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , 59347@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: -3.3 (---) > Thanks, it's indeed the other cases that I worry about. We had a lot of > changes in this area which solved one problem only to create others. That's why I think we should make an effort to provide test cases (even though it's clearly going to be tricky). Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:53:36 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:53:36 +0000 Received: from localhost ([127.0.0.1]:44627 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owpRf-00073a-Rc for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:53:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40942) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owpRc-00073L-2J for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:53:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owpRW-0002ak-R0; Sun, 20 Nov 2022 13:53:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=iXfnaXh6y0ysQ+q427RAlReGKt30i7jqzM4qH8+GCHU=; b=Dmq6vfdkQHKj SlkN7Cx7nROnYSVSRsc7+RIGLBSW5Smgev5twTXOZyyhFn+smkPM5Bp2th1XWITJ0yMbqirma1DZj +cbTUX09ewqT1sUcqvVEAg2d1W6CakUBh98LOEsdUA0sSxGWcKvfi1F3OuylnseAPGm3akxO6Lq7d V8aVzYj1sI+0wmkbLU4KGFc5ZH2rwBAlOuYNt0rMC7y12yYyE/SCbdKsZkfpUVO5RHe59+CALF8RU pLBXiNo/3xLU1Kw1f81+I/BU1JuILoxw5He3t/khqe1OuEEODVqK+fMvYs9CZZKeHktvVf+D/EHc9 5wXEQ0IJtS7Bz3ztjDko7A==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owpRS-00023f-Q4; Sun, 20 Nov 2022 13:53:26 -0500 Date: Sun, 20 Nov 2022 20:53:31 +0200 Message-Id: <83pmdh4fv8.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Sun, 20 Nov 2022 13:30:41 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: Gregory Heytings , 59347@debbugs.gnu.org > Date: Sun, 20 Nov 2022 13:30:41 -0500 > > >> I'd have to investigate this, is it really worth the effort given that a > >> proper fix has already been found? > > I'd like to hear Stefan say that this is fixed on his system as well. > > As mentioned in my other message, it does fix it for me. Good to know, thanks. > > Thanks, it's indeed the other cases that I worry about. We had a lot of > > changes in this area which solved one problem only to create others. > > BTW, when scoring fonts, I'd expect that the different weights get > turned into a number and we then look at the difference between the > requested number and the font's number. We do that, yes. But the problem is not the conversion to numbers, the problem is the balance between the numerical value of a given difference in weight vs the numerical value of a given difference in width or slant. They should follow some reasonable considerations of selecting suitable fonts in various use cases. When we start considering 'normal' in addition to 'medium', or vice versa, we introduce changes into the relative scores of fonts, and the results could be not what we want. > [ tho, to be honest, > I have no idea which of `regular`, `normal`, and `medium` is supposed to > be heavier or lighter. See the beginning off font.c, where the numerical values we use are spelled out. > The same problem can affect the width attribute where many of the possible > choices seem to use just arbitrarily different names for the same thing. We score by values, not by names. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 13:54:22 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 18:54:22 +0000 Received: from localhost ([127.0.0.1]:44632 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owpSQ-00074y-9d for submit@debbugs.gnu.org; Sun, 20 Nov 2022 13:54:22 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34538) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owpSO-00074k-M2 for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 13:54:21 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owpSJ-0002dq-9v; Sun, 20 Nov 2022 13:54:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ls6lp4wsx8kaklT9RWhrhNniVfvkps9m3rwwNzlv8rg=; b=cqAx0ZIr1Esa x0z1fn+t11hjnHBZv0JKsdkwJXSTgmHDI/rQ1yAfIqagbXBncU777dbfAVgUEfzNCh7MvEQ2skG3t lDo+L9OMagubjV0sC0fr3DwR9qPJ/vc4Z6tNAq+Eh+EWfQo4l4Ww7sRbGiBYVWRBZmWVmD6qs+rUB 2jj1r0F6+SuYoEKmtdAqwR5Y5uP+59SWjEmS1CLk+/G+D3EUDY8uphoAVK+KNnqpFsKI55Io2OBJ2 xkrkf3FwzfsQ5l2IlQrK+LdhJJr5ggs5pPUWaqYCvY1yp7pxxUcCsbjtFvNm0nLeQAmlf6gkb2tXD SUlcNRldRjRFpUKTymeRPA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owpSI-00027O-QH; Sun, 20 Nov 2022 13:54:15 -0500 Date: Sun, 20 Nov 2022 20:54:25 +0200 Message-Id: <83o7t14ftq.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Sun, 20 Nov 2022 13:31:52 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: Gregory Heytings , 59347@debbugs.gnu.org > Date: Sun, 20 Nov 2022 13:31:52 -0500 > > > Thanks, it's indeed the other cases that I worry about. We had a lot of > > changes in this area which solved one problem only to create others. > > That's why I think we should make an effort to provide test cases (even > though it's clearly going to be tricky). "Tricky"? I don't even know how it would be possible. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 14:45:23 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 19:45:23 +0000 Received: from localhost ([127.0.0.1]:44693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqFn-0008OY-D2 for submit@debbugs.gnu.org; Sun, 20 Nov 2022 14:45:23 -0500 Received: from heytings.org ([95.142.160.155]:51898) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqFl-0008OQ-Lg for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 14:45:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668973520; bh=u7okC0nlN7tVS92VTMaRlb7zj7vQQuEY6L2Cpp6UPzo=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=SOGDG5QvvC3mnLDqZHbP/XfLh3Cm3AKXQKf6UUFGvfBslEp/fn/shCUgZHPhk4bVa a3qIV/jkcLEr07ZezjaEOybIt8uZ5QzueF5/olNm5uWekL7wjEMoUqsZxR4hjX3WAy d2jxR0CoMNeJOYFpoSdZWtQixM8rVsMjGhcHO3bvgz1cmSEC9uO/EIwidKpuqqBLO2 0OWm3YJFD3Wsxh2yxhK/tHjZ2FUqJ87JRxdbyR1/l8hv7Pgc21pL5NTMfmhIXL37+0 KSIyYBpX/fF8N7Owfmt2bkUsY6jPIaE6x5zZYNYM3J/H7Q3pgOPl9GbgXGnAY1YjsZ sA/7qV9725KMw== Date: Sun, 20 Nov 2022 19:45:19 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83sfid4hfu.fsf@gnu.org> Message-ID: <7cc9e03786a696f1a3e7@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e037869a7335b0f1@heytings.org> <83sfid4hfu.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >>> No, the spec was -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*, so >>> any weight should be okay. See Stefan's original recipe. >> >> It's the spec of the default face, so its realization takes place >> before the realization of the other one (DejaVu Sans), and the medium >> weight is selected. > > Yes, but why medium? Is that the default (I don't think so)? > Because -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* only matches two weights: medium and bold. From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 14:46:03 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 19:46:03 +0000 Received: from localhost ([127.0.0.1]:44697 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqGQ-0008Px-NE for submit@debbugs.gnu.org; Sun, 20 Nov 2022 14:46:02 -0500 Received: from heytings.org ([95.142.160.155]:51906) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqGP-0008PK-8i for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 14:46:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668973560; bh=AggG3bNQRrPwrbByfNVyrrMcRn7Jk7E2j57TDmQbKA4=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=kIKYre6xdQhIs4JemKXNTJDLWqVVWu6WHKfSgrgkZ6jbMZzkJdX204JiywnM2N9ke 57Jfy66tkYlzbBhjMUWRfm5DvbJ+xIG7hKCZOubu2aLMjtrwL+Rvs1bVvFVfBp52c9 4AIs3WhaKezzhD3ovmtf/O607BJxCxZLLjI8onBhdreg76l+qMYjm6VytiWW4BCdGa ekE0kXnxDhdqyJQntdhF0l5096v1RIMuNIWuiEuUQF0AUWW3iKZOjAaK4Uj0HtkT1e 8qMflAsaA/dA5aLXgh6fLz1LyE4utPYd7rvSBvzy5eiBqNmO2V+2QBGCFGGeo66DD2 WE+HLObZnUPig== Date: Sun, 20 Nov 2022 19:46:00 +0000 From: Gregory Heytings To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: <7cc9e037861402e6b468@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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 (-) >> Stefan, could you please try the attached patch and see if it fixes >> your problem? (It does here, with your recipe.) > > It works for me, indeed! > Great, thanks! From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 15:01:24 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 20:01:24 +0000 Received: from localhost ([127.0.0.1]:44707 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqVH-0000O5-Pv for submit@debbugs.gnu.org; Sun, 20 Nov 2022 15:01:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqVG-0000Ns-00 for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 15:01:22 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owqVA-0002CV-Pa; Sun, 20 Nov 2022 15:01:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=JLYMA9S0mVSFC4gk7HiyZY5WvhjkX9hUj88qaRyCRrs=; b=QaVIqq0CiCUu TWo3Zikc8rK5fnChlQk3/yrE6dPEKsYqydQcL8p0imGXX5Xi71nNsVITanj9JgijiRNajM8bD5w1L GQjOTLeAvVKeIipeogfTO/PGxwYYiox5C/rS505vJNOIJyTHqQ1ue2rGbmqIO3px1HOWzN+yVGVx/ /V1NG9vmKzqf+y5Vst8kUJ1QRMHvTqebNN4qqyY/TctWW1NOJpjbpGb2cvHfKO7QHpeyDEXlx+ljN nTampcu1miXx9HH9Qm9D99kGSlTEZEls5xMnYiGlRpQ1FsykZEW7niHLUFG/tkwzw7ORZGmKXba0u dYIb7tE1ZpCWans83tM/TQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1owqVA-0001WS-09; Sun, 20 Nov 2022 15:01:16 -0500 Date: Sun, 20 Nov 2022 22:01:25 +0200 Message-Id: <83ilj94cq2.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e03786a696f1a3e7@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 19:45:19 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e037869a7335b0f1@heytings.org> <83sfid4hfu.fsf@gnu.org> <7cc9e03786a696f1a3e7@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 19:45:19 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > >>> No, the spec was -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*, so > >>> any weight should be okay. See Stefan's original recipe. > >> > >> It's the spec of the default face, so its realization takes place > >> before the realization of the other one (DejaVu Sans), and the medium > >> weight is selected. > > > > Yes, but why medium? Is that the default (I don't think so)? > > > > Because -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* only matches two > weights: medium and bold. Where is that coded? Or is that something general about semicondensed width fonts? From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 15:09:04 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 20:09:04 +0000 Received: from localhost ([127.0.0.1]:44712 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqch-0000Yf-Nq for submit@debbugs.gnu.org; Sun, 20 Nov 2022 15:09:04 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:38471) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owqcc-0000Y9-Sh for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 15:09:03 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id B3B521000E1; Sun, 20 Nov 2022 15:08:52 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 64FC1100054; Sun, 20 Nov 2022 15:08:51 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1668974931; bh=lZc3k3b0yxdvMAtjqHUQl+m8z2Cle5mGlso6WcfAMeQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=hUiXUSI9EHAxfD/cfe89PL0I9CrCdRQi8uH7ZHGEiov31AOgTjmpdQs5dtt2CA+Y1 iWxprQhRKDXusSaWRCmlEfkj0QNV0FcJpb35t+e++lossLNc2kXBwyBzGiBomn5HM+ sukulWHnH3BC5h30ZWcfaIoZKktRY0+KUIH9poysfXkJw3l7RKHSiSZQfv6zDb/lrA oVPbeQ9OjFGiPNYw721gP7nMK1ltlBTeOC4LlCBEswE06q2uST2fLxmPVIRzGBSj2m VaaDWiQhkqmfB52/htFOAIC4aoGYFWVx2pQ6hI6i24QLU7uMScw39RhX8PpReAs1nv EJVNuQRQqXp4A== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 318611204DF; Sun, 20 Nov 2022 15:08:51 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83ilj94cq2.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 20 Nov 2022 22:01:25 +0200") Message-ID: References: <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e037869a7335b0f1@heytings.org> <83sfid4hfu.fsf@gnu.org> <7cc9e03786a696f1a3e7@heytings.org> <83ilj94cq2.fsf@gnu.org> Date: Sun, 20 Nov 2022 15:08:48 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.037 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , 59347@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: -3.3 (---) Eli Zaretskii [2022-11-20 22:01:25] wrote: >> Because -misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-* only matches two >> weights: medium and bold. > > Where is that coded? Or is that something general about semicondensed width > fonts? It's simply a property of the `misc-fixed` font which only comes in two variants of weight. Stefan From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 15:45:23 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 20:45:23 +0000 Received: from localhost ([127.0.0.1]:44750 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owrBr-0001RG-6e for submit@debbugs.gnu.org; Sun, 20 Nov 2022 15:45:23 -0500 Received: from heytings.org ([95.142.160.155]:51988) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owrBl-0001R4-BG for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 15:45:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668977116; bh=K/l4xTQUFAY3af7Gu9HtMCAPf6et/GU42M8NleqrQ50=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=FNsmWDR7Eubi47ujBMKv86N5w6HJA7o+IrkvLJGaEPehoCfHRR9hola5+gN0RKenH utjByXMXqnwT+I5PnRwQXeWWpnB/mhhhkdk4xnATC4q6j2YkzShm808LoRpdpyqi24 EDLQHorjcQbofago56ITLk5W7vDtLkhn7rnWpgGy0pEyXckJ0pgAMn3c6nYrMvR0v2 rWjpyW+uafzAO03gfxByQzwM2wxnpyMs7IKvPVxkhhEIyv7+FyyYPkRYjqSoSznlhG H2XmNvbO02SiOEcMn5ylfFXEami9Qvc4pQydQhurdkkG6zBKn0KFGRoLdL723xj1ca Y4jNwwyH9P/cg== Date: Sun, 20 Nov 2022 20:45:15 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <7cc9e037869a7335b0f1@heytings.org> Message-ID: <7cc9e03786669b4339b2@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e037869a7335b0f1@heytings.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >>> I'd have to investigate this, is it really worth the effort given that >>> a proper fix has already been found? >> >> I'd like to hear Stefan say that this is fixed on his system as well. >> And yes, I'd still be interested in understanding why asking for >> another foundry fixed or worked around the problem. > > Okay, I'll try to find out if I have time. > Well, I cannot investigate this myself. I just tried src/emacs -Q --eval \ '(progn (custom-set-faces `(variable-pitch ((t (:family "DejaVu Sans" :foundry "PfEd"))))) (add-to-list `default-frame-alist `(font . "-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*")) (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch)))' and the font I got is -PfEd-Terminus-medium-normal-normal-*-12-*-*-*-c-*-iso10646-1. I removed the Terminus font from my system, and I got "no font available". From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 20 16:49:50 2022 Received: (at 59347) by debbugs.gnu.org; 20 Nov 2022 21:49:51 +0000 Received: from localhost ([127.0.0.1]:44795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owsCE-00033M-HN for submit@debbugs.gnu.org; Sun, 20 Nov 2022 16:49:50 -0500 Received: from heytings.org ([95.142.160.155]:52056) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1owsCB-000337-RG for 59347@debbugs.gnu.org; Sun, 20 Nov 2022 16:49:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1668980986; bh=cP0o0nYNmyPIkkxvCPMgWx8DVR9Pe2aif+1Dvi6ytmE=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=s/i5zWWlJRiHZCza8yiKPclYIH7pqXo2WSw+Hcmae55Sz6G0T1NvJX/2nSNxXGcFb YUtXvWaKR/6LaWrwKEGWISON4WAGeR/zJoOj824NUmTjXUX7Sx1cnHnYI2fz3TyS/c udx8uOyh4wP35gqRupx5DQYqMW/x/PhwKj6F3f4NF1MJgwQURNOmrOZvOi/1yYe42+ lsDekycQq1M/+fsB+BhJmiMkToKuXzHcPDi0GYjK3EHU6ZQ0me+XOeA3mTaSMxY7lz adD2mT2DSortKE2Hi2+WXjvIGNmBia6HAbQtMmuKxW6+PuDDtP4wjL+hDBV83yx8ot HOXBg1Hy93yNQ== Date: Sun, 20 Nov 2022 21:49:46 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83tu2t4ie9.fsf@gnu.org> Message-ID: <7cc9e03786e324ff82ef@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >>> Yes. We need to make sure the scoring will not now sometimes prefer >>> the medium weight where the regular weight exists and is a better >>> match. Not only should it not reject a legitimate font, but also not >>> prefer another font due to this change. IOW, the change should >>> ideally only affect the cases where the 'medium' weight doesn't exist, >>> and we therefore prefer to use 'regular' rather than reject the >>> family. >> >> I don't think the case you have in mind could happen in the scenario of >> this bug or bug#57555 (if a regular weight exists and is a better match >> the loop in font_find_for_lface will exit with that better match), but >> indeed with some other call sequence this could perhaps happen. I'll >> see what I can do. > > Thanks, it's indeed the other cases that I worry about. We had a lot of > changes in this area which solved one problem only to create others. > After looking at this a bit closer, I don't see how font_score could be changed, or even why it should be changed. It has only two callers: font_match_p and font_sort_entities. The former only checks whether its return value is > 0 (IOW it only checks whether the font is an exact match or not). The latter has only two callers: list-font and font_select_entity. The latter has only one caller: font_find_for_lface. So it seems to me that there are no execution paths that could be negatively affected by this change (which is in font_find_for_lface). Also, AFAIU, a font whose weight == spec_prop[weight] is in principle preferred to a font whose weight != spec_prop[weight]. However, a font whose weight != spec_prop[weight] could in practice be preferred to a font whose weight == spec_prop[weight] when it is a better match according to the other sorting criteria (size and width, and possibly type and slant). How could (and why should) this be changed to make sure that the scoring will not sometimes prefer the medium weight when the regular weight exists? I'm probably missing something, but what? From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 07:27:30 2022 Received: (at 59347) by debbugs.gnu.org; 21 Nov 2022 12:27:30 +0000 Received: from localhost ([127.0.0.1]:45674 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox5tZ-0002yx-Qp for submit@debbugs.gnu.org; Mon, 21 Nov 2022 07:27:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35966) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox5tV-0002yi-Ry for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 07:27:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox5tP-0000DI-Ef; Mon, 21 Nov 2022 07:27:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=cOXU3rbZyNiHx1qF9LZO0Y4ET9oucyVsk948IgKdjZI=; b=hZECdRUbBuv1 WiWsvESo+W2P3dyWpPHvYxC6ttIemhc2wLRntx0NUf4m4QTv3d3XnMVpgaczJX13CrSH2QQbuzgWQ UgFt6vahAjF+nMceJnVKtgC49Tzn7dDsqMe8o4OBZMBP9FlaMJ2ge1n6Ku4SNYCa7Bf1wc5Mlf6gT qBUBoF0mGEwBb2SzMDCK689n7tKEQIwAOKRcgzCh9yvkF3eHG4KpJnNsIc2A5VC0sxARfY2Li5wsU +R2xY2GsxX9sRZJBaLfuLciS+nFwRQWoSetBm8yJXLCd8VsDZXHwLs3vkR1o6TltmNPV0FjW0s/tr tLdD0cufHC0i8wbgnuT8Qg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox5tO-0003SF-5D; Mon, 21 Nov 2022 07:27:19 -0500 Date: Mon, 21 Nov 2022 14:27:27 +0200 Message-Id: <83edtw4hn4.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e03786669b4339b2@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 20:45:15 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e037869a7335b0f1@heytings.org> <7cc9e03786669b4339b2@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 20:45:15 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > >> And yes, I'd still be interested in understanding why asking for > >> another foundry fixed or worked around the problem. > > > > Okay, I'll try to find out if I have time. > > > > Well, I cannot investigate this myself. I just tried > > src/emacs -Q --eval \ > '(progn > (custom-set-faces `(variable-pitch > ((t (:family "DejaVu Sans" :foundry "PfEd"))))) > (add-to-list `default-frame-alist > `(font . "-misc-fixed-*-r-semicondensed-*-13-*-*-*-*-*-*-*")) > (font-lock-mode -1) > (insert (propertize "hello" `face `variable-pitch)))' > > and the font I got is > -PfEd-Terminus-medium-normal-normal-*-12-*-*-*-c-*-iso10646-1. I removed > the Terminus font from my system, and I got "no font available". Thanks for trying. I guess we will have to wait for Stefan to dig into what happens on his system. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 07:51:09 2022 Received: (at 59347) by debbugs.gnu.org; 21 Nov 2022 12:51:09 +0000 Received: from localhost ([127.0.0.1]:45708 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox6GS-0005qO-So for submit@debbugs.gnu.org; Mon, 21 Nov 2022 07:51:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53750) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox6GR-0005q7-LV for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 07:51:08 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox6GM-0004hJ-BB; Mon, 21 Nov 2022 07:51:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=7J3YN/1NFo4p3b6Yk/91/WHyucdHJVj2Ai83jKsTllM=; b=K7XS2BAAB5SQ OwvfrnegfAJhnYA6ZQr9FCZzg58my8gwh9HHq7vFQ0VRcbjiLitD5CxquwjerBrwcPJqdGTrVB5JJ 7uiACCIAm0R7UQWaYb3pS2Ux/G/ZDaVBPku5BTW0VKvz67BgGMVkdfiWx+QW1Kf5NNHRHlTuSxjPE /fMM4b1RS+t/QXN3WF348zMqIwOSHljaRTCqKrWMhl3sKHa+7XkQiW4qaB2+++VELWjEUHayOtpAM 85QkIXQ3yI1Gll3uoyTntnCJLT3Jt7xjVoCNcL33UL/wYl+SUGlCXA58TQTLDj3+djYJiDp/nnhE1 k0ZQ3Asw/Xw0O+6Sc7uuIg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox6GJ-0002Xr-Kf; Mon, 21 Nov 2022 07:51:01 -0500 Date: Mon, 21 Nov 2022 14:51:10 +0200 Message-Id: <83bkp04gjl.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <7cc9e03786e324ff82ef@heytings.org> (message from Gregory Heytings on Sun, 20 Nov 2022 21:49:46 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Sun, 20 Nov 2022 21:49:46 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > Also, AFAIU, a font whose weight == spec_prop[weight] is in principle > preferred to a font whose weight != spec_prop[weight]. However, a font > whose weight != spec_prop[weight] could in practice be preferred to a font > whose weight == spec_prop[weight] when it is a better match according to > the other sorting criteria (size and width, and possibly type and slant). > How could (and why should) this be changed to make sure that the scoring > will not sometimes prefer the medium weight when the regular weight > exists? I thought the answer to your question would be "adjust the scoring such that what we don't want to happen, doesn't". One way of doing that is by boosting the score when there's an exact match in attributes which we consider "more equal than others". I guess weight is one of them, and perhaps the only one. Btw, another conceptual issue I have with your patch is that it treats 'medium' and 'regular' asymmetrically (AFAIU): if we see 'medium', we also consider 'normal', but not vice versa. Why the asymmetry? why not always consider the other when we see the one? From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 09:49:03 2022 Received: (at 59347) by debbugs.gnu.org; 21 Nov 2022 14:49:03 +0000 Received: from localhost ([127.0.0.1]:45990 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox86Z-0004xe-9X for submit@debbugs.gnu.org; Mon, 21 Nov 2022 09:49:03 -0500 Received: from heytings.org ([95.142.160.155]:53006) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox86X-0004x7-AW for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 09:49:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669042139; bh=cjYdf2mIXMzaB7zcuDlQ+L57n+L+0NOuQTFWHRHSOo8=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=6ZSV4eX1kvHyHg84ClW8onUQn2jce/RWDpHvNgyTxEUTQzig3pNVLtR2juAn4h5SO KzDbZoEAK+JSAFGOfdAOHmMnit/MBwsJUMxZJ4AocbZo0XEFo7OjdWtcPj3smVQKk8 p/miFzgWyoQgUF0C8A3yZSKcg/neveGxuR1N1E21jAst3hr+qGBktt4Qv2Ytdod+mM sU9nbAiQc60oRgVGS/ZJNsUEb9bdsIJVw0urYAVB6/rsSaDBIusvyF+uVo1Ri5Lgtj 8I5Gvg7wQwO6sKuro/OAkWAd7Ln8C3c+z64nQxMBYFCR++gGej2Umv13oPG6HS/xBO dMHfTg+FkfpWg== Date: Mon, 21 Nov 2022 14:48:59 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83bkp04gjl.fsf@gnu.org> Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> Also, AFAIU, a font whose weight == spec_prop[weight] is in principle >> preferred to a font whose weight != spec_prop[weight]. However, a font >> whose weight != spec_prop[weight] could in practice be preferred to a >> font whose weight == spec_prop[weight] when it is a better match >> according to the other sorting criteria (size and width, and possibly >> type and slant). How could (and why should) this be changed to make >> sure that the scoring will not sometimes prefer the medium weight when >> the regular weight exists? > > I thought the answer to your question would be "adjust the scoring such > that what we don't want to happen, doesn't". > > One way of doing that is by boosting the score when there's an exact > match in attributes which we consider "more equal than others". I guess > weight is one of them, and perhaps the only one. > Hmmm... AFAIU that's already the case: when there's an exact match (e.g. we're expecting a medium font and the font is medium) the weight field for that font is 0, and when there's an inexact match (e.g. we're expecting a medium font and the font is regular) we store the difference between the two weights (which is 20 in this case) in the weight field. It does not seem possible (at least not without adding a lot of complexity) inside font_score to know that the font only has a medium variant and that if we're expecting a regular font, we should therefore consider that the font is an exact (or "less inexact than if the font had a regular variant") match. And, even if we don't do that, in that case and similar ones a medium variant will be better scored than a semi-bold or semi-light one. All in all, it seems to me that we should not change font_score now. > > Btw, another conceptual issue I have with your patch is that it treats > 'medium' and 'regular' asymmetrically (AFAIU): if we see 'medium', we > also consider 'normal', but not vice versa. Why the asymmetry? why not > always consider the other when we see the one? > That's correct, indeed. The reason (which is perhaps not convincing enough?) is that fonts with an explicit 'medium' variant are less common than fonts with an explicit 'normal' variant. So if we're trying to find a 'normal' font, the likelihood that a 'medium' font would be a better match than a 'normal' font is low. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 10:08:36 2022 Received: (at 59347) by debbugs.gnu.org; 21 Nov 2022 15:08:36 +0000 Received: from localhost ([127.0.0.1]:48468 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox8PU-0008Ov-9s for submit@debbugs.gnu.org; Mon, 21 Nov 2022 10:08:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ox8PQ-0008Oe-IN for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 10:08:34 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox8PF-0002NO-4u; Mon, 21 Nov 2022 10:08:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Dmgc5DmXdODlfq13Xvo8i4ISMRgmWw1z55F32jk+dGo=; b=h0LRTtVOZhDx 8zq84JDaKW79/SDJHHJB3mVBbVb4kE9aIVE7jNTaVYS7TM+kvlYWHqc2vq2QBzhHoRPozSnk/AdNR CjdaMN7FU6a2oG/SeK4U8XsKZa9p85IRDCOaLyGteD0YlFWlg8cQh1km/zfExWznkP1ONmS1fKaDb ARLMmXP3uxwvKgqqrnduJl+46ZTBVjeARp0N9gD/fKD0IGjlRoRAIvQNrXq8+VYfcGLn7ScNmofni 2BhhaL9xJ4Lp2p/x/Q5NjkuccDbJEuoNESwCnVk6lerc7dHbrm8NsgrE/bVW7lDFZXu5kFb15QyNv WWD5twR5Qjgb4K/q8DHE9Q==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ox8PE-0004H9-8Y; Mon, 21 Nov 2022 10:08:20 -0500 Date: Mon, 21 Nov 2022 17:08:30 +0200 Message-Id: <83leo42vm9.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 21 Nov 2022 14:48:59 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Mon, 21 Nov 2022 14:48:59 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > All in all, it seems to me that we should not change font_score now. OK, thanks. > > Btw, another conceptual issue I have with your patch is that it treats > > 'medium' and 'regular' asymmetrically (AFAIU): if we see 'medium', we > > also consider 'normal', but not vice versa. Why the asymmetry? why not > > always consider the other when we see the one? > > > > That's correct, indeed. The reason (which is perhaps not convincing > enough?) is that fonts with an explicit 'medium' variant are less common > than fonts with an explicit 'normal' variant. So if we're trying to find > a 'normal' font, the likelihood that a 'medium' font would be a better > match than a 'normal' font is low. I understand, but are there any downsides to making it symmetrical? My only other comment is that perhaps the consideration of 'regular' when 'medium' was required (or vice versa) should be controlled by a variable that people could tweak from Lisp. This would help us if this change causes, or is suspected to cause, some regression in some case. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 18:34:26 2022 Received: (at 59347) by debbugs.gnu.org; 21 Nov 2022 23:34:26 +0000 Received: from localhost ([127.0.0.1]:49121 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxGJ0-0004BC-1q for submit@debbugs.gnu.org; Mon, 21 Nov 2022 18:34:26 -0500 Received: from heytings.org ([95.142.160.155]:53592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxGIu-0004B0-FT for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 18:34:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669073658; bh=LGXL1wm7doMttobpFyqHRePLnxwK5NaBWOS4El2/YEE=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=znTdqrDq1B2uPoJ9ESmD+msUdmt4miy/D4KVF+tOvZQHrWB+FSvhKd+tPktWE7LPB nlJJ45vKsOtQ2yNE7m35UtcmcxlZz/qrgF1jMcUg2XqcQwimak7qo7Cfe1Jc124ToE +3TLsaxB9qrhTcbTscYTdNpL96gR1kl2xAjf9B3bN4huMqxXjtsJ4p14JnGncqI2Cw uqJAzfYKEbWYmDrUIC645gKEjTH92zbtHdewKpRmMvzh2zGIKWlu4PGzKk6GsU5BJr fkvL921UTzopRu4nGsrfFfeom1latJDXUG1dsFu8g+Mzqh201lFmTsJAd0cuaY3t8X eLtAWEHaykOjw== Date: Mon, 21 Nov 2022 23:34:18 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83leo42vm9.fsf@gnu.org> Message-ID: References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="EBMEAP53xz" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) --EBMEAP53xz Content-Type: text/plain; format=flowed; charset=us-ascii I did some further testing to answer your previous email, and I now think that my previous patch is a half-measure, and that TRT would be to simply ignore the font weight specified in the default face while searching for other fonts. Consider the following recipe: emacs -Q M-: (fancy-startup-screen) RET and now evaluate the following lines in turn: (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-heavy) ;; 1 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'heavy) ;; 2 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-bold) ;; 3 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'bold) ;; 4 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-bold) ;; 5 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'medium) ;; 6 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'normal) ;; 7 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-light) ;; 8 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'light) ;; 9 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-light) ;; 10 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'thin) ;; 11 (If you don't have the Source Code Pro font on your system, I'm sure you can find another font with more weight variants with which you will observe a similar effect.) With current master, the variable-pitch face is realized as follows: - with 1-3: -ADBO-Source Code Pro-black-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is a monospace font - with 4: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font - with 5: -ADBO-Source Code Pro-semibold-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font - with 6: -urw-nimbus sans l-regular-r-normal--29-210-100-100-p-158-iso8859-1, which is a variable pitch font but without anti-aliasing - with 7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font - with 8-9: -ADBO-Source Code Pro-light-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font - with 10-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font That can't be right. Only 4, 7, and 10-11 correspond to what is expected for that face, namely a variable pitch font. Fixing the 'medium' case (as my patch does) only improves 7. Fixing the other cases would amount to do something similar for each possible weight (e.g. "also try 'bold' after trying 'ultra-bold'"), which in fact amounts to ignoring the weight in spec. When the weight is ignored in font_find_for_lface, the variable-pitch face is realized as follows: - with 1-5: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1 - with 6-7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1 - with 8-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1 Which is clearly TRT. New patch attached. --EBMEAP53xz Content-Type: text/x-diff; name=Unset-the-weight-in-font-specs-when-searching-for-a-.patch Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: attachment; filename=Unset-the-weight-in-font-specs-when-searching-for-a-.patch RnJvbSA3ZThmYjVjZWJkNDAzMWQ5NDc5NDBhZThlZWVmMGEyYjcyZmI0Y2Jh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBNb24sIDIxIE5v diAyMDIyIDIzOjI2OjA3ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0 IHRoZSB3ZWlnaHQgaW4gZm9udCBzcGVjcyB3aGVuIHNlYXJjaGluZyBmb3Ig YSBmb250Lg0KDQpCZXR3ZWVuIGNvbW1pdHMgYmYwZDNmNzZkYyAoMjAxNCkg YW5kIDZiMWVkMmYyYzkgKDIwMjIpLA0KcmVhbGl6ZV9ndWlfZmFjZSBjYWxs ZWQgZm9udF9sb2FkX2Zvcl9sZmFjZSB3aXRoIGFuIGVtcHR5IG9yIHBhcnRs eQ0KZW1wdGllZCBmb250IHNwZWMsIGkuZS4gaXQgaWdub3JlZCBhIHBhcnQg b2YgaXRzIGF0dHJzIGFyZ3VtZW50LiAgVGhlDQpyYXRpb25hbGUgZ2l2ZW4g aW4gYnVnIzE3OTczLCB3aGljaCBsZWQgdG8gYmYwZDNmNzZkYywgaXMgbm90 IGNsZWFyLg0KSG93ZXZlciwgNmIxZWQyZjJjOSBsZWFkcyB0byBzdWJvcHRp bWFsIGZvbnQgY2hvaWNlcyB3aGVuIHRoZSBmb250DQpjaG9zZW4gZm9yIHRo ZSBkZWZhdWx0IGZhY2UgaGFzIGEgd2VpZ2h0IHRoYXQgaXMgbm90IHN1cHBv cnRlZCBieQ0Kb3RoZXIgYXZhaWxhYmxlIGZvbnRzIG9uIHRoZSBzeXN0ZW0s IHN1Y2ggYXMgJ21lZGl1bScgb3IgJ2hlYXZ5Jy4NClRoZXJlZm9yZSwgdGhl IHdlaWdodCBpbiB0aGUgc3BlYyBhcmd1bWVudCB0byBmb250X2ZpbmRfZm9y X2xmYWNlDQptdXN0IGJlIHVuc2V0Lg0KDQoqIHNyYy9mb250LmMgKGZvbnRf ZmluZF9mb3JfbGZhY2UpOiBVbnNldCB0aGUgd2VpZ2h0IG9mIHRoZSBmb250 IHNwZWMuDQpGaXhlcyBidWcjNTc1NTUgYW5kIGJ1ZyM1OTM0Ny4NCi0tLQ0K IHNyYy9mb250LmMgfCA0ICsrKysNCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNl cnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9zcmMvZm9udC5jIGIvc3JjL2Zv bnQuYw0KaW5kZXggNmU3MjBiYzI4NS4uZmM4MDE5ZmUxMyAxMDA2NDQNCi0t LSBhL3NyYy9mb250LmMNCisrKyBiL3NyYy9mb250LmMNCkBAIC0zMDAzLDYg KzMwMDMsMTAgQEAgZm9udF9maW5kX2Zvcl9sZmFjZSAoc3RydWN0IGZyYW1l ICpmLCBMaXNwX09iamVjdCAqYXR0cnMsIExpc3BfT2JqZWN0IHNwZWMsIGlu dA0KICAgICB9DQogICBBU0VUICh3b3JrLCBGT05UX1NJWkVfSU5ERVgsIFFu aWwpOw0KIA0KKyAgLyogQWxzbyBpZ25vcmUgdGhlIGZvbnQgd2VpZ2h0LCB3 aGljaCB3aGVuIHNldCBsZWFkcyB0byBzdWJvcHRpbWFsDQorICAgICBmb250 IGNob2ljZXMuICBTZWUgYnVnIzU5MzQ3LiAgKi8NCisgIEFTRVQgKHdvcmss IEZPTlRfV0VJR0hUX0lOREVYLCBRbmlsKTsNCisNCiAgIC8qIEZvdW5kcnkg c3BlY2lmaWNhdGlvbiBhbHRlcm5hdGl2ZXM6IGZyb20gdGhlIG1vc3Qgc3Bl Y2lmaWMgdG8gdGhlDQogICAgICBsZWFzdCBzcGVjaWZpYyBhbmQgZmluYWxs eSBhbiB1bnNwZWNpZmllZCBvbmUuICAqLw0KICAgZm91bmRyeVswXSA9IEFS RUYgKHdvcmssIEZPTlRfRk9VTkRSWV9JTkRFWCk7DQotLSANCjIuMzUuMQ0K DQo= --EBMEAP53xz-- From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 19:34:13 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 00:34:13 +0000 Received: from localhost ([127.0.0.1]:49168 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxHEq-0005d0-S9 for submit@debbugs.gnu.org; Mon, 21 Nov 2022 19:34:13 -0500 Received: from heytings.org ([95.142.160.155]:53664) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxHEo-0005cp-AK for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 19:34:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669077248; bh=CjjGAu56YKITzmGXcDN7ln5U+vPWVVh3eGjw3u6NOmw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=Qom4zS+8wm15B149uihI/6w+HjZDSuNE/xIdn2dBePl58ejNIryUiP9F2bSVKSglo NaQwbQMdpnLAfWYtiHhACQCi2Y5zjrox0XHO8bnZCIOkE1ma7gzQqJxu8qGVNNKRp8 RIWVZw6viytaVGUwtnTEI97KmCHWN8eXMZ9Yp0USUYn1FD4nVAjv7aCMIkhXBf43eF 52RznqXTk6zvi7kBBJY3TXeOjmWLT3z3TxxC5vv9IuJol3yq13NjNqTMdyx6WBDDk3 oh+GnDVJM1ZX+qwJ4tUPC9nxWu4MQVU2orvoXPk8tDI24CO3uoyjzaK54LVs4kM0JV OZ0em9wezsopA== Date: Tue, 22 Nov 2022 00:34:06 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: <0d1ea3007fd94b7ae0b1@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) By the way, I suspect (but do not have a recipe right now) that the same bug exists with the :width and :slant attributes (namely, that setting the font for the default face with an "exotic" value leads to suboptimal/wrong font choices for other faces), and that they should also be set to nil in font_find_for_lface. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 21 22:05:19 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 03:05:19 +0000 Received: from localhost ([127.0.0.1]:49315 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxJb4-00010y-Ok for submit@debbugs.gnu.org; Mon, 21 Nov 2022 22:05:19 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:30104) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxJb0-00010e-15 for 59347@debbugs.gnu.org; Mon, 21 Nov 2022 22:05:17 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 2DDC7805D5; Mon, 21 Nov 2022 22:05:08 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 3DD74805B2; Mon, 21 Nov 2022 22:05:06 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1669086306; bh=RwYZdRn8c3X3npJ2ndCrgsAhACtSedsXO90uCUrb/2Y=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=oPjTfN8gK3JKU08Cdb8LxFv+67LVrxl3ZMz95eZAG2fsV4I3qHc1sawLIaXonytdP 00NLNaqtF7Jj1zf+6Szd0vTpNGBIpVck79z/AaLij4+8psPpee7xnP11biu9Hq97YT 2Wa8hVmVga5G3AZgi8oiQOChwMvdbsRyqm12kSmvRtFkeL10soui1iFVsaUdwDFyeP O8J4pD56IIOuPCcTro3FZJSueZeN04UUhCG5qfLFm3ezbpuPIJgMqt24zG+RYeBwFY fN9zAeTK3WuTCt8Dh2WhBpNKYSct293mPkiek5sRc/PowPdvsqakHgVrEQgYVCgF9j T/VGYbFAHE40Q== Received: from pastel (unknown [104.247.241.157]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E32671202E5; Mon, 21 Nov 2022 22:05:05 -0500 (EST) From: Stefan Monnier To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <0d1ea3007fd94b7ae0b1@heytings.org> (Gregory Heytings's message of "Tue, 22 Nov 2022 00:34:06 +0000") Message-ID: References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> Date: Mon, 21 Nov 2022 22:05:05 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL -0.201 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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: -3.3 (---) > By the way, I suspect (but do not have a recipe right now) that the same bug > exists with the :width and :slant attributes (namely, that setting the font > for the default face with an "exotic" value leads to suboptimal/wrong font > choices for other faces), and that they should also be set to nil in > font_find_for_lface. IIUC the way we manage choose fonts is that we ask for a list of fonts matching a particular pattern. If that list is empty we make the pattern more coarse and try again. And when the list is not empty we choose the best fit based on a score. So in essence, what you're saying is that we should rely more on scoring, and start with a coarser pattern right from the beginning? Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 01:42:17 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 06:42:17 +0000 Received: from localhost ([127.0.0.1]:49483 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxMz2-0006T0-ON for submit@debbugs.gnu.org; Tue, 22 Nov 2022 01:42:16 -0500 Received: from heytings.org ([95.142.160.155]:53998) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxMyz-0006Sq-O8 for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 01:42:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669099332; bh=qZbGF2Pobap67frTWTn5BaAxXQiRvvjgCYzEiHMotnA=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=ri8reHU+OnzyS60N7sR7JpRKgUQqpbYiuNv6kimhpnIwQQegh6BXgNgWRtQri2/Ia lb5ACb+UHzy2JJAeSUDI8OYZrRJlnF47r9Vlbu7S0rhpvEqhnZSHV6wXYYC6V+6wpp U0HYSzWlF6v+ojzBSbfA1UQIjj7X3Y7IE3QNhezNLY3iivoc1lbUsgt9cLp6Oryb6k DSuhMs8bEdILHHxR80g33INaoYigwQOm3hdg4clcXXLT8wl+5t8WC/2UOXNSWQl0nq cGvvmDfap1wJ4MBg8UqkAHBTxhzymRz05keF6GcEOyz5QDTh8d5WgG/zTuYy0/EGlU pPj5/mgpjSQkQ== Date: Tue, 22 Nov 2022 06:42:11 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <0d1ea3007fd94b7ae0b1@heytings.org> Message-ID: <0d1ea3007f2751b58d0e@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) I would go even further: scoring font candidates according to their weight, slant, width and size (by comparing the values of these attributes to the desired value of these attributes) is pointless unless the weight, slant, width and size are set to nil (are not "free variables") when building the list of fonts on which the scoring will be applied. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 02:59:29 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 07:59:29 +0000 Received: from localhost ([127.0.0.1]:49627 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxOBk-0002JA-U4 for submit@debbugs.gnu.org; Tue, 22 Nov 2022 02:59:29 -0500 Received: from heytings.org ([95.142.160.155]:54080) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxOBg-0002Iz-0W for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 02:59:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669103962; bh=vbFqPXPhf7iPAxvLcssZSo1CcgknyhDxKNS4Vzl6YrY=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=JAE5g32Cr12tsyZ5iTuxpOBuA8aQqUA4e9craOdW25Bo5yKg31Uu1MISJEdCNJzF5 Fs+Dd8w3Zr+hW8zsAR9TTRHEWQe+08ijrYn8UqPH5Ns5no1w3Pd+uGDzrC3ci8XXXC MYO4r6BJWPKMihgU6gEGMjuRD+PJQLH1HRsR6OUTkRNHRggs1pxsATLUEti7fRBmWT akRPJ2Sz41mdFc7f+xk2J7GVe/kFgK6SWqUXXSQ+8zdccFIsFYVIFelHI3LzF+pd7x KC8EtnH5GpsM/irYKcJ2AMhwJ81KJyuS9EAekO5xfZfeh374P5vGCD60l+rTs0FN+M NlEIXkO58hR2A== Date: Tue, 22 Nov 2022 07:59:22 +0000 From: Gregory Heytings To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: <0d1ea3007fb4172bc39c@heytings.org> References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="E2Tj3BnqNk" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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 (-) --E2Tj3BnqNk Content-Type: text/plain; format=flowed; charset=us-ascii >> By the way, I suspect (but do not have a recipe right now) that the >> same bug exists with the :width and :slant attributes (namely, that >> setting the font for the default face with an "exotic" value leads to >> suboptimal/wrong font choices for other faces), and that they should >> also be set to nil in font_find_for_lface. > > IIUC the way we manage choose fonts is that we ask for a list of fonts > matching a particular pattern. If that list is empty we make the > pattern more coarse and try again. And when the list is not empty we > choose the best fit based on a score. > Yes, that's roughly speaking what is happening indeed. Except that if we constraint, when we build it, the list of candidates to a specific weight and/or slant and/or width, scoring the candidates becomes pointless, because all candidates in the list will (by definition) be perfect matches. > > So in essence, what you're saying is that we should rely more on > scoring, and start with a coarser pattern right from the beginning? > What I'm saying (now) is that we should rely on scoring, not that we should rely _more_ on scoring. New (again) patch attached. --E2Tj3BnqNk Content-Type: text/x-diff; name=Unset-the-weight-slant-width-in-font-specs-when-sear.patch Content-Transfer-Encoding: base64 Content-ID: <0d1ea3007f242d54a0e4@heytings.org> Content-Disposition: attachment; filename=Unset-the-weight-slant-width-in-font-specs-when-sear.patch RnJvbSBkMjEwMTdjOGIyZmRmMDE3Zjc4MjE3YjM0ZTZhNTQxMWI2MDVlMzdj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBUdWUsIDIyIE5v diAyMDIyIDA3OjU4OjMwICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0 IHRoZSB3ZWlnaHQvc2xhbnQvd2lkdGggaW4gZm9udCBzcGVjcyB3aGVuIHNl YXJjaGluZyBmb3INCiBhIGZvbnQNCg0KQmV0d2VlbiBjb21taXRzIGJmMGQz Zjc2ZGMgKDIwMTQpIGFuZCA2YjFlZDJmMmM5ICgyMDIyKSwNCnJlYWxpemVf Z3VpX2ZhY2UgY2FsbGVkIGZvbnRfbG9hZF9mb3JfbGZhY2Ugd2l0aCBhbiBl bXB0eSBvciBwYXJ0bHkNCmVtcHRpZWQgZm9udCBzcGVjLCBpLmUuIGl0IGln bm9yZWQgYSBwYXJ0IG9mIGl0cyBhdHRycyBhcmd1bWVudC4gIFRoZQ0KcmF0 aW9uYWxlIGdpdmVuIGluIGJ1ZyMxNzk3Mywgd2hpY2ggbGVkIHRvIGJmMGQz Zjc2ZGMsIGlzIG5vdCBjbGVhci4NCkhvd2V2ZXIsIDZiMWVkMmYyYzkgbGVh ZHMgdG8gc3Vib3B0aW1hbCBmb250IGNob2ljZXMsIGluIHBhcnRpY3VsYXIN CndoZW4gdGhlIGZvbnQgY2hvc2VuIGZvciB0aGUgZGVmYXVsdCBmYWNlIGhh cyBhIHdlaWdodCwgc2xhbnQgb3Igd2lkdGgNCnRoYXQgaXMgbm90IHN1cHBv cnRlZCBieSBvdGhlciBhdmFpbGFibGUgZm9udHMgb24gdGhlIHN5c3RlbSwg c3VjaCBhcw0KJ21lZGl1bScgb3IgJ2hlYXZ5Jy4gIEZ1cnRoZXJtb3JlLCBj YWxsaW5nIGZvbnRfbGlzdF9lbnRpdGllcyB3aXRob3V0DQp1bnNldHRpbmcg dGhlc2UgYXR0cmlidXRlcyBhcmJpdHJhcmlseSBsaW1pdHMgdGhlIG51bWJl ciBvZiBjYW5kaWRhdGVzDQp0byBvbmx5IHRob3NlIHRoYXQgYXJlIHBlcmZl Y3QgbWF0Y2hlcywgd2hpY2ggbWVhbnMgdGhhdCBzY29yaW5nIHRoZQ0KY2Fu ZGlkYXRlcyBiZWNvbWVzIGluIGZhY3QgcG9pbnRsZXNzLiAgVGhlcmVmb3Jl LCB0aGUgd2VpZ2h0LCBzbGFudA0KYW5kIHdpZHRoIGF0dHJpYnV0ZXMgaW4g dGhlIHNwZWMgYXJndW1lbnQgdG8gZm9udF9maW5kX2Zvcl9sZmFjZSBtdXN0 DQpiZSB1bnNldCwgbGlrZSB0aGUgc2l6ZSBhdHRyaWJ1dGUuDQoNCiogc3Jj L2ZvbnQuYyAoZm9udF9maW5kX2Zvcl9sZmFjZSk6IFVuc2V0IHRoZSB3ZWln aHQsIHNsYW50IGFuZCB3aWR0aA0Kb2YgdGhlIGZvbnQgc3BlYy4gIEZpeGVz IGJ1ZyM1NzU1NSBhbmQgYnVnIzU5MzQ3Lg0KLS0tDQogc3JjL2ZvbnQuYyB8 IDkgKysrKysrKysrDQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygr KQ0KDQpkaWZmIC0tZ2l0IGEvc3JjL2ZvbnQuYyBiL3NyYy9mb250LmMNCmlu ZGV4IDZlNzIwYmMyODUuLjA3MjNlMDgwZGQgMTAwNjQ0DQotLS0gYS9zcmMv Zm9udC5jDQorKysgYi9zcmMvZm9udC5jDQpAQCAtMzAwMyw2ICszMDAzLDE1 IEBAIGZvbnRfZmluZF9mb3JfbGZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgTGlz cF9PYmplY3QgKmF0dHJzLCBMaXNwX09iamVjdCBzcGVjLCBpbnQNCiAgICAg fQ0KICAgQVNFVCAod29yaywgRk9OVF9TSVpFX0lOREVYLCBRbmlsKTsNCiAN CisgIC8qIFVuc2V0IHRoZSBmb250IHdlaWdodCwgc2xhbnQgYW5kIHdpZHRo LiAgVGhlIGJlc3QgcG9zc2libGUgdmFsdWVzDQorICAgICBmb3IgdGhlc2Ug YXR0cmlidXRlcyBpcyBkZXRlcm1pbmVkIGxhdGVyLCB3aGVuIHRoZSBjYW5k aWRhdGUgbGlzdA0KKyAgICAgcmV0dXJuZWQgYnkgZm9udF9saXN0X2VudGl0 aWVzIGlzIHNvcnRlZCBieSBmb250X3NlbGVjdF9lbnRpdHkNCisgICAgICh3 aGljaCBjYWxscyBmb250X3NvcnRfZW50aXRpZXMsIHdoaWNoIGNhbGxzIGZv bnRfc2NvcmUpLiAgU2VlDQorICAgICBidWcjNTkzNDcuICAqLw0KKyAgQVNF VCAod29yaywgRk9OVF9XRUlHSFRfSU5ERVgsIFFuaWwpOw0KKyAgQVNFVCAo d29yaywgRk9OVF9TTEFOVF9JTkRFWCwgUW5pbCk7DQorICBBU0VUICh3b3Jr LCBGT05UX1dJRFRIX0lOREVYLCBRbmlsKTsNCisNCiAgIC8qIEZvdW5kcnkg c3BlY2lmaWNhdGlvbiBhbHRlcm5hdGl2ZXM6IGZyb20gdGhlIG1vc3Qgc3Bl Y2lmaWMgdG8gdGhlDQogICAgICBsZWFzdCBzcGVjaWZpYyBhbmQgZmluYWxs eSBhbiB1bnNwZWNpZmllZCBvbmUuICAqLw0KICAgZm91bmRyeVswXSA9IEFS RUYgKHdvcmssIEZPTlRfRk9VTkRSWV9JTkRFWCk7DQotLSANCjIuMzUuMQ0K DQo= --E2Tj3BnqNk-- From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 03:01:15 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 08:01:15 +0000 Received: from localhost ([127.0.0.1]:49637 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxODT-0002Nw-9S for submit@debbugs.gnu.org; Tue, 22 Nov 2022 03:01:15 -0500 Received: from heytings.org ([95.142.160.155]:54090) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxODS-0002Nn-98 for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 03:01:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669104073; bh=zRvrS3wOhBmJ6J3Mma3XFwH9N27guVA9Cx88ZqmFerQ=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=tE0Uy8TDsOrJUc0G8UldtPQth7Nd1pFXFnoBOPuYoyZREFypUOioE4WBpWyHrTvxY Pk8il8ZsSOHLCxB3MGYxLM/gVefSD/DWVGQsXchVHfsbdnuNUDFIAh4Cup0fmdnQ77 z9/LS2FMED36HqrPMd2CkwH3BhQdnkfMU21UmZp9SxGw3g8ToVgpIvjbtFB1YHfUsk DGD7jNzHEfxB2J7VmAKBn3TKfQCCrevimoUJWPcuQTR3YTjjXh3QvnDR/rwY1mfR6H itUDjwztwzLmpvyvRFPSktCZZ0zLokZXJNjthxAuiuve4zKj2uR2TSDp1qjseRLKsK eWFI9ogmUA1YA== Date: Tue, 22 Nov 2022 08:01:13 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <0d1ea3007f2751b58d0e@heytings.org> Message-ID: <0d1ea3007f2a804d2131@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <0d1ea3007f2751b58d0e@heytings.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) > > is pointless unless the weight, slant, width and size are set to nil > (are not "free variables") > That's a typo, obviously I meant (are "free variables"). From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 07:37:56 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 12:37:56 +0000 Received: from localhost ([127.0.0.1]:50128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxSXD-0005bi-Pl for submit@debbugs.gnu.org; Tue, 22 Nov 2022 07:37:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49198) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxSXA-0005bV-Kt for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 07:37:53 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxSX4-00076i-BJ; Tue, 22 Nov 2022 07:37:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=vbtuSk4XeaDJSaBo1+aOcZhzfF87no34Ph0ZxjbhI5g=; b=E/Mq+5BEaE5x mjZDV0CbP40536gp/y2AYDL1yDkXxhMNuHsy+cnj0xAdYVfX9aRHJ8/MOOYQagC3hx2M+HiCdMSMy NHnLs7iwOBHS0N6l7dNdblz2eqzLCsuxBLmviE7bK4tLC9UCJJNvnArA+NLdOVjIrlcmW+ArVmpji YXUf/GrgT1Rzg7xkt1knPIObNW+wGm8OGr4IqHi3SLl4CJWFwydTIIM+FPKPxEWr6qEvMMxOWqSX2 pgaMhOATxr+wGjT8g5yPPUeKduUh5E55lJ71AeqqoCIAN+MmErETLZRTggOqILoT+mNms1XJqQ36k +CG3e5Z6AJo0LjHxi6ifHA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxSX3-0007On-Pw; Tue, 22 Nov 2022 07:37:46 -0500 Date: Tue, 22 Nov 2022 14:38:00 +0200 Message-Id: <83v8n717x3.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 21 Nov 2022 23:34:18 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Mon, 21 Nov 2022 23:34:18 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > emacs -Q > M-: (fancy-startup-screen) RET > > and now evaluate the following lines in turn: > > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-heavy) ;; 1 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'heavy) ;; 2 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-bold) ;; 3 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'bold) ;; 4 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-bold) ;; 5 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'medium) ;; 6 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'normal) ;; 7 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-light) ;; 8 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'light) ;; 9 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-light) ;; 10 > (set-face-attribute 'default nil :font "Source Code Pro" :weight 'thin) ;; 11 > > (If you don't have the Source Code Pro font on your system, I'm sure you > can find another font with more weight variants with which you will > observe a similar effect.) > > With current master, the variable-pitch face is realized as follows: ^^^^^^^^^^^^^^ Is that a typo? If not, how does variable-pitch face come into play here: you only asked for a font for the default face. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 07:43:20 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 12:43:21 +0000 Received: from localhost ([127.0.0.1]:50132 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxScS-0005jZ-JN for submit@debbugs.gnu.org; Tue, 22 Nov 2022 07:43:20 -0500 Received: from heytings.org ([95.142.160.155]:54356) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxScQ-0005jP-QY for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 07:43:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669120996; bh=LwFTq76AZBY5LqHBtRNwHuWNpWldaofb9QUbQXPazjU=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=NMowlTWrRCen9ISfDVo4/fd9fS9+CzkVQIJx7p8pnTij/s7NWuDJz/cR+uV1UQ4+k DlPXpokGRrgyjsQa03UwxaYN/G9Qw2zhhACvSPFLzLiUHqNqtc51AbKs3q7Fme37z3 15jxsT1WgaQRhYf7LFq0cHbRZLDeLmC+hLolVBBB5fUyIXbD1mCByhjzmHB136t+3U d3IQ8fqY5V7Ipu4p60iBHZnxZB8YDnnEgATCtbuhFz/Irybv5p4JeGAz6axM7xpZqU 8JwPRUalWJMSa4AdarVL14wmvWwRqxQ6ZvbM3XUTurO9KEdyyQ8v7DsWYLFKL9zIfH k7aWVRabGrHkA== Date: Tue, 22 Nov 2022 12:43:15 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83v8n717x3.fsf@gnu.org> Message-ID: <0d1ea3007f51691244d8@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <83v8n717x3.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> emacs -Q M-: (fancy-startup-screen) RET >> >> and now evaluate the following lines in turn: >> >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-heavy) ;; 1 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'heavy) ;; 2 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-bold) ;; 3 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'bold) ;; 4 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-bold) ;; 5 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'medium) ;; 6 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'normal) ;; 7 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-light) ;; 8 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'light) ;; 9 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-light) ;; 10 >> (set-face-attribute 'default nil :font "Source Code Pro" :weight 'thin) ;; 11 >> >> (If you don't have the Source Code Pro font on your system, I'm sure >> you can find another font with more weight variants with which you will >> observe a similar effect.) >> >> With current master, the variable-pitch face is realized as follows: > ^^^^^^^^^^^^^^ > > Is that a typo? If not, how does variable-pitch face come into play > here: you only asked for a font for the default face. > No, it's not a typo. See line 2 of the recipe above, which opens the fancy-startup-screen, which uses the variable-pitch face (and other faces that inherit from variable-pitch). With that you see the effect of changing the default face on the variable-pitch face. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 08:30:39 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 13:30:39 +0000 Received: from localhost ([127.0.0.1]:50215 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTMF-0000lT-BP for submit@debbugs.gnu.org; Tue, 22 Nov 2022 08:30:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40080) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTMC-0000lF-US for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 08:30:38 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxTM4-00053g-QI; Tue, 22 Nov 2022 08:30:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=wnl97Djua2v6Ze54Esx973Pu+gLNXpet90fEjAgl2V8=; b=pE+JOcc7swmo shoOD1KQPglgxdRYTwQA9pFomPLT5ySU6HC3RXs3qDZMhsHNHVgx7HBf/7vkkBsQ+yjriXKM34zB5 mfkyvq7+fpkI3nZtpZjBcRhUjFYfBLzlQt1mG4j11JnKRmrfex+uKV/Ihe6DrL0bgYaKDsjf2TQcw b0y6LSzPcEWfLAkYE+ES1ulBOcS3nwEdkSnHkQYcNcEczTOyH5RzzDjerYrRUvAcnO1IVp46aCqw2 cJjTbqdArh0p293jamkUOMWlNcq6jV2OS2s16lJdFk/7rrO8jVZhJDzSFIiLKDt6BOrWqgRtQieiF USV18txELnaMevy7o90c5g==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxTIn-0001l4-7x; Tue, 22 Nov 2022 08:27:05 -0500 Date: Tue, 22 Nov 2022 15:27:18 +0200 Message-Id: <83mt8j15mx.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <0d1ea3007f2751b58d0e@heytings.org> (message from Gregory Heytings on Tue, 22 Nov 2022 06:42:11 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <0d1ea3007f2751b58d0e@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Tue, 22 Nov 2022 06:42:11 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > I would go even further: scoring font candidates according to their > weight, slant, width and size (by comparing the values of these attributes > to the desired value of these attributes) is pointless unless the weight, > slant, width and size are set to nil (are not "free variables") when > building the list of fonts on which the scoring will be applied. You assume that all, say, 'bold' fonts have the same numerical weight values? That is factually incorrect, especially as some font backends support more fine-granular weight (and slant and width) classes and values than the scale we use (which AFAIR was inherited from an old standard). And please also consider my comment about the number of fonts we examine when looking for a suitable candidate. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 08:31:01 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 13:31:01 +0000 Received: from localhost ([127.0.0.1]:50223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTMa-0000mG-W4 for submit@debbugs.gnu.org; Tue, 22 Nov 2022 08:31:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42674) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTMW-0000lp-9g for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 08:30:56 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxTMR-0005N6-20; Tue, 22 Nov 2022 08:30:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=oNOuxuTOMeNYUB2b8k/H/cVzKEF2zxRFjenbv5LZn7o=; b=UCIQ4xNmCbpm LyXfiOQuGtUDFLMfAD7y/lESCojaTmtpSl6p6LgqaoRYkM/cOULxf+wziggJQFKvvLzodeY+CRKdp QaxO9NGBFVcynQRgbYsp9q/SND9JotVCda9MKclAsFAQzwS+a0Ht5X5GSaNQFvXu4/dS7ayE82c2n Xzmeq9qkryc7wPr0HQSOoInTGL77A/FBZIGV0rqZWqpFmZt9EPRjBYKb0UgKfuj2zK71YjSgiZt7g 8E9rSC8E+zHifPl2miBt84P0mQlLhS00h36O14MZUdrLWECUiBc+lyUAcPqfJ6TkBkqlr1uH1nUS0 SIy9mDYOmcFdUSVANAuacA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxT8j-0000VR-57; Tue, 22 Nov 2022 08:16:41 -0500 Date: Tue, 22 Nov 2022 15:16:54 +0200 Message-Id: <83r0xv1649.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Mon, 21 Nov 2022 22:05:05 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: Eli Zaretskii , 59347@debbugs.gnu.org > Date: Mon, 21 Nov 2022 22:05:05 -0500 > > So in essence, what you're saying is that we should rely more on > scoring, and start with a coarser pattern right from the beginning? Wouldn't this potentially examine many more fonts? For example, if all I want is a 'bold' version of the same family as the default face's font, Emacs currently can find it almost immediately, by considering only the few fonts of the same family. Whereas with your proposal, it will start from a "clean slate" every time and will need to examine many (if not all) of the fonts on the system to be sure score-only matches will find the best candidate. Also, font_score only scores the numerical attributes, so how do we assess the "score" of matches for :family or :adstyle? From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 08:38:06 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 13:38:06 +0000 Received: from localhost ([127.0.0.1]:50230 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTTR-0000wY-Sm for submit@debbugs.gnu.org; Tue, 22 Nov 2022 08:38:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46612) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTTQ-0000w4-1z for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 08:38:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxTTK-00013P-Fz; Tue, 22 Nov 2022 08:37:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=9gRiAXkRGOxGIBzJdeWJhfbVMnoUg1RsGbl05iNHy/4=; b=Q1AHKdteN4N9 j6AFzdk3V2DdHZ+NUGYHNsL6fCnKvLIzpM64CYntufSYxyLzk1bxRfqX7Fxby6F8EKdBxTSC9VLqn pn9cTdrOplYzlryCREdOkbqqi+BArgGeto4Nw+vBr7LIiz10yhSgAhiAHyqkkcrrAGPQTr/c7QWhc GE+T/BRIJsWx15INiUZadhza3YGIacXuIz+3kodep8iD54Xw1qq+wh6GXyxMcJ+MUKOloFTtGTEhc lpohtqoVEPN5NR1bd9If2hFSrjjqyLoLZKCX5Gu1JiuRRWPVYBy1mmXvp6ryka7Rq6sYqXnl+S+Lg 7CkaEzvvBDRWfn5DU3x5JA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxTTJ-0007xz-HZ; Tue, 22 Nov 2022 08:37:57 -0500 Date: Tue, 22 Nov 2022 15:38:11 +0200 Message-Id: <83leo3154s.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <0d1ea3007fb4172bc39c@heytings.org> (message from Gregory Heytings on Tue, 22 Nov 2022 07:59:22 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <0d1ea3007fb4172bc39c@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Tue, 22 Nov 2022 07:59:22 +0000 > From: Gregory Heytings > cc: Eli Zaretskii , 59347@debbugs.gnu.org > > What I'm saying (now) is that we should rely on scoring, not that we > should rely _more_ on scoring. > > New (again) patch attached. What happens with the recipe in bug#37473 after this change? And can you somehow tell how many fonts does Emacs examine with and without this change? From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 08:38:24 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 13:38:24 +0000 Received: from localhost ([127.0.0.1]:50233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTTk-0000x4-4q for submit@debbugs.gnu.org; Tue, 22 Nov 2022 08:38:24 -0500 Received: from heytings.org ([95.142.160.155]:54442) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTTi-0000ww-6q for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 08:38:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669124300; bh=e6mqSQfp0YgZ2sc+pAmgWRRaRczPueFqRSh1hbvbxtw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=Y/7ROT8FaaC0EmYfxess68dabjsoPHKqIXo1fDiEUtZPx0BbbgC5xFNgGxNBkIBNs xINqCKJaIMQhrOUGTRNXufOHU5QhUh+KmYD7stLyf75unSFhd54FewXPxHUiIhvwxG m+xgvJjLKmHuviwaQwiOMcEisSScFhLKI9HcmloMSldfgHq15z451vW2WA5235cSiq XM2xxn1Lo1APU1/raJfzxziTQ8nFWFFUKzJpkHN+OQeMpJ32/DPHL/d52X1+kuFUYg tuBzeH7FYn/CGHrNF9rq2HWfXh6qUlNwxQAIHYKhFnc+O49JnjKtg6Eun7EJiws0DR C45ygHywNetVA== Date: Tue, 22 Nov 2022 13:38:19 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83r0xv1649.fsf@gnu.org> Message-ID: <0d1ea3007f532a493429@heytings.org> References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Stefan Monnier , 59347@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 (-) > > Whereas with your proposal, it will start from a "clean slate" every > time and will need to examine many (if not all) of the fonts on the > system to be sure score-only matches will find the best candidate. > That's not what it does, no. The loop in font_find_for_lface limits the number of fonts that are considered to some foundry, family, registry and additional style, and only considers more fonts if no suitable fonts have been found. > > Also, font_score only scores the numerical attributes, so how do we > assess the "score" of matches for :family or :adstyle? > That's the purpose of the loop at the end of font_find_for_lface. It starts with a specific spec and gradually makes it less specific if necessary (that is, if no suitable font has been found with a more specific spec). From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 08:46:17 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 13:46:17 +0000 Received: from localhost ([127.0.0.1]:50246 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTbM-00018t-VQ for submit@debbugs.gnu.org; Tue, 22 Nov 2022 08:46:17 -0500 Received: from heytings.org ([95.142.160.155]:54454) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxTbK-00018i-BT for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 08:46:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669124773; bh=ejcwwpwi2/vQMC8y0sXygPkAGKgCI9wURxtUsAu5034=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=sHW+XkEU1Mc1BtCsKMssij/TyLldpQPOS6WKPvJkjo0J+3Fsi0/vUpsrbJQ6w3mWH IXASJqL1aq7zkXb3AE7vstFrCkrcTSkaZVuf87w/ng7OF4LzQN697CVvwCZd2IBvq9 2beLwPWHymXs7T4U50+50xFpJx98G6D+jiqLgHY+O+GXZFLKQgEzPFfHC2yjn9Fmk8 +7o3Er8+Ay/GbDydZapjSZUdkmu4YTOdu2l1d2R1+7lm4fnZGmHG4+73BwRFdQBVhO pRAdGqmbfs0Nty95MNze3RZ+kwyJE6TRrQwuxmfzmoCYAEausUVB4jEg9iQ+9wjnYq EJLa5u8Q4W6wA== Date: Tue, 22 Nov 2022 13:46:12 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83leo3154s.fsf@gnu.org> Message-ID: <0d1ea3007fbced131e39@heytings.org> References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <0d1ea3007fb4172bc39c@heytings.org> <83leo3154s.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) > > What happens with the recipe in bug#37473 after this change? > It works as expected: the font is initially not anti-aliased, the mode line is not anti-aliased, and everything remains not anti-aliased when scaling. > > And can you somehow tell how many fonts does Emacs examine with and > without this change? > That depends on the number of fonts installed on the system, of course. Also note that that's what Emacs has been doing for ~8 years after bf0d3f76dc (except that the situation was worse: after setting _all_ attributes to nil, more fonts are examined). From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 09:29:04 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 14:29:04 +0000 Received: from localhost ([127.0.0.1]:50301 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUGm-0002Cc-6L for submit@debbugs.gnu.org; Tue, 22 Nov 2022 09:29:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40992) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUGk-0002CI-BE for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 09:29:02 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUGe-0007h8-0Z; Tue, 22 Nov 2022 09:28:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=PBmWLMfTskF2fBs9s2He4INsusKWr/RlGjIdTrcGaAw=; b=AtT7xasDSRU/ BTySO3H2whg1K1hjEA1ecWqtiH1cUl4hB6lG8BWdr9aEXqxIkvYia0m4HbeqAIwaxd4Xzp6TcNN2j /5HXiJ9l/e87OrgI73Ztg7m6gzLpEOXvjjKACk4/CzEL7uJdzqc0HJ1QNmy+DxJpuOe9XzsLbTVDK zQrB6EeH6I9aygG27opSpkEDu/CSdHBpGrJstg2MiXLie7jaCo16AuCOoSegpRFAaMt8DSAUYf9zz mk0WEzecG2EmL3hYpdzfk0PI5fouJwOEnjwj08M2LmoN27RlHI+Kgi0Ktvii1AcD57Odr/dZISmTn BTVMGAXMvr4uHc26937Ngg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUGd-0006BC-8d; Tue, 22 Nov 2022 09:28:55 -0500 Date: Tue, 22 Nov 2022 16:29:09 +0200 Message-Id: <83edtv12ru.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 21 Nov 2022 23:34:18 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Mon, 21 Nov 2022 23:34:18 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > With current master, the variable-pitch face is realized as follows: > > - with 1-3: -ADBO-Source Code Pro-black-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is a monospace font > > - with 4: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font > > - with 5: -ADBO-Source Code Pro-semibold-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font > > - with 6: -urw-nimbus sans l-regular-r-normal--29-210-100-100-p-158-iso8859-1, which is a variable pitch font but without anti-aliasing > > - with 7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font > > - with 8-9: -ADBO-Source Code Pro-light-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font > > - with 10-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font > > That can't be right. Only 4, 7, and 10-11 correspond to what is expected > for that face, namely a variable pitch font. Why do you expect to get a variable pitch font? We don't have any way of expressing that in font attributes, do we? Emacs tries to find a font from the same family, but if that fails for some reason, all bets are off wrt whether the font we find will be variable-pitch or not. Or what am I missing? From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 09:38:55 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 14:38:55 +0000 Received: from localhost ([127.0.0.1]:50310 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUQI-0002Qa-Lo for submit@debbugs.gnu.org; Tue, 22 Nov 2022 09:38:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56294) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUQG-0002QM-1I for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 09:38:53 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUQ9-0001T6-SH; Tue, 22 Nov 2022 09:38:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=weUnPCx4iZHPeYRPZDT8j58tX2eeR1xU04Dsb2EU8Jo=; b=nkB0Trk03dah 1eBffh1/iktOyT9zHylvcDCCskwk07Mk+Xa8Jo3/CkkaBDm7zJNjyc8F5fYTk8mFt8zG0p185JGOI TAXT15tf6zp1jnfWix2g6UsIGZ6Qy21dsX0taI/FMm0f1rKmVoshTIOlI6eeSPuuFg92iiIvlVfbz m9sSdB09UMkVOSHtwzaHNs3g1Zl6umf2cvLbELWE5bG0NvAEVjx7nI1s/Oj29VXThPj0cDuHdw4sQ 85tPE74cQoZrOEnsGgXEv9g2XkFduG0CNdpR8vQ+d+HxCfHGYLDfsff1Vqp5KvXKqoaIgKJNQnNcb qiTotAsfywI39ddFHmMPrg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUQ9-0007jL-An; Tue, 22 Nov 2022 09:38:45 -0500 Date: Tue, 22 Nov 2022 16:38:58 +0200 Message-Id: <83cz9f12bh.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <0d1ea3007f532a493429@heytings.org> (message from Gregory Heytings on Tue, 22 Nov 2022 13:38:19 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Tue, 22 Nov 2022 13:38:19 +0000 > From: Gregory Heytings > cc: Stefan Monnier , 59347@debbugs.gnu.org > > > Whereas with your proposal, it will start from a "clean slate" every > > time and will need to examine many (if not all) of the fonts on the > > system to be sure score-only matches will find the best candidate. > > > > That's not what it does, no. The loop in font_find_for_lface limits the > number of fonts that are considered to some foundry, family, registry and > additional style, and only considers more fonts if no suitable fonts have > been found. But the same considerations apply to weight, slant, and width: shouldn't we prefer an identical value for each one of those, if that is possible? font_score has its own ideas about which one of these 3 is "more equal", AFAICT. And if no suitable candidate is found by making these 3 attributes free, then we are back to the same problem, now with non-numerical attributes. Right? > > Also, font_score only scores the numerical attributes, so how do we > > assess the "score" of matches for :family or :adstyle? > > That's the purpose of the loop at the end of font_find_for_lface. It > starts with a specific spec and gradually makes it less specific if > necessary (that is, if no suitable font has been found with a more > specific spec). So we will be back to the same problem with those. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 09:39:21 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 14:39:21 +0000 Received: from localhost ([127.0.0.1]:50314 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUQj-0002Rc-2e for submit@debbugs.gnu.org; Tue, 22 Nov 2022 09:39:21 -0500 Received: from heytings.org ([95.142.160.155]:54522) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUQg-0002RT-DL for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 09:39:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669127957; bh=tnguh3kVFgzXe/5aVrR0w5a8dEQBwUu2zHRFT1C1+Jc=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=b96fkGSfvCXRTxBS2Nou3k2IpSSLPquG9mWF/7hTOuP6oqPtYsaMPV4eYNIo6yXxp 4eevsgjycEXpFPvHU5M55XpwQ55lg947rTH8L+uWZR2wbngmyp7DgBP4k/lsYKVucX ku9WfipEJP3M6mYyaqOykg5+6hyvh2S5HuF//8VMQaPWJwlu9/TLeg6f48WTON/lyp Rib3z9+jq4YaucEs00bhgrnVUX1gh0Y0ykMREOEmHl+PjRWSjElasvo0T6HXBopEfR Qwmr01zOCHXsGDlDj15nlemos4G/a0XKX/vsOqZt4/ChaU7d3rXDQgEx/kLSLl0zxA mKRpC66lYhIiQ== Date: Tue, 22 Nov 2022 14:39:16 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83edtv12ru.fsf@gnu.org> Message-ID: <0d1ea3007f4b5ca9c1c3@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <83edtv12ru.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> With current master, the variable-pitch face is realized as follows: >> >> - with 1-3: -ADBO-Source Code Pro-black-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is a monospace font >> >> - with 4: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font >> >> - with 5: -ADBO-Source Code Pro-semibold-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font >> >> - with 6: -urw-nimbus sans l-regular-r-normal--29-210-100-100-p-158-iso8859-1, which is a variable pitch font but without anti-aliasing >> >> - with 7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font >> >> - with 8-9: -ADBO-Source Code Pro-light-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font >> >> - with 10-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font >> >> That can't be right. Only 4, 7, and 10-11 correspond to what is >> expected for that face, namely a variable pitch font. > > Why do you expect to get a variable pitch font? > The variable-pitch face should use a variable pitch font, shouldn't it? Unless there are no such fonts installed on the computer of course, in which case it could fall back to a monospace font. > > Emacs tries to find a font from the same family, but if that fails for > some reason, all bets are off wrt whether the font we find will be > variable-pitch or not. Or what am I missing? > Why should the weight of the default face influence the font selected for the variable-pitch face, to the point that even when variable pitch fonts are installed on the computer, they are all flatly rejected because they do not explicitly support say the 'semi-bold' weight? The weight of the default face should only influence the weight of the other faces, which is what it does with the patch. With a 'semi-bold' default face, a 'bold' variable pitch font is a legitimate candidate for the variable-pitch face. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 09:45:24 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 14:45:24 +0000 Received: from localhost ([127.0.0.1]:50328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUWZ-0002bQ-KP for submit@debbugs.gnu.org; Tue, 22 Nov 2022 09:45:23 -0500 Received: from heytings.org ([95.142.160.155]:54532) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUWY-0002bI-8d for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 09:45:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669128321; bh=XgZ++Ru6OKBDIiReSVJ0iV+6NTB8wV44O6waa/9/h3M=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=vaZ1H2sZvEkNiyU5emyh6IBVWb2zx6LbuTUxRGXAofAv+LfETrxdA7ihgwgflAWLA HcP/aZ81BZr5yPCNWK7ZCXtY8ViLItrWcZb++Evar3jXv7gtqeTUm1qfP5X7TlyaKr JR6eQN6ER2ASRh6lq38Sgz6nsGCgN23m7QIl+tnxrYCYQVPF+Mu7mTnwH21KdBxEIs Ioj7uaGYoAXQzIWb5DwKQf37In0sZaH1Z75boY6ygPxxwh2zEPXV1wWb6XFVYoUVU0 CDyY0PemNEdHA8i2b+L/6CbhowdhTMKKSY7+ZTtJoz+r9r5cN/FKpK6VDd8+vUXmuO jDA6lBVeQq9hg== Date: Tue, 22 Nov 2022 14:45:20 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83cz9f12bh.fsf@gnu.org> Message-ID: <0d1ea3007f6995e84576@heytings.org> References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> That's not what it does, no. The loop in font_find_for_lface limits >> the number of fonts that are considered to some foundry, family, >> registry and additional style, and only considers more fonts if no >> suitable fonts have been found. > > But the same considerations apply to weight, slant, and width: shouldn't > we prefer an identical value for each one of those, if that is possible? > Of course, and that's font_select_entity does (by using font_score). > > And if no suitable candidate is found by making these 3 attributes free, > then we are back to the same problem, now with non-numerical attributes. > Right? > I don't understand your question, sorry. As I said, if no suitable candidate is found, the loop at the end of font_find_for_lface gradually makes the other attributes less specific until a suitable font is found. >> That's the purpose of the loop at the end of font_find_for_lface. It >> starts with a specific spec and gradually makes it less specific if >> necessary (that is, if no suitable font has been found with a more >> specific spec). > > So we will be back to the same problem with those. > Sorry, I don't understand what you mean. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 09:52:15 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 14:52:15 +0000 Received: from localhost ([127.0.0.1]:50345 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUdC-0002oO-Tb for submit@debbugs.gnu.org; Tue, 22 Nov 2022 09:52:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54830) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUdA-0002oA-4u for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 09:52:13 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUd3-0007Ku-TT; Tue, 22 Nov 2022 09:52:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=/oV6ZJ9mq4nf4jvxGtSdhXz6sLSMhx+tnZVGcLtosJY=; b=LBfKZ6NIY8Vi GG2fOXlSDrpOpArTxsloIlHYgsAlkO5KqYR1X3erFxe4X03rh1NhkPCQQXPRCn2hghcU0HlcRtDQl km1NK/3c0Ssn2mY0/ThBO9J5DXKcjT78t5c8rFx7g7qLj+j4dYo0P+K5JXGasVG0WtFMa1G6mi8Qw oYAGRtENJUu6up4MWS3WBkcRWRH1i0+APyCMWMsEqEpjl6btV3l/olSRVS3egZOslJOWOtdW9AUeG GaR5ug13nVI3JMSbyJLjCPZQHETn7v21g2r4ntbpFsw7XLGmdv2FoPZ48p04gxZuYiuZ4LCEX6RJb JQ3d+YReXzOzGDcHD5wnGg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUd1-0000cV-B9; Tue, 22 Nov 2022 09:52:05 -0500 Date: Tue, 22 Nov 2022 16:52:17 +0200 Message-Id: <83bkoz11pa.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <0d1ea3007f4b5ca9c1c3@heytings.org> (message from Gregory Heytings on Tue, 22 Nov 2022 14:39:16 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <83edtv12ru.fsf@gnu.org> <0d1ea3007f4b5ca9c1c3@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Tue, 22 Nov 2022 14:39:16 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > Why do you expect to get a variable pitch font? > > > > The variable-pitch face should use a variable pitch font, shouldn't it? > Unless there are no such fonts installed on the computer of course, in > which case it could fall back to a monospace font. You know it and I know it, but how should the code which examines the fonts know it? AFAICT, nothing tells it to reject fixed-pitch fonts. Or did I miss something? > > Emacs tries to find a font from the same family, but if that fails for > > some reason, all bets are off wrt whether the font we find will be > > variable-pitch or not. Or what am I missing? > > Why should the weight of the default face influence the font selected for > the variable-pitch face Because if the default face is bold, so should be other faces, preferably. To keep a consistent appearance, so to say. And the same goes for slant and width. > to the point that even when variable pitch fonts > are installed on the computer, they are all flatly rejected because they > do not explicitly support say the 'semi-bold' weight? The weight of the > default face should only influence the weight of the other faces How are "other faces", where you agree that the weight should matter, different from the variable-pitch face, where you don't agree? Anyway, I'm okay with doing what you suggest as a fallback, if the code we have now somehow didn't produce satisfactory results. Provided we can define reasonable criteria for what is "satisfactory". But I don't think it's right to throw away these 2 attributes to begin with, no. > With a 'semi-bold' default face, a 'bold' variable pitch font is a > legitimate candidate for the variable-pitch face. But your patch doesn't "loosen" just one attribute, it does that with all 3 in one blow. Maybe if we "loosen" just one, we will be able to find a match for the other two. I don't think font_score guarantees that, does it? From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 09:53:50 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 14:53:50 +0000 Received: from localhost ([127.0.0.1]:50350 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUek-0002qg-DE for submit@debbugs.gnu.org; Tue, 22 Nov 2022 09:53:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:57526) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxUei-0002qS-RS for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 09:53:49 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUed-0007rb-BL; Tue, 22 Nov 2022 09:53:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=4YtRdKOvDOPjCKNVkkmHxWo9DyaHydbANOPjF0dLSxQ=; b=jTAfpovS7cmQ co/f5pZvrx9n8V/4r+irFTJO1WwFq85zbGTMntHfeQL+PQqlfXuEc7oSw8ds1I4f47r+b2ciMOmJs Ll/oXRQPhFpPS5qNDQJ+uiF1nXgrvz5g8Q4pmwtZh4A8h2VMCYnjuPdvGfc2ePwUf2le++Pja1ZpO kch7odh2MuFwZKYb69+Vpd5xJxHByQQAftnt01kB0q9n4oytFVvM3xF9CKMAPs5RcUYWjFlaCvEug SjMZEFgeLDl1TTD6X3ZXpIr+WViV0sdgHomHlp/HjUWgmi4l9KbLMROq/pSHVBSHcb+O5JpuVxm4T Eh7V0kLcar2coMJ1jkyIvQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxUec-0000k4-Hw; Tue, 22 Nov 2022 09:53:42 -0500 Date: Tue, 22 Nov 2022 16:53:57 +0200 Message-Id: <83a64j11mi.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <0d1ea3007f6995e84576@heytings.org> (message from Gregory Heytings on Tue, 22 Nov 2022 14:45:20 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <0d1ea3007f6995e84576@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Tue, 22 Nov 2022 14:45:20 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > >> That's the purpose of the loop at the end of font_find_for_lface. It > >> starts with a specific spec and gradually makes it less specific if > >> necessary (that is, if no suitable font has been found with a more > >> specific spec). > > > > So we will be back to the same problem with those. > > > > Sorry, I don't understand what you mean. I mean that the basic algorithm that gradually makes the spec less specific is used for non-numerical attributes, and so can potentially reject valid fonts, just like it happens with these 3 numerical attributes. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 10:17:34 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 15:17:34 +0000 Received: from localhost ([127.0.0.1]:52249 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxV1i-0003uu-5y for submit@debbugs.gnu.org; Tue, 22 Nov 2022 10:17:34 -0500 Received: from heytings.org ([95.142.160.155]:54580) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxV1g-0003uk-7e for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 10:17:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669130251; bh=Wc0ZehrD3x0FpCLox4AuP+ixWZhLrRURyCoqUvO5jnI=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=mty9fOyXrDZRXsbIdDPbUViZqbeCylIfGAVaLRL7Qofr1w2FMA09qSUhOusGYPere wLlYyLjNQawYHopq+rJHSPgQ4hETMBjf7hmaD/SgX4b4IsqsWdERCQMmOl6GGWlMVi ipwGz6k07jg0WWwcntoJtrDGxt/3IoHX7X2cpgkEPbZSquDvmIVzoHBfnOcBrGP2o+ cIrPg5tD0Ok4NtCqSxB16FUDkj2IPpwz95nXDdUMZHV5o6s+CUDkLo6zZJJAIeXDzJ J9QQbw2suf/YgbvLqLtzvaTdYRVkxidQVLR2pv8AnnEZ/U+cWhC5qWcuKa12iumagt H8HQuIeLG7McQ== Date: Tue, 22 Nov 2022 15:17:30 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83bkoz11pa.fsf@gnu.org> Message-ID: <0d1ea3007f614b19d262@heytings.org> References: <83bkp4bfqf.fsf@gnu.org> <83wn7s9txp.fsf@gnu.org> <83pmdk9pat.fsf@gnu.org> <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <83edtv12ru.fsf@gnu.org> <0d1ea3007f4b5ca9c1c3@heytings.org> <83bkoz11pa.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> The variable-pitch face should use a variable pitch font, shouldn't it? >> Unless there are no such fonts installed on the computer of course, in >> which case it could fall back to a monospace font. > > You know it and I know it, but how should the code which examines the > fonts know it? AFAICT, nothing tells it to reject fixed-pitch fonts. > Or did I miss something? > Nothing tells it to reject fixed-pitch fonts as a last resort indeed. But clearly the code should not select a fixed-pitch font _because_ it is the only available font that supports say a 'semi-bold' weight, when variable pitch fonts that support a 'bold' weight are in fact available. >> Why should the weight of the default face influence the font selected >> for the variable-pitch face > > Because if the default face is bold, so should be other faces, > preferably. To keep a consistent appearance, so to say. And the same > goes for slant and width. > With the code on master, the effect is the opposite of consistence. With the patch the effect is consistent: when the default face is say 'semi-bold', a 'bold' variable pitch font can be considered the best match for the variable-pitch face. >> to the point that even when variable pitch fonts are installed on the >> computer, they are all flatly rejected because they do not explicitly >> support say the 'semi-bold' weight? The weight of the default face >> should only influence the weight of the other faces > > How are "other faces", where you agree that the weight should matter, > different from the variable-pitch face, where you don't agree? > What I said above was perhaps not clear enough. There is nothing special about the variable-pitch face, I only used it to make the problem of the code on master as clear as possible. Of course the weight of the default face should influence the weight of all other faces. But not to the point that a 'bold' variable pitch font is never even considered as a potential candidate for the variable-pitch face. > > Anyway, I'm okay with doing what you suggest as a fallback, if the code > we have now somehow didn't produce satisfactory results. > It's not that it doesn't produce satisfactory results, it's that it doesn't do what it is meant to do. The scoring mechanism for the weight/slant/width attributes is simply bypassed. Without unsetting these three attributes, font_list_entities only produces candidates that are exact matches (e.g. only "bold" fonts are returned), and the whole point of scoring ("when searching for a semi-bold font, bold is better than medium and worse than extra-bold") is entirely lost. My patch simply restores the scoring mechanism (and fixes at least three bugs: 37473, 57555 and 59347). >> With a 'semi-bold' default face, a 'bold' variable pitch font is a >> legitimate candidate for the variable-pitch face. > > But your patch doesn't "loosen" just one attribute, it does that with > all 3 in one blow. Maybe if we "loosen" just one, we will be able to > find a match for the other two. I don't think font_score guarantees > that, does it? > It does that because these three attributes are those that are considered by the font scoring mechanism (together with the size, which is set to nil two lines above). The scoring mechanism guarantees that the best match, depending on the user preferences specified in face-font-selection-order, will be selected. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 10:41:57 2022 Received: (at submit) by debbugs.gnu.org; 22 Nov 2022 15:41:57 +0000 Received: from localhost ([127.0.0.1]:52327 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxVPI-0004Xz-O6 for submit@debbugs.gnu.org; Tue, 22 Nov 2022 10:41:57 -0500 Received: from lists.gnu.org ([209.51.188.17]:44920) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxVPD-0004Xo-I4 for submit@debbugs.gnu.org; Tue, 22 Nov 2022 10:41:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxVPD-0007tt-Cd for bug-gnu-emacs@gnu.org; Tue, 22 Nov 2022 10:41:51 -0500 Received: from heytings.org ([95.142.160.155]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxVPB-0005NU-Pt; Tue, 22 Nov 2022 10:41:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669131707; bh=+/KzxrH3Ihf6jqLAtKbsJVq23D4WpH7ZQgBZv2+leo8=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=r9g+lVDbYDOfjVJsMnLN0/QCXy7TxkofG3dejP2HY7LcOkaQzqGmtxHrJZI6TQNUG +KwzkyGgqN4gwcGi71tGw+cAFQtNQ4TL4hojWLcB0nZ74lWF7D/DC0MnmBVWGMZrEI mAc0BFOEGJSFRgD/3svbk68RRWPu15vzzNoHDhgqtUhZMUwXTrpXKKQjd84wgw+sBZ /v7etEb3dklH9aCO0Yz39lLwFQ67wCcNPAdUAPQP2FIs2P+3c7Fy5Jwn5yUoxbmIi7 YmxpOH2pSA78CW5VSyW/6Ysr2WQflRv7bfuRaMAj4yGIs1vRnRdhCTXPALVte1kced n46lwH3ASwcrQ== Date: Tue, 22 Nov 2022 15:41:47 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83a64j11mi.fsf@gnu.org> Message-ID: <0d1ea3007f6630ad784f@heytings.org> References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <0d1ea3007f6995e84576@heytings.org> <83a64j11mi.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii Received-SPF: pass client-ip=95.142.160.155; envelope-from=gregory@heytings.org; helo=heytings.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org, monnier@iro.umontreal.ca, 59347@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: -2.3 (--) >>>> That's the purpose of the loop at the end of font_find_for_lface. >>>> It starts with a specific spec and gradually makes it less specific >>>> if necessary (that is, if no suitable font has been found with a more >>>> specific spec). >>> >>> So we will be back to the same problem with those. >> >> Sorry, I don't understand what you mean. > > I mean that the basic algorithm that gradually makes the spec less > specific is used for non-numerical attributes, and so can potentially > reject valid fonts, just like it happens with these 3 numerical > attributes. > No, it won't reject valid fonts (unless I misunderstand what you mean by "valid font"). For example, when searching for a font in the monospace family, all fonts in the monospace family are considered. If no such fonts are found, Emacs tries again (see face-font-family-alternatives) and considers all fonts in the courier family. If no such fonts are found, Emacs tries again and considers all fonts in the fixed family. After which Emacs gives up. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 12:44:18 2022 Received: (at submit) by debbugs.gnu.org; 22 Nov 2022 17:44:18 +0000 Received: from localhost ([127.0.0.1]:52464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxXJh-0003cX-Pp for submit@debbugs.gnu.org; Tue, 22 Nov 2022 12:44:18 -0500 Received: from lists.gnu.org ([209.51.188.17]:49154) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxXJe-0003cO-Vn for submit@debbugs.gnu.org; Tue, 22 Nov 2022 12:44:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxXJe-00006h-Ob for bug-gnu-emacs@gnu.org; Tue, 22 Nov 2022 12:44:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxXJd-0005HW-CK; Tue, 22 Nov 2022 12:44:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=QFkebJpA7Xn/zp9TSlrbOMRl5i/wsorJ4n/PQu8P/Hs=; b=n+ogiqxogWNR AsaUe2qKz3qjWBigI6QjvBxj6DXJbAHH9nNtBEeRM08+eNw2ddy3HGAGZqks3U/RmWfkCkQB+LNTL OsTBqP79xMXiLthZMUrXyC/xYO4t+j+xBxghvj597eSQeKPfym7rUCRRmJhF4fwU8oGnrpVTms8l+ ahK16Hfnp7h4v20lHXob3NNv49UU1f4UABEK3o8w7ZvCU8a+9nkgGeCMXZKiGxEc/rPqmZGaneg6W 85zk5Z9YC4LVE7KLTYoIKgFhCP6fHmzmxtwY0OZQ6QljYftU48KaxaATNdGIBf+0sn55GRG4Nt7kF 3p8tWh5/v8lCCCfa4ohMeQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxXJc-0001zP-SC; Tue, 22 Nov 2022 12:44:13 -0500 Date: Tue, 22 Nov 2022 19:44:27 +0200 Message-Id: <834juq28as.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: <0d1ea3007f6630ad784f@heytings.org> (message from Gregory Heytings on Tue, 22 Nov 2022 15:41:47 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <0d1ea3007f6995e84576@heytings.org> <83a64j11mi.fsf@gnu.org> <0d1ea3007f6630ad784f@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org, monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Tue, 22 Nov 2022 15:41:47 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org, bug-gnu-emacs@gnu.org > > No, it won't reject valid fonts (unless I misunderstand what you mean by > "valid font"). For example, when searching for a font in the monospace > family, all fonts in the monospace family are considered. If no such > fonts are found, Emacs tries again (see face-font-family-alternatives) and > considers all fonts in the courier family. If no such fonts are found, > Emacs tries again and considers all fonts in the fixed family. After > which Emacs gives up. I feel like we have no focus in this dispute, and no real understanding of the goal. So let me go back to your scenario and ask you: what exactly is the problem with the scenario that you described? A reminder: (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-heavy) ;; 1 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'heavy) ;; 2 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-bold) ;; 3 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'bold) ;; 4 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-bold) ;; 5 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'medium) ;; 6 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'normal) ;; 7 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'semi-light) ;; 8 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'light) ;; 9 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'ultra-light) ;; 10 (set-face-attribute 'default nil :font "Source Code Pro" :weight 'thin) ;; 11 (If you don't have the Source Code Pro font on your system, I'm sure you can find another font with more weight variants with which you will observe a similar effect.) With current master, the variable-pitch face is realized as follows: - with 1-3: -ADBO-Source Code Pro-black-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is a monospace font - with 4: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font - with 5: -ADBO-Source Code Pro-semibold-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font - with 6: -urw-nimbus sans l-regular-r-normal--29-210-100-100-p-158-iso8859-1, which is a variable pitch font but without anti-aliasing - with 7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font - with 8-9: -ADBO-Source Code Pro-light-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font - with 10-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font Is the problem that you expected the family to be DejaVu Sans, but you got a different family in some cases? Or is the problem that you expected a variable-pitch font, but got a monospaced font in some cases? Or is the problem something else? And why is this result: - with 1-5: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1 - with 6-7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1 - with 8-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1 better? You asked for ultra-heavy and heavy weight, but got bold -- why is that TRT? what if it really mattered to you to have several fonts of different heaviness? You also mentioned this: > Nothing tells it to reject fixed-pitch fonts as a last resort indeed. > But clearly the code should not select a fixed-pitch font _because_ it is > the only available font that supports say a 'semi-bold' weight, when > variable pitch fonts that support a 'bold' weight are in fact available. Why is it "clear" that font selection should do what you expect here, given that the only (weak) indication that we are after a variable-pitch font is the family? Why do you consider it so preposterous that Emacs comes up with a semi-bold font, when you ask for a semi-bold font? > Of course the weight of the default face should influence the weight of > all other faces. But not to the point that a 'bold' variable pitch font > is never even considered as a potential candidate for the variable-pitch > face. How do you know it wasn't considered? Maybe it was considered, but "lost" to what Emacs decided to be a better candidate? And again, there's no information of any kind in the font-spec we use that we are looking for a variable-pitch font. We only have the family. Given that no font in the family matches the specified width, why shouldn't Emacs try to find a font from another family that does match the width? > It's not that it doesn't produce satisfactory results, it's that it > doesn't do what it is meant to do. The scoring mechanism for the > weight/slant/width attributes is simply bypassed. Without unsetting these > three attributes, font_list_entities only produces candidates that are > exact matches (e.g. only "bold" fonts are returned), and the whole point > of scoring ("when searching for a semi-bold font, bold is better than > medium and worse than extra-bold") is entirely lost. The fact that we bypass scoring and look only for exact matches might be a valid criticism of the existing font-selection algorithm, but it doesn't yet tell us what should be the alternative. To decide what would be such an alternative, we need a good understanding of the goals of the font search in the various use cases we need to support. Which is why I'm asking all those questions. > My patch simply restores the scoring mechanism (and fixes at least three > bugs: 37473, 57555 and 59347). Unfortunately, I've seen too many changes in this area which solved a couple of problems, only to produce others, which took us time to discover. The last thing I want here is to do the same for the N+1st time. So let's first try to determine what exactly do we want to happen and why. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 15:48:15 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 20:48:15 +0000 Received: from localhost ([127.0.0.1]:52661 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxaBj-0004GX-4l for submit@debbugs.gnu.org; Tue, 22 Nov 2022 15:48:15 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:39776) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxaBb-0004G0-3x for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 15:48:13 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 67F6A1000ED; Tue, 22 Nov 2022 15:48:01 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id C07E510002F; Tue, 22 Nov 2022 15:47:59 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1669150079; bh=/MPcrDSrwbmXMqgSUDYLWV0hgWHBSq6yzaHrTZw1iCk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=NMQoJojZFmD5d02FaNXVIc9FKgLOSF6gxwdDhI17UsRGsxwe55iOxy4b/DVDM3JwN vHE8CmpfIermqcjuzKME4ngNsqZwQHPMyUyoHkZqfqrsgoQzVtuzPaenDgfQeFtGRh NDhheTcv8sGs2t3laiXglR5kn6pemkAXOM3akodjDybyvhaREzsZhhHBTis5bwfQbJ Z6x+aLUXGabPFxy1uLkQBvj5yjLd1jbtXx7WiJWzP7pDlwR9cTzMI1Mwbvr5LqcdwH yiKic+seQDP9JWKjh9cjwnC5/KDFMWmtrcMOHnpkidc5du74th+xrZvrw1XD0njOje XBSLSMio+qnEA== Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 86D891202DA; Tue, 22 Nov 2022 15:47:59 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83cz9f12bh.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 22 Nov 2022 16:38:58 +0200") Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> Date: Tue, 22 Nov 2022 15:47:50 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: =?UTF-8?Q?0=0A=09?=ALL_TRUSTED -1 Passed through trusted hosts only via =?UTF-8?Q?SMTP=0A=09?=AWL 0.015 Adjusted score from AWL reputation of From: =?UTF-8?Q?address=0A=09?=BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily =?UTF-8?Q?valid=0A=09?=DKIM_VALID -0.1 Message has at least one valid DKIM or DK =?UTF-8?Q?signature=0A=09?=DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , 59347@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: -3.3 (---) >> That's not what it does, no. The loop in font_find_for_lface limits the >> number of fonts that are considered to some foundry, family, registry and >> additional style, and only considers more fonts if no suitable fonts have >> been found. > > But the same considerations apply to weight, slant, and width: shouldn't we > prefer an identical value for each one of those, if that is possible? The difference is that for numerical attributes there is a notion of proximity (plus some arbitrariness: very few users care whether a font is "normal" vs "regular" vs "medium", especially when the font of the family you requested has only one of those 3 and the font designed chose one of those three names somewhat arbitrarily). This makes the scoring work well for those. In contrast, we don't have such a notion for family/foundry/registry, which means scoring doesn't really work well for those attributes. So I think it makes sense to rely exclusively on scoring for the numerical attributes (width/weight/height/weight). At least intuitively it should give good results. For me the question is what is its impact in terms of the number of fonts we need to consider. [ Side note: the slant attribute could also be made numerical, I think. ] > And if no suitable candidate is found by making these 3 attributes free, > then we are back to the same problem, now with non-numerical attributes. > Right? Yes, but since they are not numerical/continuous attributes we can't see those weird discontinuities where you get font A for `semi-bold`, then font B for `normal`, then font A again for `light` (as in Gregory's example) which makes no sense: either A is heavier than B or not, but it can't be both, right? Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 15:52:47 2022 Received: (at 59347) by debbugs.gnu.org; 22 Nov 2022 20:52:47 +0000 Received: from localhost ([127.0.0.1]:52669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxaG6-0004Pq-JZ for submit@debbugs.gnu.org; Tue, 22 Nov 2022 15:52:47 -0500 Received: from heytings.org ([95.142.160.155]:54984) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxaG4-0004Ph-96 for 59347@debbugs.gnu.org; Tue, 22 Nov 2022 15:52:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669150362; bh=/qnbZ7Z4X25W4GisVkd3Scwamjr2obi+FOsC6mZ4eyw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=vq6MjaVWu0kfvTVrhP4GuNcsWRNZi67IUdctj/9QDTDD+bbGMVO2VKtrXhVQATHXN NEIQlvlMoXRFmfyt9Tqyo4UZY+vVwtFv2wWBjzWCLum0j4QXbeowpqKm3bPNs/P0zI ng82wmpchT6NgBSInFJ3IVjAUrtgk/JZtRsCpe9dpXHZZAFd5TqPjqz77xa7gwv9Xh HoDC3NyPYA6qQzg/plYc76EMzRMR2g4zOdYAXZUga+SMYgltELvl49HRwIOiO1Y1Lx BcRMDTAdb/sNv6fzTovVYeaPLCTiohn5YSAvKa+b+Ql7akWtLtxjKpvxZjK9ceiURZ vESCCVV7LtOJA== Date: Tue, 22 Nov 2022 20:52:42 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <834juq28as.fsf@gnu.org> Message-ID: <0d1ea3007f1d7523338e@heytings.org> References: <83cz9j9zyu.fsf@gnu.org> <838rk77yfo.fsf@gnu.org> <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <0d1ea3007f6995e84576@heytings.org> <83a64j11mi.fsf@gnu.org> <0d1ea3007f6630ad784f@heytings.org> <834juq28as.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: 59347@debbugs.gnu.org, monnier@iro.umontreal.ca 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 (-) > > So let me go back to your scenario and ask you: what exactly is the > problem with the scenario that you described? A reminder: > > With current master, the variable-pitch face is realized as follows: > > - with 1-3: -ADBO-Source Code Pro-black-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is a monospace font > > - with 4: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font > > - with 5: -ADBO-Source Code Pro-semibold-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font > > - with 6: -urw-nimbus sans l-regular-r-normal--29-210-100-100-p-158-iso8859-1, which is a variable pitch font but without anti-aliasing > > - with 7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font > > - with 8-9: -ADBO-Source Code Pro-light-normal-normal-*-29-*-*-*-m-0-iso10646-1, which is again a monospace font > > - with 10-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1, which is a variable pitch font > > Is the problem that you expected the family to be DejaVu Sans, but you > got a different family in some cases? > > Or is the problem that you expected a variable-pitch font, but got a > monospaced font in some cases? > > Or is the problem something else? > The problem is that users expect a variable pitch font for the variable-pitch face (and an antialiased font when antialising is on). That's what the "family = Sans Serif" specification of that face means. > > And why is this result: > > - with 1-5: -PfEd-DejaVu Sans-bold-normal-normal-*-29-*-*-*-*-0-iso10646-1 > > - with 6-7: -PfEd-DejaVu Sans-regular-normal-normal-*-29-*-*-*-*-0-iso10646-1 > > - with 8-11: -PfEd-DejaVu Sans-ultralight-normal-normal-*-29-*-*-*-*-0-iso10646-1 > > better? > It is better because the "family = Sans Serif" specification of the variable-pitch face is obeyed. (Incidentally, that result corresponds to the result returned by fc-match for those weights.) > > You asked for ultra-heavy and heavy weight, but got bold -- why is that > TRT? > Same answer: it is TRT because the "family = Sans Serif" specification of the variable-pitch face is obeyed. >> Nothing tells it to reject fixed-pitch fonts as a last resort indeed. >> But clearly the code should not select a fixed-pitch font _because_ it >> is the only available font that supports say a 'semi-bold' weight, when >> variable pitch fonts that support a 'bold' weight are in fact >> available. > > Why is it "clear" that font selection should do what you expect here, > given that the only (weak) indication that we are after a variable-pitch > font is the family? Why do you consider it so preposterous that Emacs > comes up with a semi-bold font, when you ask for a semi-bold font? > You seem to misunderstand how font selection works. The "family = Sans Serif" specification of the variable-pitch face is not at at all a "weak" indication that we are after a variable pitch font, it's the strongest possible indication that we are after a variable pitch font. It means "please choose whatever font you want among those installed on the system, but one in the Sans Serif family", "Sans Serif" being one of the few generic font families. It's like the "Monospace" family for the default font. It would be wrong if Emacs decided to select a variable pitch font for the default face, wouldn't it? >> Of course the weight of the default face should influence the weight of >> all other faces. But not to the point that a 'bold' variable pitch >> font is never even considered as a potential candidate for the >> variable-pitch face. > > How do you know it wasn't considered? > I debugged the code. > > And again, there's no information of any kind in the font-spec we use > that we are looking for a variable-pitch font. We only have the family. > See above. > > Given that no font in the family matches the specified width, why > shouldn't Emacs try to find a font from another family that does match > the width? > Because the variable-pitch face is specified with "family = Sans Serif", and it is its only specification. Specifying a font family means leaving a lot of freedom to the program (in this case Emacs, but the same applies to a browser for example) to select the font it wants among those installed on the system. And there is no reason whatsoever to not obey that specification, unless there are strong reasons not to obey it (e.g. there are no Sans Serif fonts installed on the system, or the ones that are installed do not cover the character sets we want to display). Which is evidently not the case here: if we're after a "Sans Serif semi-bold" font, and there are "Sans Serif bold" fonts installed on the system, they are good candidates. There are, on my system, no less than 166 fonts in the "Sans Serif" family. It just happens that none of them explicitly supports the 'heavy' weight / has no explicit 'heavy' variant. But that is not a sufficient reason to reject all those 166 fonts. What Emacs should do, what others programs do, and what Emacs would do with the patch, is to select the best possible font among those 166 fonts. > > Unfortunately, I've seen too many changes in this area which solved a > couple of problems, only to produce others, which took us time to > discover. The last thing I want here is to do the same for the N+1st > time. So let's first try to determine what exactly do we want to happen > and why. > I don't know what else I could say to convince you. From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 23 03:13:12 2022 Received: (at 59347) by debbugs.gnu.org; 23 Nov 2022 08:13:12 +0000 Received: from localhost ([127.0.0.1]:53359 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxksa-00070r-GJ for submit@debbugs.gnu.org; Wed, 23 Nov 2022 03:13:12 -0500 Received: from heytings.org ([95.142.160.155]:55628) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxksY-00070i-Ax for 59347@debbugs.gnu.org; Wed, 23 Nov 2022 03:13:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669191189; bh=uYx3CXI7YsPnLMcHHawz78giK4J/Jj9USVcAHAzCct0=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=htZqavWSWFK4kijUSFz0zzkOfTaR97QosOzMV2CRUx92hh6rXXB+PZFabeC+SoNmp E3iuOsX86iRWz5b4yIg14QN3mc0ykDQWr23CdfW20dSBpqL6f/IBLkDHP4ge5ig1pE L1TOGIbakh/pOwKR5ymfn8g5qfFlqHeWmn+mUbxbRgBxQnd8TNyh4FqpRNqV5VCHph Xsz8sqQbd/4pJVK2MG61iragJRzNnC8kYgVkTcLxy1mf8AttHlN4K5fXDgs7EHABIi RHZ2yUxam41AAQ/kDiAqcyQ0XNLId1igSjcxY7kkGnTW4W4E+SFjFYU6VFZRCMoBsl ljOYGP4AS7DIQ== Date: Wed, 23 Nov 2022 08:13:08 +0000 From: Gregory Heytings To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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 (-) > > For me the question is what is its impact in terms of the number of > fonts we need to consider. > I don't understand why we should suddently worry about the number of fonts we consider. During ~8 years (after bf0d3f76dc) _all_ attributes (not just the size/weight/slant/height ones) were set to nil (in realize_x_face), and I don't think there were any bug reports about Emacs being too slow to select fonts. Face realization is something that happens only rarely. From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 30 05:03:38 2022 Received: (at 59347) by debbugs.gnu.org; 30 Nov 2022 10:03:38 +0000 Received: from localhost ([127.0.0.1]:59949 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0JwI-0006q1-K4 for submit@debbugs.gnu.org; Wed, 30 Nov 2022 05:03:38 -0500 Received: from heytings.org ([95.142.160.155]:37498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0JwF-0006pv-JD for 59347@debbugs.gnu.org; Wed, 30 Nov 2022 05:03:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669802615; bh=lxetecIaeRz2usKPMAtf8JmNOHPTWBoe7wd1vJL3WUc=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=kAjTFtE2PRIAtehuqrCdw1qMNIYYohgmDsJb46qx75aBLe+MaAfO+AgGQFhjyvQ7b FvRU8eb26pD9uFVARvK0QIEh5cPyrA2a4Htc62VfYNxCHiRSngS/ndGS/Npg9a0Eg8 gWzzAPfLQPKcl0A9DRtUrWBu/EVQllat/D3DFi2opzUeL8HPhJVr885H2yiyjHiqhE S1u6y5nOZRKjzp3s8Hb0EAtPbl6M9kVk91F80VOSFRUccH1zQtEEnbMR1vfg5qkM19 JlrnUJSX96WNX1Bs1M9FZxuMyiCRgN8hAWhAhsWdDeksgfiEEpLdIwHycz4FsVXIxt s401pFP7+3LCg== Date: Wed, 30 Nov 2022 10:03:34 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Stefan Monnier , 59347@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 (-) Are there further comments or questions about this patch? From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 30 09:01:22 2022 Received: (at 59347) by debbugs.gnu.org; 30 Nov 2022 14:01:22 +0000 Received: from localhost ([127.0.0.1]:32964 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0NeJ-0005ZB-Fq for submit@debbugs.gnu.org; Wed, 30 Nov 2022 09:01:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40738) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0NeE-0005Z4-A5 for 59347@debbugs.gnu.org; Wed, 30 Nov 2022 09:01:17 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p0Ne6-0005GI-Cr; Wed, 30 Nov 2022 09:01:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=gk05Ch0QB8kUgGcDb65HFJ87QI+Rhh8e5tK0MgIOuU0=; b=ceCHjjRchmE6 5dqmK/DIvwRh01pR4jD0tAyuLMAdglSs5m4H1+ThuBqZr19gZpgdcGT6GjiISACzJtb64ypict1Ch kANQZL7WQsdFfYv31NTxJdD/468fjMt2RREADcqyfum/tV//xd3U+GRlW91S8Sxyo9rRKpshbGopT +Lp7JWi+JLLfdyHdS4QrJUQ8QqHIjVpT7s+/PX8lSZx82RIS9KCfOAnmgzZufLJNPyCUT17kG0zx4 +jJhqB3IE4Zf56OsAN+YGzTLfsqVPrIYaUn/9V7qDG1AElz0ELoAsJ6nEDeZD1r5IE2/mu2Cg7/BT Y5AdZ0CjbbW72ylbSFdrnw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p0Ne5-0006fq-Br; Wed, 30 Nov 2022 09:01:06 -0500 Date: Wed, 30 Nov 2022 16:00:32 +0200 Message-Id: <835yewleyn.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Wed, 30 Nov 2022 10:03:34 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Wed, 30 Nov 2022 10:03:34 +0000 > From: Gregory Heytings > cc: Stefan Monnier , 59347@debbugs.gnu.org > > > Are there further comments or questions about this patch? Yes. I stopped responding because I didn't want to get in the way of your finishing the merge of the locked-narrowing branch, but the discussion about this one is far from over. I will respond when I have more time. From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 30 10:38:41 2022 Received: (at 59347) by debbugs.gnu.org; 30 Nov 2022 15:38:41 +0000 Received: from localhost ([127.0.0.1]:33491 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0PAX-0006VC-MA for submit@debbugs.gnu.org; Wed, 30 Nov 2022 10:38:41 -0500 Received: from heytings.org ([95.142.160.155]:38004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0PAW-0006V6-3c for 59347@debbugs.gnu.org; Wed, 30 Nov 2022 10:38:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1669822718; bh=ACMi7Ao0jxgkpvn8t7JlbjGa47jKxdpA+COxPZ0Rm74=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=tKPQoU7wyyoy+LfCeytptx5KLcgGCZZ42TLoQilc254+h2SlVaAB9N5HTEm9Flu7m iG5VczCWwNlgD76/tMswLm0PSEPAHBtazl1BYM993orj3CfmWzccoPheZYEaHv6d/2 3q4DSH6WfUbJupu3xlYYB/Hv303iC8xGf/eDhZkEIiw8/FJc+LFnrgIOEEvXd0UmdC qup7Lfd2G9DlNIBJphqHlc/nD/+3At70+8F5+yGZhbzfhTrF2YWxB5gtP1TYKN7Fru sP/c+surz3nQEkFCSie8PwqW9AdAcy5D2w6wN2UfXaSrPFPRFmQME78UGkr3AR4k6h nDzNDItECRuYQ== Date: Wed, 30 Nov 2022 15:38:37 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <835yewleyn.fsf@gnu.org> Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="WXhK1kKIm1" Content-ID: X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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" --WXhK1kKIm1 Content-Type: text/plain; charset=us-ascii; format=flowed Content-ID: >> Are there further comments or questions about this patch? > > Yes. I stopped responding because I didn't want to get in the way of > your finishing the merge of the locked-narrowing branch, but the > discussion about this one is far from over. I will respond when I have > more time. > Okay. To clarify the matter, I think the following is useful, to explain what "family = Sans Serif" means. I attach a screenshot of the font preference box in Firefox. In that screenshot you see the three most general font families: Serif, Sans Serif and Monospace. The Serif and Sans Serif families are meant for variable pitch fonts. Emacs uses these same "Sans Serif" and "Monospace" families. Websites specify the font the browser should use in a specification, which should always include a font family, as follows: font-family: 'Arial', 'Helvetica', sans-serif; As you probably understand, this means "please use the Arial font for that element, or if it is not available the Helvetica font, or if neither are available fall back to the default sans-serif font". Likewise: font-family: sans-serif; means "I don't care about the font, please use the default Sans Serif font". --WXhK1kKIm1 Content-Type: image/png; name=firefox.png Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: attachment; filename=firefox.png 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 AIDsEIYBAAAAALJDGAYAAAAAyA5hGAAAAAAgO4RhAAAAAIDsKAxdAeSwZ8+e rVq19tSp00+e+MfFxqpUybqnTpw47FHJw9AVBAAAAADDM3AY/urLmUuWLMv8 /r169fj9j0WGrbOepCTVgvkLpSUNGtRv3qKZQSqzffvOcR9NTEpKMnSrAAAA AECexp3hd6VSJc2b97O0ZPyEjwwShoOCgieM/4QkDAAAAABvRRjOP3bv3pOQ kCAtsbOzq1mrRoECBbSbtnZ2hq4jAAAAAOQJhOH84/HjJ3olR44eKFWqlKHr BQAAAAB5Tp4Lw40aNaxWrWp6z9asWd3QFcy7EpRv3Ba2sLAgCQMAAABAmvJc GO7YqcPo0SOz+qqbN2/t2LHrwvmLT58+jYyMEkIULOjo7u7eoEH97j28K6Uz hfK+vfuHDBkhLdm8eUPzFs3CwsL+/nv1vr37nz17lpiYVLRokRaezT/6aIxe tmzWrNW9u/dSH3bRwt8WLfxNWrJh45pWrVrqNm/fvrNt246LFy49fvw4JiZW pVLZ29s7ORV0cnIqV65s5SqV6tapU616NXPzTJ2dNWvWTfpkSurypKQkVxe3 17Vt3nTLlo252m4vXgT9vWLVgQO+L168iI6O6dW75++/LxQAAAAAkPfkuTCc Vc+fv5j0yZSjR4/plQcFBQcFBZ89e27+/IXt27f96ee5rq6umTngnt17J03+ LDIiUlfy5In/kyf+69dtXP7Xknbt2rxLbVWq5KmffbF27XqNRiMtj4iIiIiI EOLRhQsXtSXL/1rSpUsnI2q3AwcOjvtoQnR0zOuiNz8jAAAAAOQdpoauwDu5 evVaq5ZtUyc6PQcOHGzp2e6u3923HvCfTZtHjBgtTcI6iYmJo0Z+GBAQ8C4V /nrW7DVr1mkMnRJzvN0uXro8YvjIN5KwEAb/mAAAAACQnjx3Z3jvnv0BzwLT e3bW19MVin/rHBwcMshnmLZz71u9fPlywMAhhw8fKFjQMYPd/tm4OYNn4+Pj f/31jx9++F/2Plp0dMyKFX9LS0xNTcuXL+fk5JSYlPgyNCwwMPA9BMjcaLd5 c39KSUnRKyQMAwAAAMiz8lwYPnv23Nmz59J7dvqMabow/MOceaGhodJnS5Uq 9c03Mxo3aazRaE6cODlj+qwXL4J0zwYGBC6Yv3DW1zMyroCZmdmgwQPbtWub nJz85x9Lzpw5K3129669ujB87NhBjUYTH68sV/aNsbXjxo+dNm2q3jGFENev XVepknWFJUuW3L5jc/Hir4f1KpXKixcuHTt+Ysf2XZlvsYED+/fr10cI8enk qevWbdCVW1hY+D99oNs0NTXNvXbTJuECBQq0adOqlHup6Kjom7duZf4jAAAA AMB7lufCcCZFRUVv3LhJWmJnZ7d9x2Y3t2Laza5dO1euXMmzRZukpCTdPitW rPpi2lRLS8sMjvzL/B+12VII0aqVZ/t2nW7fvqN79uXLlyEhoYULu4r/Iq6Z mX5XcxMTE11il4qNjZVu1qlTS5qEhRDW1tbNWzRr3qLZ9OnTEhMTM9kUurcz MTHReyp1NXKv3erWq7Ny5XIXFxddSXx8fCY/AgAAAAC8Z8Y6ZvjEiZPJycnS kv79++oSnVa5cmW79/CWliiVyvPnLmRw2Np1aumSsBDCwsKibVv9GbPCwsKy V2fXwm/MRLVz5+6ZM74+cuRoQECAWq2WPmViYmJlZWVE7WZnZ6eXhIUQNjY2 ufERAAAAAODdGWsYTj2rU5MmjVLv1rixfqHf3Yymg+rU0UuvpHBh/bmUX716 lb0616hRw8nJSbepVqv/+GNJv74+dWo3LFWybLOmLceM/mjlyjUvX740unbr 1q2rXhIGAAAAgLwsz4Xh2d/OCn35PL3/dD11w8LD9V5YuEiR1EcrUqSwXkl4 WEQG716uXFm9Eitr/Tu02Z4XysLCfPbsmWk+lZSkunfv/tat26d8OrVG9bpT Pv1cqVTmRvPmUrvVq183N2oLAAAAALkkz4XhTMpkIs1qcC1QoIBeiXZgcE7p 3afX2nWrKlXyyGCf5OTklStXfzR2Yg6+b1YbJKvt5uJSKDdqCwAAAAC5xFgn 0HKW9DfWCgkOTr1bSEioXomTs5MwqLZtW7dt29rP7+7Jk6fu3PZ79Ojx06dP Q0JC9fLn7t177vrd9cgwNueddjNXmL+3BgQAAACAd2esYbhylcp6JWfOnPPq 2CFV4Vn9F+Z0vEw9h3NmVKrkIb0/HBMTu3XLts8//1K6Wu/58xdzPAznnXYD AAAAAAMy1m7SzZo11Vs3aP36DUFBb9zkfPz4yfZtO6UlVlZWDRrWz9maWFlZ 6eXhiPC0h9eqVMnhqYbsatnb2w0dNtjN7Y2VliKjIvNxuwEAAACAARlrGC5Y 0LF3757SkpiY2G7ePffvOxATExsdHbN7956ePfrordY7dOigjBfLzQZTU1On N/se79277+zZc3FxccnJycnJybplk2JjY2pUr/PBiNGbN20JDg6RvkSj0eza tScwMFBa6OSU8z268067AQAAAIABGWs3aSHE1M+nHDx4WLrq75Mn/oMHD09v fze3Yh9/MiE3alKjRvUjR47qNiMjo7y79pQ+e/DQPu3jpCTVzp27d+7cLYRw dHQoXry4nZ1dkiop4FlgaKj+MN3mzZvl73YDAAAAAEMx1jvDQohixYquWfO3 o6NDZnZ2dnZes3ZlbtxrFUL06dsrG6+Kioq+dev22bPnLl+6kjoJDx022N29 VG7UNu+0GwAAAAAYihGHYSFE7Tq1jhzxbd7iLXdQ27RpdfTYwSqp5o7KKd27 e3fr1vWtu5mYmJqavr3BFQrFmDEjv//+21yqrcgz7QYAAAAAhmLE3aS1ipco vnnzhhs3bm7fvvPC+YtPnz6NiooWQjg6Ori7uzdoWL97d+/cjnMmJiaLl/zu 1bHD5k1bbt68FRERmZSUlHq3ggUd7z+4c+7c+atXrt6+4/fU/2lwSMiruLjk ZLW1tbWTk1P58uUaNWrQrXvXUqVy5Z5wXms3AAAAADAUE73lbQEAAAAAyPeM u5s0AAAAAADZQBgGAAAAAMgOYRgAAAAAIDuEYQAAAACA7BCGAQAAAACyQxgG AAAAAMgOYRgAAAAAIDuEYQAAAACA7BCGAQAAAACyQxgGAAAAAMgOYRgAAAAA IDuEYQAAAACA7BCGAQAAAACyQxgGAAAAAMgOYRgAAAAAIDuEYQAAAACA7BCG AQAAAACyQxgGAAAAAMgOYRgAAAAAIDuEYQAAAACA7BCGAQAAAACyQxgGAAAA AMgOYRgAAAAAIDuEYQAAAACA7BCGAQAAAACyQxgGAAAAAMgOYRgAAAAAIDsK Q1cgO5KT1SqVKjlZrVanGLouAAAYnpmZqUJhZm5urlCYGbouAAAYBxONRmPo OmSNUpmQmKgydC0AAMiLLC3Nra2tDF0LAACMgJGF4VevlCpVsqFrAQBA3mVu rihQwNrQtQAAIK8zpjHDSmUCSRgAgIypVMlKZYKhawEAQF5nNGE4OVlN72gA ADIjMVGVnKw2dC0AAMjTjCYMq1QkYQAAMot/NwEAyJjRhGG+4QYAIPP4dxMA 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 mNhfflnYoUPnihWqFHdzr16t9pAhI/bs3pvmu0iPGR8fP3/+wpaebcuUrli2 jEfHjl1XrlyTwcDLLL3RwAGDXV3cmjVrJYQICQn99tvvmzVtWaZ0RVcXt9On z7q6uGkHDAshJoz/RFsl7X9ffTlTW57x5IRqtXrDhn/69fWpUrmmW7FSHhWr eXftuWTJMr1cpHXt2nXtoXbt2iOEOHz4SP9+gypXqlHcrXTdOo0+//zL4OCQ ND/Fo0ePFy38bUD/QbVr1S/uVrpkibJ1ajccPWrsieMnDfeTkvMCAgKSkpJ0 m15eHQYPHqRLwkKIYsWKdujQ/rv/fXvq9Mk+fXund5yHDx/+8MPc3r36NmrY pHKlqnXr1O/cqcvXs75J73vQTydPkc4Rff78BSHEoYOHRgz/oHGjJhUrVPpg xEjtnunNJl21SvUK5T2WLFkqPeyUTz/T7Tlnzg+Gbl0AAIxD4PPn2gceHh6Z f1WaF2y6C84M/pNezWppNJo9u/eOGD6qVs16xd1Kly3j0dKz7ezZ/wsJCTV0 22TTJ598PNBnYLXq1cyzMm4rKipqy+Ytuk03t2LL/1qml4SFEIULF+7dp3fm Dwvk3TvDQggrS0vtgyRVkt5TERGR/fr6XLt2XVeiG4Fw6eLlQYOGSeemCw4O 2bd3/769+1u29PxrxZICBQqk+XahIaEjR3547959Xcmli5cvXby8c8fONWtX Wltb6+2f7Te6evWaz8ChL1++TF35bAsNDR04YMj16zckTRRx9uy5s2fPLV3y 1/oNq8uVK5vea2fN/Ob33xfrNp89e/bX8r937dyzY+cWvVfdunW7Vct2ei8P CAgICAjYtm1Hv359fpn/Yx6cVzkbEhKU0k21Ot0OyZaWliVLlkxdrlQqv571 zbZt26UnNyYmJiYm5v79B2vXrvP27vrN7G+sra0yqIZGo/ly2lebNm2Wlhi6 bQAAshYY+FwIkeZt0hzZP0+xtvr38s/f/2kGl1K5JDw8fNjQkefOndeVJCUl aWeZ/Wv533/8saiDV3tDt9B7smf3HukItQ8+GGFra2voSr0nsvqNe//ydBi+ +18u1U78IzXpkynXrl1v1rxpl86dXFwKPX/xolChQkKIR48e9+rVLz4+3sTE pG/f3t7duhR0LHj/wYM//1hy547f0aPHhg0buXHjWhMTk9RvN378J/fu3e/b r3fvXj2dCzk/fPjojz8WX7l89eTJ0x+NnfjXiiXSnbP9Rq/i4kYMHxUZGdm3 X+9mTZtaWVvdu3vP0dEh9OXzbM8mnZSU1LtXfz+/u0KIxo0bDR02uGTJkiHB wevXb9y/3/fp06fdu/U6fuKwk5NT6tf+vWLlyZOna9epNWBAv9Lu7lHR0evX bTh06MjLly8nTpi0Z+8O6c7JyckKhaJZs6aeLVtU8qjo4OgQERHx4MGjpUuW BwQEbNjwTyn3UpMnf2zoH5wcUKRIEenmvn37nb6e3bNnj8qVK2Vm7QSlMsHH Z/DNGzcz2GfHjp2Bz5+vWvV3Bt+M/vHHn2ffXHuMMAwAMCyfgT6xsXFr1qys lIkFbPzu3PHxGSKEuHzloqErnh01alYXK4UQ4n/fzaldu2aal1KZ9MHI4QN9 BqQu12g0o0Z9eOzocSFERY+KuvL4+Hjvrj3v339gamratWvntm1bl3IvpVar L164tHjxspcvX37wwegdO7bWqVvb0I30Ply8dFm6WbNWraVLl/keOPjo0aPE xEQnJ6dq1at17dqlfft2aV7kGzVZ/ca9f3k3DN+543fQ96AQwtTUtF69OnrP njt3fubMrz4a96Fe+WdTPo+PjxdCLFo0v0/fXtrC2nVq9ejRfcCAQSeOnzx2 9PjmTVt69+mV+h2vX7/x3f++GTlyhHazSpXKnTp5DfIZdvjwkd279xw5crRV q5bv/kaBgc8tLS23bN34ehR0187v2FaLFv2uTcIDBvT7Zf6Pur8CXh07/DBn 3k8/zQ8JCf3m6+/mL/gp9WtPnjw9eLDPvB/n6F7VuXPHEcNH79695+LFS7du 3ZYu9VyqZMkLF8/ofdXUunWrESOGjRg+cv9+399+/WP06A/ywXd1rq6uHh4e d+/e1ZWsXbN27Zq1BQoUqFKlcrXq1erUqdOgQX1px2mpb7/9TpqECxVy7tO3 j7u7e1hY2Ib1G3UjXi5furxg/sJPp0xOrxp6SVhkIgwPGNBflZx87erV27fv 6AqbNGnsXrq09nHdOnUEAADZ1aZtm1UrV/v4DHnr1bn2ujw2NnbwkEGGrnU2 9ejRbd7cn4KCgm/dul2ndsOOnbyaNWtSq2aNcuXLZbUrnIWFhcWb82xpzf3h R20SHjlyRFfJNeHXX397//4De3u7jRvXSRNvo0YN+w/o29HL++nTp19+NWP/ /t2GbqT34c7tN8aXjfxgZFjY676ZISEhIQdDDh08VK9evQUL5xcq5Gzo+uYk Wf3GvX95bsxwcnLy48dP/vxzadcu3VWqZCFEj57dU38P17hxo9RJ+P79BydP nhZCdPBqrwuoWhYW5r/+usDS0lIIsXTpX2m+dd16dXRJWEuhUPz8yzztRNZ/ Lf87p95owoSPcnA+sJSUlL9XrBRCFClS+Ps53+p9Hzbls8naNLt589bIyKjU Ly9e3O1/37/xKhMTk08m/btW3tmz56Q7F3QqmGanC3NzxXf/+0YIERcXd+pk plZLz/s+mzol9U3gV69eXbhwcfmyv8Z++FGjhk0+nvjJgwcP9fZ59uzZ1i1b dZvFixffs3f3xx9P7NbN+4MPRuzavcO9tLvu2VWrVkdFRWVQjSJFivzyy08X L124fuPqtu1be/XqmXG1p335xcyZ05s0aSIt7Na928yZ07X/tWnbxtBNCwAw Yl999WX37t1iY2N9fIb43bmT3m666/Lu3bt99dWXhq51NtnY2Kxbv1p78fPq 1atN/2yeMP6TZs1alSldsWePPr//9qd01Fs27Nm996ef5gshmjVv+s3smbry sLCwtWvWCyGmfj4l9b1fFxeXr6Z/IYS4cvnqw4ePDN1I70NERKR0U5qEpS5e vPjBiJHS1SXzAVn9xr1/eSUMFytaSjtzQLGipRo2aDpj+qyYmFghRKVKHv/7 3+zU+w8c2C914fH/po8bPNgn9bNFihRu376tEOL69RtRUWksHptmz+SiRYt4 erYQQpw6dUY3cPQd32jAwP452HR3797TTqLQs1eP1AObTU1NBw0aKIRISko6 92ay1erW3Tv1slVVqlTW5vmn/s9EhlJSUpKTk5OTk4sWLaqd3/jW7TsiX2ja tMn8Bb9kMGlzUlLS3r37unl3375tu7Tc1/egdIzxiBHDChYsqNu0trbu1s1b t5mQkHD6VLpfH1hbW61avbJT504ODvbW1tZVqlTu1LmToRsGACB3P8ydk/HV ufS6/Ie5cwxd33dSpUrlU6ePzfp6RqVKr+fQUiqVJ0+enjVrdt06jRbMX5S9 QUx37vh99NFEjUbj7l5q2bLF0lvNhw8d1U7k6e3dJc3X6pZuunL5qqFbKNdp NJq4uDi9QoVC0b1Ht/Hjx7XwbCEtv3PnzvLlyw1d5Rwmq9+49yyvhOHUXFxc Jk2aeMB3j6OjQ+pnq1evlrrwrt897YM6ddIePlGvfl0hhEajkXZ/1aldu1aa r6pZq6YQIj4+/unTZ+/+Rk5OTm5uxXKwobQdpIUQdTOsjBDijl8an9qjYsXU haamptpmT/2nRwjh63vowzHjGjVsVqpkuSKFSxQrWkr7X3R0jBAiIjwiBz+d YXXo0P7Q4UOfTplcqVKl9IagqFSqadO+kt4fvi6Z100I8fXXs6XTPlco7zH/ lwXSHe7c8UuvAl26dnV3L2XoZgAAQF8GV+f577rcxsZm7NjRx08cvnnr6ooV SydP/rhZ86bm5gohhFKp/O67OTOmf53VY0ZERAzyGRYfH29ra7t69YqCBR2l z167/u+1RNUqtdKcd7pypRraHcLCwgzdPLnOxMQkdaf0337/9Ycf5oyfMG7p 0sVjPhwtfWrjhn8MXeWcJ6vfuPcpr4wZXrrsT22XVFMTE1tb2xIlS5Qu7Z7B CPiCTgVTF2q7AZubK/T+oOi4urpqH0Sl1WFYOwVXarrpu3Svepc3ckqr5u9C 9xYuri5p7uDqql9/KWsb6zRfpT0d6pQ3ZlF+9erVsGEjtSNb0iOd6y8fcHCw HzVq5KhRI6Ojo69evXr92o0LFy5euXJFeu83OTl5/fr1M2ZM126GZ/HrgIiI dPevX7+eoRsAAIC0aS+7t23bLh3NmL+vywsXdu3UuWOnzh2FEBEREXPn/qQd Rrd48dK+/XpLp1nJWHJy8vBhowICAkxMTH7/Y5F03iytsJeZjbgJaa2gmf/Y 2tpGRr7uKV2uXLmWLT11myNHfrD4zyW6+/MhISHPn7/I2ZtPeYEMf+Peg7wS hjt18lIoslCZLO38rnJ0/l6zXKv5e5g9b+rUadok3K1b1z59e3t4VCxUyNnS 0lL71pU8qoeHh+fX6Y4dHBw8PT09PT2FEC9eBI0bN/7WzVu6Z2/euJXtI6tU qvSeymczQAAA8hm9q3MhhHyuy52cnObM+S4yInLbth1CiB07dmU+DE+bNv3M mbNCiM+/+KxDh3apd1CrU4QQFhYWAYGP89/0yNng5lZMGoZLlyktfdbOzq5Q IeeXkm8QIsLD818YFvL+jcsleSUM5wjtfVqVKjkqKjrNztW6SQ4c07qjGxYW VqRI4TRe9V//E92r3vGNcpbuLV6Gpj2Fg+5PwztWJjIicsvmbUKIwYN9fvzp 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 z7t376b7mXzxIujGjRsnT5z09fXN5nu8m4zPhfavkI69fdq/Ss2aNbW3t4+J iRFCqNXqLVu2jhv3kUE+DgAAeG/yQ0qRocDnz7UPPDw8svHyhISE1avX7t93 4O7d+1FRkbZ2dpU8PDp19ho0aKCVlZXezgMHDD548HBFj4onTx4JCQldunT5 gf2+z5+/iIuL27Z9c5MmjVLPJr1505axYyfojvDX8r//Wv639nHLlp4b/1lr 6PbLDoXC3MbGRghha2tbrFjRJk0ajxgxYvy48brRkkKIp0+fbtiwcciQwalf /vDhwy1btl66eDkwMDA6OtrGxqZIkcL16tXr2atn1apVpHsuXrzkpx9/1nv5 s2fPKpR/fa6vXb9iY2OjVCqPHTt+584dP7+7L56/iImJiY2NUamSbW1tixUr VqVqlc6dOjZs1DD1bcPvvv3fypWrdJvzfpwrDVQxMTF167z+GqV8+XJ79u5+ a/u09Gz1/PkLvcIffpgrHUI8fvy48RPGZaa1d+96fVu4adMm2k6tuXqCTp06 vW/f/mtXr4aGhr56FW9vb1+qVMnGjRv3H9AvzSmsM57B+OTJU7dv3fbz83vy xD8mJjomJlapVNrY2DgXcq5cqVLLVi07dGivl8mtra3atW+3fdt2XcmunbtT h+H9+/breo8LIapWraK71921SzfpIPMTJ48VKVJEt3no4KGxY183/kCfgTNn Ts/MuQgICNB9MSGE8PLqMHjwG5PGFytWtFixoh06tJ8xc7q0TXK8hVUq1dq1 63bt2v3U/2lMTMynUyaPGjUyvXNx7dr1Pr37pj5s82aeuseLl/zZsuW/m+bm 5q1atdy+fYeu8QnDAADke4Rho6SLrP7+/ll97bVr14cOGfHixesuuJERkWfO nD1z5uzyZSvWrF1Zrlza/UivXr3mM3Doy5cvdSV5cHzg++TiUmjxkj+7dPbW 9gbX+nvF33pZS6lUfj3rm23btkubKyYmJiYm5v79B2vXrvP27vrN7G+sra0y /9Zajx4+mjjh49TlUVFRUVFRd+7c2fTPpsaNG89f8LOjo2MGx8ntTrZZFRUV JQ11NWvVzN5xMnmCAgICJk/6VG9MQURERERExNWr15YuXTZp0ifDRwzL0luP +2i8UqnUK4yNjY2NjfV/4r93775FC39dsHC+3qhgb++u0jC8f/+BGTOnKxRv /JXWdeXV6pr+beGcOq0JCW98EGkU12NpaVmyZMnU5TnSwlFRUSNGjLx546au JMf//tSsVVMXhp88efLs2bM0Pw6AwMDnQojixd1yaX8AeG9MDV0BZEfNmjW0 D1b+vfrmzVuZf6Gf391u3r1evAiysbEZO3b0suWL9+/fvWHjmpEjR1hYmD9+ /KRvn4HaDth6XsXFjRg+KjIysm+/3r/+umDZ8sVTpkxydHRI81169e4Z+vJ5 6Mvn2jt1w0cM1W6GvnxupLeF0+Pg4KA3y/Hz5y+ePHmi21QqE3x8Bm/dui2D C/cdO3YOHz5Ct/Zpzjpz5sy4j8Yb19cWly5ekla4RvXq2T7UW0/QkydPenTv lcHo+qSkpDlzfpj7w7yc/YzPnj0b+cHIly/DpIWNGjWU3iONioo6deqUXuWv Xr2m2zQzM+vcuXPOViw16e1lIcS+ffu//nr2rVu3Mzk/X0618MSJn0iTsBBC 5PQPdfU3f9LOnzufw28A5Bc+A328u3bzu3MnMzv73bnj3bWbd9duhq41AKSB O8NGqXRp9w5e7ffvOxAXF9e2jZenZ4vWbVrWrlWrStXKqfs566SkpIwe/VF8 fHzlypU2bV7v4uKie6pVq5Zdunbq1bNvQEDAokW/zZjxpd5rAwOfW1pabtm6 sVGjhv8Wdc31q3Cj0Kp1q9mzv5WWXL92XTdn2Lfffie9gi9UyLlP3z7u7u5h YWEb1m989uyZtvzypcsL5i/8dMpkIUTVqlUH+gxMUavXr9+ge6GdnZ30HqC5 ubnusaura5OmjStWqFiwYEFLS4uo6OirV67u2bM3OTlZu8OFCxePHj3WqlXL 9D6CqWkOfCnWvXv3yKgoPz+/K5ev6Apr16ldqVIl3Wb16tUyc6jLV65INytX eacpoDM4QWq1euyH46RTQ3l4eHh7d3Uu5Pzo4aO1a9fFxcVpy5ctW96wUcPm zZtl/n0LFCjQqHGjKlUqFy5c2MbaOl6pfHD/wbZt26OiorQ7hIWFL1u2/Isv pkpPRKfOnbQL3mrt3rXH09NTt7lnzx7p1wSNGzfKYKGyHDmtQghXV1cPDw/p vfq1a9auXbO2QIECVapUrla9Wp06dRo0qJ/msPYcbOGzZ87qlWT8FY+LS6GB PgOFEAf27w8LC9eV9+jR3drGRvu4ePHi0pd4eFRUKBS6X5ybN2/17tM7R9oQ yGfatG2zauVqH58ha9asrJThLP1+d+74+AyJjY0dPGRQpg8PAO8PYdhYLVz4 y7ChI06fPpuSknLkyFHtDDdmZmZVqlRu3qJZn949PSrpDyf2PXDwrt9dIcRv vy+UJmGthg0bDBjY/+8Vq/7ZuDl1GBZCTJjw0eskjP+4uRWzsrKSTqgbHh6h ffDs2TPdSrlCiOLFi2/ZuqlgwYLazYEDB3h7d/d/4q/dXLVq9QcjRzg6OjZp 0rhJk8aJiYnSMFywYMHUIzydCzkvW7akWfNmeh1iBwzo37RZ0ymffqYr8T3g m0EYzpHetBMmjhdCLF/2lzQMt23TJhvrDAdJ+vBbWlra27/TVFUZnKAdO3Y+ evRIV96mTetff1uky5BdunTu0aOXbrjswgWLMh+Gv/56pldHr9QzdfUf0L9L 5666hZF8D/hKw7AQwtu7izQMHzp0WKlM0HWhlw6lFhn2kRZC5NCJFUKIz6ZO +WDESL1bwa9evbpw4eKFCxeXL/vLwsKiTZvWH437qHz5Nxb9ytkWrl271uRP J1WrVi0hIeHOnTsKhXkGO7u5uWl/ZW7dvCUNwx9/MlHvXreOQqFwdHTQ7fz0 v++qAOj56qsvY2Nit23bnnEe1iXh7t27ffXVl1l8EwB4H+gmbawcHR22btu0 dNmfzZo1MTMz0xaq1eobN27+uuj3Fi3ajP1wvO6ui9bevfuFEOXKlU1v/dIm TRoLIUJDQ7XDe/QMGNjf0B86j9Kb3knX7L6+B6UDLEeMGKZLwkIIa2vrbt28 dZsJCQmnT53O0vsWLVq0eYvmaQ4N7dChvbT8doad2Uxy6BZiTomIiNA9dnBw eIcj/Su9E7Rv335p+SeTPpHeTa1QsUKduq/X771x44Z0wHzGunXvluac1e7u pSpXfn2r/Pnz59HRMdIdKleuLM2T8fHxRw4f1j5+9OiR9PastbV1u3ZtM6iD qWmOheGmTZvMX/BLBpM2JyUl7d27r5t3d+mY55xt4QoVK6xc9Xe9evWsrKwc HR0bN25cv349kdMcHBx1j1+GZvZ0AzL0w9w53bt3i42N9fEZkmZ/aWkS/mHu HEPXFwDSxp1hI2ZiYuLt3cXbu0tcXNzlS1du3Lh59er1kydPRkfHaDSazZu3 Pn7yZOfOrRYWFtr9r12/IYR4+PCRq8tbJrEICwvTm+jCycnJza2YoT9xHqX3 pYOuv+j1N8dJfv317K+/np3Bce7c8euUxQV11Wq1r+/Bo0eP3b93//nz50ql Ujrxr05kRGQGB8mp/rQ5JfK/jsQih1YwyuQJ6tTxLT3//e74ubRwEZlz5fKV ffv237x589mzZ3Fxr9JbjDcyMlLvM3b17iqdTnz37j3anwq9qbPatWtrbW2d QQVy9rR26NC+UaNGGzdu3LN77927d9PsoqxSqaZN+6pK1aq6PJ+DLTx69Kgc WRMrY9JzkXoKNABS2oib5v1hkjAAY0EYzg9sbW1beDZv4dlcCJGUlLRm9bpZ s2YnJCRcuXz1779XjRr17wRCYW/O1pMBXTdOHSengpl8rdwEBAToNZeTs5P2 ga47biZJ74hmhr//0w/HjJV2Q01PekksTQafbMvK8vW494SExHc4khDpnyC1 Wi0dy5oZmTxBSqVy8uQphw4eyszOenM1CyG6du3y80+/6NLmiRMno6NjHBzs 9+ze+8ZuWVxe+N0nUXNwsB81auSoUSOjo6OvXr16/dqNCxcuXrlyRdr9ITk5 ef369TNmTM/xFs6N+8CpKZWvf1MKFLB5D+8IGLU08zBJGIARIQznNxYWFsNH DDVTKKZ8OlUIsX37Tl0YVqeohRAtPJtv2rQ+q4c1U/CjkrbUmadmjRrZO1SW JpRWqVSjR42RToyspVAotLcEpbeIMw5CKW8ulhMentkvTXKJ9JuXrKap1N7/ Cfp61jep39TMzEw7nCE5OVk6+Db1qSlatGi9enUvXLioe1PfAwcqelR8+vSp bh8Xl0KNGzfKuBpq9RtDfMPCw0UOcXBw8PT01M7s9eJF0Lhx429J5rS/eSML 89tnvoULFSqUU/XPQHR0lO6xk5PTe3hHwNjp5WEhBEkYgBEh4eRPvXv3+GzK 5xqN5tGjx7pCZyenyIhIaQneUURExLJlf0lL3NyKuZd21z52dn7jYnru3DlN mjbN4GhWVlnoBXr8+AlpEnZwcPhm9tdNmzbR9gFWq9VVKldLb/EbvQ608W92 B3361MDzBjk7v54hOTY2Vq1W60bFZ1UGJ8jMzMzBwUE3t7OJicmBA/sK2Npm cDQ7u4ye1YqKitqxY6du09TU9JNPPu7Rs3uhQoW0o7gH9Pe5dOlSxgfx9u6q C8NCiF27dj948FC6Q6dOnVK3id5pVSrjhXjdktIsnYOKFSv68cQJH3wwSlei 65Sesy2c7Z+BLImKev3lC2EYyCRpHhZCkIQBGJG8NVYQOcXGxib1GkvVqlUV QgQGBN6//8DQFcwPQkJCRo4crTflz9BhQ3WPq725ktD1GzddXAql95+VlWWa i9OkRzqXkhBixIjhXl4ddEe4e/deBsvA2ti80f9TLyZt3LAx221iavbGnxRt Z4Sskq7GpNFoHj9+ko2DiEycIOlSTxqN5u69exmfoAzWLdN58OCBtNtwo0YN R48Z5eLiok3CarX6wYO3//Z18OogHR974cLF7dt3SHfwlky9ppPqtL7+UiMx MXHH9p0iW+Li4saPm3Djxo30doiOeWMOMOmw29xo4dwTFBQUHx+v26wkmeoM QMZ082mRhAEYF8KwUUpKekt3zevXb2hnfylZooSu0KtjB+2DBQt+NfQnMD4q lSomJiY6OjowMPDEiZPfzv6uQ/uO0jWEhRClSpXq16+vbrNd27bSm3Ub1m84 c+ZM6iMHBATMm/tj9249s1Qf3WqoWuGSTrBJSUlzvs/oQqREyRLSzc2btmhv PGo0mlWrVh89eizbrVTgzTz28OHbxzOnVq9+XemmtAtuBrJxgtq3byd99rtv /xccHJz6yNeuXf944iczZ8zKTDWSVW+cl8jIKGlH6PnzF2Sm47ednV3Llp66 zZSUlCjJpGJly6Y9IXyJkm+smvvrol+1N2mVSuVXX04Pz2436ZSUlAMHfHv1 7NO5U5fff//j8qXLuoG1KpXq0MFD//vue+n+Hh6vF3XLjRbOPTfe/GmpV+99 jFIG8o0f5s6ZNu2LadO+IAkDMCJ0kzZKvr6+y5etGDd+rKdni9S9B0NDQz+e OFn7uGMnL115ly6dKlQof//+g03/bK5WreqYMSNTH/n+/QdXr1zr26+3oT9i nvPPxn/+2fhPBjsUKFDgjz9/k97Qcy/t7t2t67at27WbarV62NARbdu2qVOn diEXl7i4OP8n/pcuX9YGtkKFnEVWlCv3xoKua9asVaeoq1ev/vLlyy2btz5+ nFFn+Hr13kib4eHh3l27lS9f/uXLUOmKrNlQyt1durlzx86IiIiSJUuYmZoJ ISZ/Oikzt/4qVKjg4GCvW3Poxs2b3Xt0e+ursnGCuvfovnTpMn//f2+Mh4SE tG/XoXv37uUrlLe3t4+MjLx39965c+cDAgKEEB07dcxMC5QtV9bExEQXgO/c uTN61Ift2rdNTEg4fPjIqUyvntXVu+v+/QfSfMo7namz6tevr/thE0JcuXK1 RfOWJUqU8Pf3l97wzLb79x/cv79A+9jW1tbc3Dw6Ojp1BwRpQ+VGC+ce6Vcn VlZW1d/s2QHgrYYOG2LoKgBA1hCGjZJGI06fPnv69FlXV9cWns1r1apRpEhh CwvL8PDwSxcvb9u2Q3tHqHRp99GjP9C9yszMbPnyxV5eXePi4mZMn7V/34E+ fXtVrFDB3MI8PDz81s3bvr6HLly46O3dhTCcVSVKlPj1t4V6AVUIMXPmjPv3 7t++/e8ajBqNxtf3oK/vwXd/x9atW7u6uoaGhmo31Wr1mtVrhVir3Sxfvtyj R4/T6yldokQJT0/PY8eO6UqSk5P9/Py0j0uVKpXt8aU1a9aQ5tiUlJQTx0/o nh0/YVxmwrCpqWmr1q10ue7UyVPv3lxpniCFQvH7H7/16zsg5r+Ovkplwrp1 WZ5eTsrV1bV161aHDh3WlRw7dkzX1DY2Nk5OToGBgW89jqdnC0dHR+kNYS0T E5MuXbuk+RIvrw4//fiT9OuM2NjYO/+t//kupzU1vdWqdDp37iSd9jk3Wjj3 nDhxUvfY07OFglkDAQDI7+gmbZRcXAo5OjoIIUJDQzf9s3naF9OHDxvlM3DI xAmTVq9eq71ObdiwwfYdW/SGEVb0qLh37w7tKqBnzpz9eOJkL68ubVp36Ntn 4OzZ/zt//oJGo8nSyFXY2toOHTpk2/Yt0pGuOjY2NmvXrenRo7t2yGgG0nx5 BqytrRb9utDePo1leMuUKbNs+dKM3/Gb2bPc3NJYbrpWrZrLli/NdmtYWlp+ +umn79Cc/+revbvu8dOnT2/dup3tQ2V8gsqVK7d12+ZatWpmfBBzc/Ny5cpm 8h2//W52hQrlU5fb2dn99vuven3U06NQKLy8OqQur1OnTnorftvY2Pz407w0 v27o16/vlM+yeV4sLS1beLYwNzfPeDcTE5O+/fqk7h6ZGy2cG548eSIdh9+9 R/d3OBgAADAOfPNtlBo2bHD7zo0zp8+cOHnq2tVrjx49Dg+PUKvVtrYFihcv XrNmja5dO3u2bJHmaz0qeRw/cXj79p179uy7fu16WFh4SorawcGxbNkydevV 6dCh3ftZz9MYmZqaKhQKGxsbR0eHwoULly5dunbtWm3btS1QoEAGr7KxsZnz w/djxozeum3bpYuXnz71j46O0Wg0tra2bm7FypUvX7dO7SZNm6aXcDJQq1bN nbt2LF267Pix48HBwTY2NiVLlmjfof2QIYPfegO2SJEi27ZvWbJ46aHDh188 f2FlZVW+Qvlu3t69+/RK76ZfJvXt16d4ieJr16y9fv1GZGSk3tjmTGrYsIG2 S792c++evVWrVsmlE1SyZMmN/2w4f/7C/n37r1y5GhQUFBsba25ubm9vX6Jk CQ8Pj/r16+mm6daRjgTWm8bZyclp0+ZNq1au2rNnr7+/v4mJKFykSIvmzYcN H1asWNElSzL7XYN3N+/16zfoF2a4vHDjxo23btu8+M8lZ8+ei4iIcHR0qFmr 1sCBA5o0aZzJdY9Ts7S0XLp0cUxMzLlz5y9funzv3v1nz55FRkYmJCSYm5vb 2dmVKVO6Vu1aXbt2Sd0z4l1a+D3bvXuPtMItWjQ3YGUAAMD7YZLxAqSAwUVF xRq6CjCAHTt2Tvn0M+1jFxeXo8cOW1hYGLpSr9WqWefVq1fax/b29pcuXzB0 jZB9arW6XdsO2qHLQohvZn8tnWgNQP7g6EjHNwD66CYNIC/q0qVz2bL/9pt9 +fKldGoog/N/4q9LwkKIkpnr+Yw8a9++/bok7Obm1qtX1qZ2BwAARopu0sbH 1cUtG68Kffnc0BUHssDU1HTq51NGjRyj3Vy2bHmv3j1Tz53+PsXHx1+9ei0o KOiv5Suk5Y0aNTJgrfDuli5Zpnv82dQpTJ0FAIBM0E0aeR3dpOVs8+YtujHM nTt3zuoCVDnLz8/Pu6v+vErW1lZ79+3NxpBv5BExMTFbt27TPra2su7br4+h awQgV9BNGkBqfP8NIO/K4x1WFQrF93O+JwkbNXt7+6FDWRwVAAA5IgwDQNYo FAoXF5cGDep/8MGIChUrGLo6AAAAyA66SSOvo5s0AAB4R3STBpAas0kDAAAA AGSHMAwAAAAAkB3CMAAAAABAdgjDAAAAAADZIQwDAAAAAGSHMAwAAAAAkB3C MAAAAABAdgjDAAAAAADZIQwDAAAAAGSHMAwAAAAAkB3CMAAAAABAdgjDAAAA AADZIQwDAAAAAGSHMAwAAAAAkB3CMAAAAABAdgjDAAAAAADZIQwDAAAAAGSH MIy8zsyMn1IAAJB9XEsASBN/GpDXKRRmhq4CAAAwYlxLAEgTYRh5nbm5uaGr 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 vFe7d+/W3fy0sLBo0aLFW1/ynk9Qjne6buHpaWNjoxsjHRoaeu3atVq1aunt FhkRcfHCBWlJbveRTkhIOHnypG7TzMzs448/7tS5s+5nMjg4+Pbt22fPnpUO YzZG7dq104Vhf3//NNsfAADkJ/khpaQp8Plz7YP0uhqmJyIiYs+efadOnr55 89aLF0EqVZKjY8GqVat09e7cp09v87RynXup8vHx8cNHDJ0z57t7d+/9/vvi kydPhYaGOjg4NmhQf/yEsbVq1Uz9qqSkpNWr1u7Zs9fP7150dHSBAjbOzs7F SxRv1rSJV8cOFSqUz3ydQ0NDly1dcfTosSdPnsTHKx0cHAq5FCpXrqynZ4vO nb2cnfXH6CYkJKxevXb/vgN3796Pioq0tbOr5OHRqbPXoEEDrays9HYeOGDw wYOHK3pUPHnySEhI6NKlyw/s933+/EVcXNy27ZubNGmUejbpzZu2jB37eiT2 X8v//mv539rHLVt6bvxnrTBCCoXCxsZGCFGgQIEiRYo0aNDAx8dn6mef6UZL CiECAgK2bt3ar1+/1C9/8uTJrp07r1279vzFi9iYGGtra1dX11q1anXt2tWj UiXpniv//vu3337Te3lgYGD9evV0m8eOH7exsVEqlWdOn7537979+/eDgoLi 4uJiY2OTk5O1NfSoVKldu3Z169ZNfXfr559+2rBhg27z62++kQaq2NjY1q1a 6TbLlCmzYePGt7aPd9euQUFBeoULFyyQDiEeOXLkyFGjMtPaByQ3Pxs2bKht +Vw9QefPnTt0+PDNGzdehoUp4+Pt7OyKFy9ev0GDHj16pDmFdcazSZ87e9bv 7t379+8/e/o0NjY2NjY2ISHB2traycmpQoUKzZo3b926tV4mt7Ky8mzZcu+e Pa8bYf/+1GHs0OHD0m9JPCpV0t3rHjhggHSQ+e49e1xdXXWbx48dmzJlim6z d+/eUz77LDPn4vnz59Je2W3atOn7ZgMWKVKkSJEirVu3/uyzz7TdjKXu379/ 9cqV+/fvP378OCoqKjY29tWrV9qZt8qUKVO3Xr1OHTsWdHLKTAur1ert27bt 27fvyZMnSUlJRYsVa9Wq1aBBg9KcIO3hw4e7d+26fv16YGDgq1evFAqFo6Oj o6NjKXf3Sh4eFT08atWqpTd7YuXKlYsUKaLtz5Je+wMAgPwk34Zhaytr7QN/ /6flypXN/Avr12scExMrLXn58uXRo8eOHj228u/Va9etzGBxl507d4/7aGJC QoLuhbt379m//8DiJb936dJJ75g9e/a763dXVxIdHRMdHfP48ZMTx0/evn1n ydI/MlnhCxcuDhwwODr6dSfG8PDw8PDwe3fv7dm9V2g0essdXbt2feiQES9e vM4tkRGRZ86cPXPm7PJlK9asXZlec129es1n4FDp5anxjg/MEc7Ozj//8suA /v2lAWD9unV6WUupVM6bO3fPnj3S5tIGpEePHm3evNnLy+uLadNSfw3xVv7+ /ropf6Sio6Ojo6Pv3bu3Y/v2+vXrf/e//zk4OGRwnLzWFzQ6Oloa6qpVq5a9 42TyBD1//nz69Om3bt6UFkZGRkZGRt68eXP1qlUffvjhwCxOAzZ16lSlUqlX GBcXFxcX9+zZs0OHDi1dsuR/33+v91Wdl5eXNAwfPnz40ylTFIo3/kofkKxr JTK8LZxTp1X3B00r+b9ZvlKzsLAoXry4XuEff/xx+tQpvcL4+Pj4+Pjg4OAz Z84sW7p06uefv/X+9suXLydPmnT37uu/mf5Pnvy1fPmRI0cWL15csGBB6c7L li1btnSp9FuD5OTk4ODg4ODgu3fvatvw8JEj2in9pKpWraoLw6dSVRuA1osX L4QQxYoVy6X9AeC9ybdhuEbN6mKlEEL877s5tWvXdErrzkOa1OqU6tWrtW/f tlq1qi4uLgmJiU+fPl23dsOFCxevXbs+Zsy4LVvSvkt26+btNavXFSrkPGLE sGrVqqpT1IcOHfl7xark5ORPPp7cpEkjaR2++PwrbRL29u7Svbt30WJFLSws Xoa+vHHjpq/vocxfxSYlqUaN/DA6OsbS0nL48CGeLVu4uLikpKQEBgReunxl 7559evv7+d3t5t0rPj7exsZm6NBBtevULu7mFhUddfjQ0ZUrVz1+/KRvn4GH Du8vWNBR74Wv4uJGDB8VGRnZt1/vZk2bWllb3bt7z9Ex7YjVq3fPXr17ijfv mb/Ps//e2NvbDx48+Mcff9SVBAUFPX36tFSpUtrNhISED8eMuXPnTgYH2bdv X1BQ0G+//25ubp7jNbxw4cLUzz77488/81rizcC1q1elXxxUqVIl24d66wl6 +vTpiOHDM5gaKikpacGCBREREeMn5OS084GBgR9PnLh23Tppx4169eq5uLjo vm+Kjo4+f+5ck6ZNpZW/KQntpqam7d95NPVbSW8vCyEOHzo0r2DBLl26VKhY MUfWpYuPj/961ixnZ+f69etnsNuHY8Y8e/Ysdbn/kye//PzzN7Nn60rOnzu3 ZPHi7FWmSpUqhw4d0j4ODQ0NCAgoUaJETrcoYPTGjB4dFxf3559/VsjErIT3 790bM2aMEOKIkY+kAJAv5dsw3KNHt3lzfwoKCr5163ad2g07dvJq1qxJrZo1 ypUvl/EymDt3ba1Wraq0pEmTRgMG9Fu08LfZs/938sSpM2fONm6cxnxRFy5c rFmzxqbNGxwc/h1M2Lp1q7Jly0z7YnpMTOymTVtGjx6pLU9KStq3b78Qwsdn wM+/zHt9iCrCs2WLCRPHSW/zZuz8+Qvae7y/zP+xV68euvLq1at17OQ1ffq0 2NjXYyZTUlJGj/4oPj6+cuVKmzavl97ibtWqZZeunXr17BsQELBo0W8zZnyp 90aBgc8tLS23bN3YqFHDf4u6dn7vZzUvata8uTRrCSFu37qly1o//fSTNAk7 OTl16969ZMmS4eHh27ZuDQwM1JZfu3Zt8eLF48aNE0J4VKrUu3dvdUrK1i1b dC+0tbWV3jqTxmYXF5f6DRqUK1vW0dHRwtIyJjr6xo0bBw8eTE5O1u5w5cqV U6dONWvWLL2PkCM5uVOnTtHR0ffv379+/bqusEaNGhUqVNBtVs5crJUeQQhR MYsjHTJ/gtRq9ZQpU6RJuHz58l4dOzo5OT158mTzpk2vXr3Slq9evbpuvXqN GjXK/Pva2NjUq1/fo2JFF1dXa2trpVL5+NGjPXv2REdHa3eIiIhYvXr1xx9/ rHuJqalpW8mwVSHEgQMHpGH4oK+v9GuC+g0aZPA1X059/eHi4lK+fHnpvfpN mzZt2rTJxsbGw8OjcuXKNWrWrFOnTgbD2s3MzGrUqFGlatXixYsXKFAgOTn5 +fPnBw8e9H/yRLtDSkrKr4sWrVq9OoNqaJNw4cKFCxYseP/+feld34MHD37y ySe6vtZ7JHfXzczMunXvXqlSJUtLy7jYWP+nT2/fvn3n9u2UdCY/0xuz4Ofn RxgGUmvh6blxw4YxY8a8NQ9rk3BcXFzftManAIDB5dswbGNjs2796kE+QwMD n7969WrTP5s3/bNZCGFtbV23bu3WrVv17tMzzQ7PeklYZ9z4sStXrnn27Nm+ vQfSDMMmJia//rZAl4S1hg4dPG/ez5ERkWfPnteF4fDwCJUqWQjRsGGDNN9L 7yAZ0E04nOahTExM7O1f9wP0PXBQezv6t98Xpv7sDRs2GDCw/98rVv2zcXPq MCyEmDDho9dJGP8pWrSopaWldELdiMhI7YPAwEDdSrlCiGLFiv29cqWjo6N2 s1evXoN8fHQ3uzZu2DBo0CAHB4cGDRo0aNAgKSlJGoYdHR1Tj/B0cnKav2BB o0aN9GJPz169GjZqNHPGDF3J0SNHcjsMjxo9WgixZs0aaZRt4emZjXWGdf1U hRAWFhap+7JmSQYnaN++fbo8JoRo0aLFD3Pn6u52tm/ffuiQIbrhsksWL858 GJ46dWqbtm1Tz9TVs1ev/v366Y559MgRaRgWQnh5eUnD8IkTJxISEnRd6A+8 OY90xl2Lc7AvwIQJEyZOnKgXIOPj469cuXLlypU1a9ZYWFg0b978g5Ejy5TR X1+tm7f3jOnTU48KHjRo0PDhwx/+l7Hv3r0bFBRUtGjR9Opgamr65VdfdenS RQhx586dj8aO1X1VoVarb9y40cLTU7up7ZCp1aVLl6mppmGPiYk5dPBgmvOo 6c2wEBgQkFNtCOQnkydPjouN3bNnT8Z5WJeEO3XqNHnyZEPXGgDSkAOd3PKs KlUqnzp9bNbXMypVen1nSalUnjx5etas2XXrNFowf9FbR71qNJrk5OTk5GS1 Wl25SiUhxO3bt9Pcs1atmqlnvVIoFDVqVBdCPPV/qit0cipoYWEuhNi0ecs7 rkpSpEgR7YO1a9a9dee9e/cLIcqVK1ulSuU0d2jSpLEQIjQ0NDDweepnBwzs /y5Vzcds3py/R3eNfvToUWl+GOjjo0vCQghra+uOHTvqNhMTE8+fP5+l9y1c uHDjxo3TzDytW7eWlt+9dy+D4+RIZ9ccFBkVpXuc8WjnTErvBB3+r0Os1odj x0qboly5cjVq1NBt3r59OywsLJPv2LFTpzSzVokSJaRrHQcFBcW+2UO7YsWK 0jwZHx9/4sQJ7WP/J0+kt2etra09/4t/aTLNuTDcoGHD7/73vwwm0E5KSjp0 6NAgHx/pmGetFp6eac6PZWVl1bRJE2nJvQx/Stu3b69NwkKIypUrt2nbVvrs C8nkbdLh99euXfPz89OL8fb29j169rS0tEz9Lg5vfsbMn3FAbmbOmtWpU6e4 uLgxY8bcT+uXV5qEZ86aZej6AkDa8u2dYS0bG5uxY0ePHTs6JCT00sVLt27d vnDx0rmz51SqZKVS+d13c8LCwmd/O0vvVTdv3lq/buP58xf8/Z/GxcXpBebw 8Ig036tixQppljsVLCiEiIt7pSuxtLTs1t37n42bjx87Uad2wy5dOzVt0rhB w/qFChVK/fKTJ0+nnomnfPlypUu7CyEaNKjv7l7K3//pTz/N37N3f+dOXo0a NaxTt3aas+9eu35DCPHw4SNXlzTWmpIKCwvTW4/KycnJzY2pL9L2SrJ+jxDC 9r/odfvWLWn5vLlz582dm8Fx7t27165duyy9dUpKytEjR06eOvXo4cOgoKCE hATpxL860ZJ4mVpeG06s60gshHjH28Ja6Z2gW2+eoH59+2Z8nPv376f5S5qm 69evHz506M6dO9rZjNP72isqOlovZHp5eUmnE/c9cED7U6G3vLCnp6e1tXUG FTDJ0e84WrduXb9evW3btvn6+j548CDNrxFVKtW3337rUamS3v3hwMDAA/v3 X7169dmzZzExMQkJCWn2Uo7K8Ke0e48e0k03tzf+QOm+4BBCVK9e/cJ/q0/5 +/sPGTxYO7OXu7t72bJla9aqVatWLb1pyXT0zoXe5GEApLQRN837wyRhAMYi n4dhncKFXTt17tipc0chRERExNy5P2kX+1m8eGnffr2rVn09lPHbb79ftPC3 DO4Yp3d5ZG2T9oWp9l6TOuWNKVjnzPkuLu7V3j37QkNDly9bsXzZCiFERY+K XTp3HDZ8iLQP88SJkwIDAvWO+fkXn02aNFEIYW6uWLtu1YgRo+/63dX+py2s U6dOz57d+/XvI737EfYys3c5Ul+4OzkVzORr5UZv4RkhhO4+mK47biZFZXH/ gICAyZMnSzv6pidr1/SGniTcSvJD+45dJ0T6JyglJSWDebPSlMkTpFQqZ8yY cfzYsczsnPrUdPDy+v3333V/gs6ePRsbE2Nnb3/Q11e6W1aXF373k2pnbz94 yJDBQ4bExMTcvHHj1u3bVy5fvn79ut6kzVu3bPlUsobT0qVL/1q+XJ3+HNQZ NIVUyZIlpZt6s69rJHXo07fvzp07pVOIJyUlPX78+PHjx0eOHBFCFHRyGjVy ZM9evd5ah8ys6QXIWZp5mCQMwIjkre6R74eTk9OcOd917+6t3dyxY5fuqfXr Ny5c8KtGo6lVq+bvfyw6e+7kE//7wSEBoS+fh7583rVrZ5FD6wnZ2tr+/fey g4f2jf1oTK1aNbXLF9+7e+/HH39pUL+pr++hzB+qfPlyR4/6rlm7cuDA/tpV kVSq5HPnzk+Z8nnzZq2ePPHX7akN5C08m2s/Tgb/NWigP62rmUIu35tkVerM U7Vq1ewcSAiVSpWlnSd98knqJKxQKCwsLPT66Gb8Q6t3my48IkIYlKNkmZys 5tXU3v8Jmjd3buo3NTU11Z4XvU7pqU9N4cKFpcvbqlSqI0eO3L59O0AyftXZ 2bl+g7RnHNDRO60R4eHv2JI69vb2TZo2HT169OIlS7bv2FHpzUmnpDPG7dm9 e+mSJXpJ2MTERNsUenMZZvxTqrd4UgZ9+x0dHVf8/XeHDh3Sm549MiLihx9+ 2L59e+qn9H7eHAvyJSDwFnr9pUnCAIyLfBNO7z69tm3bIYR49PCxrnDJ4mVC CI9KHrv37NAGVKkoSe/NHFGjRnXtiOKEhIRzZ89v3bp906YtcXFxo0Z+ePnK Oe1ULleuvH0cqZmZWbt2bdq1ayOEiIiIOHbsxJrVa0+dOvPkif+HY8btP7Bb u5uzk1NkROSjR4/fekBkUmRk5Jo1a6QlRYsW1d3CcnrzSnrWrFkNGmY0A1ma gxjTc+bMmadPXw9Et7e3/+KLLxo0bKid1FetVjdp3Di9KXP1goReP/zUPRHe M2m7xcXFpaSkZHtUcwYnyNTU1N7eXtcl28TEZNPmzQXeHF2sJ4MJk3Wio6P3 7Xu9pJmpqemYDz/s3Lmzs7Oztjv6qFGjrl29mvFBvLy8rly5otvcf+BAhcdv /Nq2a9cudZtkfFoDAnPltBYpUmT0mDEfT5yoK4mT9Fhev369dOcOHToMHzGi RIkS2hi8ePHi5cuWZfKNstSZ38XF5ZvZsz//4osb168/fPQo4NmzJ/7+9+7e lbbJ6lWrunXrpvfCmDf/yBeUDPIHkB7p/WEhBEkYgBGR451hLWdn/Tld1Gq1 n99dIUTnTl6pk3BKSsrNm7cyefCssrKy8mzZYuGiX2Z9PV0IER8ff+RwNpfj c3Jy6tGj29Ztmzp4tRdCXLly9fnzf+dW1U6UHRgQeP/+g+wdHFIvX7785OOP 9abY6T9ggO5x5cpvTFR2+/Zt5/RZWlpmJmvpSOdSEkIM9PFp3aaN7ggPHjxI LwkLIazf7PypN2Xutm1bs90menksJROdY1OTrsak0Wj8/f2zV5ksnSCNRvPg wYOMT1Bmvq14/Pix9EZovXr1hg4dWqhQIW2WU6vVjx89eutBWrdpI723f/XK lb1790p38JJMvaaTwWlNSkrSO0LmvXr16vOpU9ObOFAIoTcHmP1/w7w1Gs0j yYe1tLScOWuWu7u77obw/QxnzHp3NjY2DRs18vHx+WLatCVLluzbv196xgMC AlJPx/D4za4WFTOxhioAIbk/TBIGYFzybRhOSnpLh8azZ/+941qyZHHtg+Tk ZG1+iE91hSSE2LVrT2RE1oZ0ZoOnZwvtg/B3fq+W/x0q4r9er14dO2gfLFjw a25/kPxHpVLFxsbGxMS8ePHi7NmzP/30U+9evaQ9QoUQJUqU6CGZ5sezZUtp ONyyZYtuXh+p58+fL1q0aPCgQVmqj24ZYa1ISd/mpKSkBfPnZ/BavcmHduzc +fjxYyGERqPZuGHDqVOnst1KemMsH2diPHNqtWrXlm76vdnI6cnGCWrVqpX0 2Z9/+kk60FTn1s2b07744oc5czJTDb3zEhUVJe39u/jPPzPT8dvW1la6FFZK Sop0UjH30qU90lp7We+0Ll26VDutlFKp/O7bbyOz2/s9JSXlyJEjw4YO7d+v 31/Ll1+7dk03sFalUh0/duznX36R7l/+v+8yUlJS9IYTx8bG6jbPnj37Lj9p GTh06NC5s2dTfxlkY2Pj6uqq99H09rkjyfxWVlZ6yw4DyMDMWbM++eSTTz75 hCQMwIjk227Ss7/5Lio6avTokdLJsXQuX7ryy8/ztY87dvp3HhpLS8siRQoH B4fs2b1vypRJ0g6Tjx8/mfbF9JyqW2BAYEBgYJpr9p44cVL7oFTJEpk51KWL lwu5FHJ3L5XGoU6eEkKYmZkV/+8SuUuXThUqlL9//8GmfzZXq1Z1zJiRqV91 //6Dq1eu9e3XO6c+bL6xffv2NAcZ6tjY2Pz400/SG3olS5b06thxz+5/u6mn pKSMHzfO09OzRo0azs7Or169evbs2bVr17SBzSmt5WcyULp0aenmP//8k5KS UrlKlfCwsF27dmV8N1U6JFUIERkR4TNwYJkyZcLCwiLebcBwiRJv/Nzu37cv KjKyePHi2i8FPho3LjM3V8uWLWtnb6+733jnzp1OnTu/9VXZOEGdOndetWqV bizuy5cve/Xs2alz57Jly9rZ2kZFRT14+PDypUvPnz8XQrR9cy2f9Li7u5uY mOgC8L179yZNmtSyZcvExMQTJ06cP3cuky3Zwcvr8OHDaT6V3tRZtWvX1v2w CSFu3LjRpXNnNze3gICA+Pj4TL5vBh49eqS701ugQAFzc/OYmJjUeVLXUGZm ZiVKlNCtpK1Wq8eMHt2jRw9rG5sbN27s2rkzR+ZfSO3G9esbNmywt7evV69e 2XLlXF1dra2t4+LiLl28eEwyltvFxSV1r3jptyfVq1dXMFcCkBXSrjcAYBTy 7b/0qmTVxg2bNm7YVLFihSZNG1etWqWQs7MQ4vnzFydOnjqw31d7DdejR7f6 9evpXtW7T69FC397+vRpR6+u4yd8VKFC+YSEhOPHTy7+c0lSkqpy5Up37vi9 e92ev3jh3bVnxYoVvLw61KpVo5hbMYVCERwcfODAwdWr1gohSpYs2ap1y8wc 6sTJU3N/+LFhwwZt27auWrVKIZdCSUlJz54FbFj/z+HDR4QQXbt2LvjfRNBm ZmbLl1keqUoAAIAASURBVC/28uoaFxc3Y/qs/fsO9Onbq2KFCuYW5uHh4bdu 3vb1PXThwkVv7y6E4axyc3P7Ye5cvYAqhJgyZcqjhw/v3r2r3dRoNEePHj16 NJt94KVatGjh4uLy8uVL7WZKSso///yje7ZMmTL+/v7p9ZR2c3Nr0rTpacl9 ueTk5Pv372sflyhRIuDNjtOZV61aNWmOTUlJOXPmjO7ZkaNGZSYMm5qaNm/e XJfrzmU6QGYgzROkUCh+/OmnD0aM0N2xTEhI2LJ587u8kYuLS/PmzY8fP64r OX3qlK6pbWxsHB0dX7x48dbjNGnSxMHBITrVPAUmJiYdOnRI8yWtW7f+7ddf pV9nxMXF6RbvfZfTmpp0KSOp9u3b15bc2O/Zq9cvP/+s23z8+PGPP/6o2yxX rtzDhw9zqkp6YmJiDh8+nN4XCkKIvqlW0oqKivLze/0XvkWGyzgDAIB8IN+G YXd3dwsL86Qk1b179+/du596BxMTEx+fAd/P+U5aOHnyx2fOnL186Yqf392x H47XldvY2Pz556/bt+/MkTCslV7Fihd3W7NmRebnUkpJSTlz5uyZM2dTP9W0 aeN5P/4gLanoUXHv3h0jRox+8OBheq/KkZVd5aNAgQJdu3b9YOTINNvNxsbm z8WLf5w3b8+ePRnfB6uQxdGJVlZWc3744eOJE6VdT7Xc3d0XLFzo3bVrBi// 4osvRn7wQVBQkF55tWrVZn39dc8313TNPAsLi3Hjxn3/v/+9Y6t27tRJF4YD AgLu+vllu8NqxieodOnSK1etmjljxs2bNzM4iLm5eek3187NwLQvvwwMDHyU amywra3t93PmrFq5MjNhWKFQtG7TZuuWLXrlNWrWLFq0aJovsbGx+Wb27MmT JqVej6pHjx4NGjac+tln2WhAS0vLJk2aXLhwIePJtE1MTLp16yZdVEkI0bdv 3zu3bx94c4VkIYSpqenYsWOTk5NzLwxnXNVevXr5pBqYcOTIEd14bwsLi6wu +g0AAIxOvg3DY8aMHDCg35EjR0+fPnPz5q2n/s9iYqJNTEzt7e3Lli1Tr37d Pr17elTSH3dnY2OzY8eWJYuXbd26/eHDRyYmJkWLFvFs2WLUqA/KlCm9ffvO HKlbvXp19+/fffzEyTNnzgY8C3j5MkypVDo4OFSu7NHBq72PzwBra+tMHurD D0fVrFn9xPGTFy9eDgoOfhn6UqPRuLq61KhZo0ePbp07d0w9BatHJY/jJw5v 375zz559169dDwsLT0lROzg4li1bpm69Oh06tJPeKoeUqampQqGwtra2t7d3 dXUtVapU9erVPVu2zHgxUhsbmxkzZw4dNmzP7t1Xr10LePYsNjZWo9EUKFCg SNGiZcqUqVmzZoMGDdJLOBmoVq3a2nXrVq9adfr06dDQUGtra7fixVu3atWv f/+3fpni6uq6avXqVStXHj9+PDg42NLSsmzZsl4dO3p7e6d30y+TunfvXqxY sc2bNt2+fTsqKkpvDG0m1albt2zZsro8efDgwcyE4eydoOLFiy//66/Lly8f PnToxo0bISEhcXFxCoXC3t7ezc2tfPnytWvX1k3Tnd77SjcLFiy44u+/N2zY cNDX99mzZyYmJq6uro0bNx4wcGCRIkVWrVyZyUbo2LFj6jCc8fLC9evXX7V6 9d8rVly6dCkyMtLe3r5a9eq9evVq0KBBJtc9Ts3CwuKX+fNjY2MvXbp0/dq1 hw8fBgYGRkVFJSQkmJub29nZadu5g5dX6p4Rpqams7/9tmnTptu3b793715i YqKTk1PNmjV79+lTvXr1v5Yvz16VMvbh2LHNmze/cePGzVu3QoKDo6Ojo6Oj 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 6uq1mzVrpqKiEhcXz5PJ/Pnz53379v/77xpJ/zioMWpGMEwIcXQc4e//1Nvr 1o4dW1RUVHimurldJYQ4jBgeGPBM0imFv9PIUY4rVvxTWlqanZ3z8eNHf39/ N1f3nJwceobc3NwZ02d5ed9QVFSs/OZKSkqYX0DV1NQkvQN+Kw8Pz+LiYup/ RUXFPn16/3KR33yAqrzQdZ8+fVRUVPLz86nBpKSkoKCgDh068MyWlpYWGFjm LlfdZaQLCgofPHhID7JYrBUr/7G3t6PPyS9fvr5+/drfz9/X11fMbdRM/v5P EhMTGzZsSI958uRpfHy8pNNVXQYPGkgHwx8+fBB4fgL8fXxu36H++XftKv5I mBCioCBvZ1ftdVX+Jv0H9NPV0TE3NzdrZlZQUNC+najNcMrIyPTu3Wv8+HEd Onag26d4+PDRgvkLCgp+fpb1uum9evUqVOEGEdWYYHjwkIHLlq3Iz8/39ro1 wtGBOenVq7CoqGhCiKOjg/BgODs75+TJ03fu+H788DEvL09LS6utRVvHEcMH DR7IP/PYMePv3r1vambq7/8gIz3j8OFj3t63EhM/KSoqtGjRYsLEcfb2tuVt KC4u/vixk48f+33+/IXD4dSrV9fSssukyRPNzVsJnP/Nm7enT5199uz5589f OBx2nTp16tSp07q1ec9ePfr370tXzXr1KqyvzUBCyMlTx4YMGeTm6n7x4pXI yKj8/HwDg4aDBg2YM3eWwKgpNvbDLe/bgYHPIiOjkpNTZGVldXR02re3GDt2 dLfuwtp0+fYt+czps48e+338EJebm6Otra2vr9+jZ3d7e9smTXhz2Lhc7i3v 2x4e10JCQlNSUhUVFQ0MGvbq3XPatCl16/4pjQCLTU5OnvoKU6tWLT29+lZW lpMnT547Zy5dW5IQEh8ff+WKy4QJ4/kXf//+/dWrHkEvgz99+pSVlaWiolKv Xt0OHToMdxjesmUL5pxHjx7btfN/PIsnJCSYNDWjB1+FhaioqBQUFDx69Dgi IuLdu8gvn79kZ2fn5GSXlLBr1aqlp6fXomWLwYMGdu7SmT/3ZtPGzWfPnqMH d+zczgyosrOzmU+mpk2beN/y+uX+6dmj1+fPX3hGbtu2nVmFeO7cOXPnzRFl b3vd/JktbG1tpaqqWt0H6MmTp7dv+7wKDU1OTs7Ly69du7ahoYGlpeXoMaME NmEtvDVpf/8n4W/D37179/FjXHZ2VnZ2TkFBgYqKSh3tOs2bNevZq2f//v14 YnJlZaW+/fpe87xGj7l5w4s/2PC57UOXHieEtGzZgs7rHjrEjlnJ3M//Ub16 9ejBe3fvzZr1c+ePdRq7dq1IH84TExPpDxOEkAED+o8fX6ZlVD29+np69fv3 7/fv2jXMfUJ59+7dy5dB7yLexcS8z8jIyM7Ozs3NVVRU1NBQb9K0aZfOne3s bevUqSPKHuZwOC4urjeu33j/Pra4uFhfX79f/75TpkwW2EBadFT01asewcEh CQkJubm58vJympqampqajRs3btmyRfMWLcRu7UZeXr6kpIR8zwe+vHz5MnrS xQs/qxQqKCgw91t5IiIirnleDwoK+vz5S05OjrKysra2dpu2rfv27durV0/+ i9fN1W3Vqp8HjrqmYmLenzlzNuDp0+TklFq1arVu3XrSZOfOnTuVt9Hk5GQ3 N/fnz57Hxn7IyspisViamhrNmzfv2q2rnZ2dsrKSwKVambfS06v/5cv3EisC z0+Av8+nz5+pf8zMzERfSmBr0ocOHlm3boPwBZcuXbR02WLmmL/v5WrhwgX0 /wUFBSIuZWZm5ubuYm5uzjO+Z88ec+fN3b5tBz0mMzMzLS1dR0db0j8UaoYa EwyrqqoOGjTA3d3DxdWdJxh2dXEnhLRp07ppU2EVKYNeBo8b58xssy4p6dvt Wz63b/n07Nnj1Olj5b1wR0VFjx7l9OnT97thYWFhQEBgQEBgcFDIxk3r+ec/ fers6tX/lpSw6TFUEwuXL7vMnz935arlPPOfOHFq9aq1zGzAr1+Tvn5Nevs2 /OLFy08DHvP/rtLS0smTpt1kBAzR0THR0TGuru5XPVwbN27EnPnt2/BePfvy rCExMTExMdHT8/qoUY679+wU2ADs2bMX1qxeyywD+eXL1y9fvr58GXTm9Lnw iFfMmdPS0pwnTn327Dk9pri4ODw8Ijw84tTJM4cP7+8/oF9lT4I/jI6O9tFj R4YMtqXq0VHOnD7DE2sVFBSsX/efp+c1ZiUZqr2H6OiYixcv2doO/W/Df+W9 gAoR+z6WbtKGKTMzMzMzMyIiws3VzdLScs/e/wmvPPOnlXXMzMxkBnVt2rYR bz0iHqDExMTFi5a8ehXGHJmenp6enh4a+ur48ROLFi2cNNm5QpueM3su/wM+ JycnJycn7mPcrVu39+87sHffHp5awba2Q5nBsI/PnX/XrpGTK3OXvnmzzIeJ oeVnC1fVYS0sLPNDmKE4D0VFRQMDA56Ru/+399GjRzwj8/Pz8/Pzv3z56vfY 78CBg+vWr/1l/nZycvL0aTPCwyPoMbGxsYcOHr7j43vx0nktLS3mzAcOHDyw /yDzpspmswsKvn758jU8PILah0HBL2rXFid738amz507vtR+uOrusWDBfOq7 BlWLmJqnTp06ZmamT58GCFlPTk7O6lVrbt/24RmZk5Pz8eNHT49rZmZme/b+ r3HjX1Q4PH/uwpYtW9ns70+cjIyMR48ePXr0SGAHbKWlpYcPHzl08DAVz9MK Cgq+fPl67979Pbv3bt6yqXfvXgK31aZNGzoYpn8sSCHqjUhgNmmVzP9HUVZS pv6Ji4vnzwaoblL4clUe/jYaaJaWvCXSq7Yek8RJ1RX3+9WkIgSOjg6EkCf+ T79+/flqy2azPT2vE0IcRzoIWTY29oODw6i0tDQZGZlRoxwvXznv4+O1b//u 5s2bEUIePnzk7DxVYIX+vLy8cU4T09LSZ8yYeu786atXXdasWampqUEIOXbs xONHfjzzu7t7LF++sqSEraqqumTJwmvX3W96ea5bt0ZLS4vL5e7Zs2/Pnn3M +SPfRa5Zva60tFRPr/7atas9r7k/9rvv4+N16NA+J6cxmlqaAn/Ogf2Hbt70 7ty506nTxx4+uuvqemnYMDtCyOfPX0Y4jKZ7o6F3kZycXM+ePdb/t9bV9dId X+/LV87/t2EdVbrvyhXXPXv282/ixIlTS5csLywsVFJSmjzF+fyFM3d8vT08 3TZuWt+9RzdZ2TLv2fn5+bZDhz979lxWVtbObujBg3u9vK9dv3F19eoVOjo6 eXl5U6ZMDw4KkeDJU03U1dV5Wjn+/PnLx48f6cGCgkInp/EeHp5Cmou4fv3G pEmTed5Nq0pAQMCc2XNrVrNGQS+DmAluzfcZWHS/PEAfP34cZu/AEwkzFRcX b926jfnJuUokJCRMnTI1JSWVObJLl87MXOjMzMwnT57wJD409BU9yGKxBg8e XLUJ48fMXiaE3L7ts379hrdvw3/ZkImI8vLyli/7JyAgQPhsTk7jmZEwLTY2 dvOmLcwxT5483bd3f1Ulj5+Ojo6NTR/q/8zMzFvet6n/r1y+Qm/UYcRweXlh jS3n5eWNHj2WJxLmERkZ6TDcMTo6Rsg8N728NmzYSEfCTJs3b4mNjeUZuXLF qr179gm522RkZMyaOdvT45rAqcw8maSkpPj4hGrayfCHcxrrZDvU7l1EhCgz v4uIsB1qZzvUTtKpFlPrNt9P+82btqanp1dmVVOmTop5/47/LzomokfP7tQ8 pmam9PxS+3JVUTz3NCUlJYFFumouqbrifr8akzNMCOnazbpevbpJSd+uunvM mTuLGnn//sO0tDR5eTkhhZYJIcuW/kNVxtu/fw8dNlu0aztsmP2YMeP8Hvs/ evjY3e0qT54zIeRT4icNDfU7d7zMmpnRyejeo1v/foPZbPbJU2eYDXrl5uau +GcVIURNTc3L+1qzH4t06tRxqO2QQQOHfv2atGP7Lnt7W0NDQ2rS9es3ORwO i8Xy8rrWoGEDelUW7do6jBi+ZetGgT8nLOz14MGDTpw88r2YXwvSo2d3s2am mzdtS0xM/N//9q5Zs5Ke2dDA4MXLAJ7vQ71795o82XnypKk+Pr4HDxyePn0K s6hhbOyHtf+uJ4TUq1fX/aqLiUlTepK1teW0aVMSExOZa1u/fmN0dEzt2mou Lpfatbegx3fp0nn0mJEDB9jGx8evWv2vj8+vS9vWOL1699qwocxhCnsV1qjR 98z5jRs3vXn9hp6krV3HcaSjkZFRamrqlcsuCQnfXyWDg4L37tm3ZOliQkjL li3HOo0t5XAuX/7ZEo+amhozD1BeXp7+X1dX18ra0tTEVFNTU1FRITMrKzQk 1Nv7Fv1+/OLFy4cPHwn5pFol9Wrs7e0zMjPfvXsXEvzzwWzRzqJZs2b0YHnV BHgEh5R5tDdvUakmoIUcIA6HM2vmHGbTUGZmZra2Q+to14l9H3vx4qXc3Fxq /IkTJzt36VyhfmJVVVW7WHZp0aJ53bp1VZSV8wsKYqJjPD2vZWZmUjOkpqad OHFyxYqfRUVkZWUHDR5EV8skhHjd9O7Rowc96O3tzfxMYGnZRVu7TnkJqKrq Urq6umZmZsy8+osXLl68cFFVVbVFi+atzFu1a9euU6eOQqq1s1isdu0sWrdu bWBgUKuWagmbnZiYeMv7Nh2qlZaW7ti+0/Oah5BkxH2MI4TUr19fS0szMjKK mUHt7X1rxcp/6LLWzNx1Fos1cqRjy1Ytqba+PsR+eP369Zs3b4Xkb4tirNNY H5/v1QgvXrxkP8yupKTEzc2d3uioUaPWrxPW8/O6teujo6KZY9q0aW1iapr8 LfnJkyf0xZubmztn9pzbPrfK672Z2i3y8vImJk1TUlKTk5PpSWw2+/KlK6vX rKLHuLm5e3h4Mhdv2LBhx44dCouKnvj7Z2VlUyO5XO7q1Wvatm3D34R7i7J1 Ot6+eWNoyFsWAKRBH5s+586ed3KacOHC2WZCW+l/FxHh5DQhJydn/IRxIq/+ zzJsmN2O7buo8nrtLDoPHDSga1ertm1aN2napKLdqisoKAjsk2z7tp2PHj4m hEydOnno0J+fOKX55apC6I+SlP79+/1pRd4qSaquuN+vJgXDLBZr2HD7QweP uLpdpYNhVxc3QkivXj0F1jqjREfH+Ps/JYT0H9CPJwNZQUH+wIG9Hdp3KSoq On78FH8wTAhZtXolHQlTzM1b9enTy8fH91nZlmzc3Tyo94llyxc3K7tIgwb6 mzdvcHaeWlLCPn363Lp13yt9ffuWTAjR19dnRsK08lr6UVVV3bVrG8/L7rx5 czw9rr97F3nhwqXly5cqKHyPlzS1NAXmMMvLy23a/J+Pj29ubu4T/6fMkjaH Dx2linnv37+HGQnTmG3GpKamXrxwmRCy/J+lzJs1RUdHZ/WaFVOnzAgJDn3/ Pvb3FzGqbvr6ekpKSszC5Glp378cJyQk0D3lEkIaNGhw1cNNU/P7sRg7doyt rT31LksIOXfu/JSpkzU0NKysLK2sLIuKipjBsKamJn8NzzradU6cONa1W1ee m/6YMaOtu1ovXfKzKqPvHV8hwXCVPDHmzZ9LCDl54hQzGLbp00eMfoa/fvnZ jLaioqJ4ZVlpQg7Q9es3mFlnffr0PnBwP31ZDRkyeNgwB7ra5769+0UPhtev Xztg4AD+63f0mNFDBg+lO0byvePLDIYJIba2Q5jB8L179wsKCuki9Myq1ERo GWlCSBUdWEIIWbZ86ZTJU3nyWvPy8l68ePnixcuTJ04pKCj06dN79pzZ/HU6 HB0dtmzdxH9/njJliqPjyKjIKGowPDzi8+cvQjqHlJWV3bR54/Dhwwghb16/ mTDBmf5UweFwQkNC+/zIrf306RO91HCH4evWr+VZVVZW1q1btyvTTW6nTh2b NGny/v17Qsjr16/fvg2PjY2ls4x69OguvJfLjx8/8hR337jxP8eRjtT/b9+8 dXIaTzelFhcXf+3adeqHC9SmTeuDhw7q6GhzOJx/lq+4fv0GPenFi5f0/xwO 58D+g8wF7YfZbd68iXqbz8jIcBo7LibmPTWppKTk0OEj27dv5dkWTx28+ATk DEup1atX5WTneHpeE/52Tr+X29vbrV69qoIb+VOoqKhcunx+nNPET58+5+Xl ubm6u7m6E0KUlZXbt7fo3bvXCMfhOjo6Yq/f2+vWrl17CCFdu1n/t+Hn/UrK X65EFxISeu7ceXpQXl5+6rSpkk5UFZOqK+73q0nFpAkhI0eOIIREvouk2mHP ysq+c+cuIURgEEt7/KPDkvHjnfin1qtXt18/G0JIWNjrzEzejjRZLNbw4Xb8 S7VrZ0EIyczMor+mE0IePfYjhMjJyY0ePYp/kQED+1PFNpiFq+vVq0sI+fTp E3+JayH69bPhj29lZWVHjnIkhGSkZ7x981bI4qWlpWw2m81m169fn2oU923Z 8oe+vncJIaZmpgI7suJx/95DKmCwtR0icAa6d4GQ4NBfrq0m4qltTr+j+/re ZWZATZ7sTEfChBBlZWU7u5/FGQoLC58+eVqh7davX79b924CP3/yfBYNF1q0 RuYPa3GRWQ5NXV298iss7wDxFFJduGgh8wOTialJu/Y/++99/fp1SkqKiFu0 s7cT+CXLyMiQqppB+fz5M/MGQghp3rw5M57Mz89/cP8+9X9sbCwze1ZZWblv XxshaeCpy1AZ1tZWe/buFtKAdnFx8a1bt+1s7Zm5spQ+Nn0EfqlUVlbq0aM7 c0xEuLDeNYYMGUwHhK3MWw0YOIA5lW7hhhCi9KOCHyEk6GXQW758YHV19dGj RykpVbiWPhOzl92LFy5eunjp56SxY4Qve/fuPeaXhS6WXehImBDSslVLZ+eJ Zeb3vVveqmRlZbfv2E7FqCwWiypdQvvM2C1v375l9tZWq1atdevW0vlampqa a9asZi774P4D/vxznusxJVnUKwL+Ptu2b7W3t8vJyXFymiCw9CbzvXwb34eV mqVFi+ZPnj5at/5fZj5HQUGBv//Tdes2tG/XZe+e/eJVR4qIeDd79nwul2tk ZHjixFFmVjNerkQRGvpq6pRpzJvVunX/Cm9CqIaSqivuN6tJOcOEkGbNzFq0 aB4eHuHq4tayZYvr128UFxerq9fu37+vkKUi333PfKAiWH4dOra/ccOLy+VG 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 8rRydOP6jfT0dAODhlQNz8VLFomSuWpiYqKuXpvuc+j1mzf2w+x+uZQYB8h+ mP3x4yfi4r5njH/79q1f3/729vZNTZrWrl07IyMjKjLq2bPniYmJhJCBgwaK sgeMmxjLyMjQAXBERMT0aTP79rMpKiy8f//BE5F7zxpqO9TH547ASbblNJ3V sWNH+mQjhISEhHbv1rNhw4ZxcXF0E8GVER0dEx29l/q/Vq1a8vLyWVlZ/AUQ 6B3FYrEMjQzpnrQ5HI7T2HGjRo1SUVUJCQn1uOpR+Ta9BAoNCT179py6unqX Lp1NTE3q1aunoqyck5Mb+OwZs4+iunXr1qr163LvwsnJyT32q3CmTaNGjYYM GczM3Fi5YpWbq1tTE5OU5GR//yfMT11GRoa2FWwsTSAWizVn7uxVK3/2n3T1 qsfLl0EdO3YoLCz093/C/EwjLy8/a+YM/pUwK4S3bWtR+Ua54S8z0XmCpJNQ 9Tb8tykzK3P69KkCv/4EB4Xs/t8e6v+BgwYIX1VBQcH4cc5paWny8nKnzxxv 0EBfyMx/8cvVvr376cbGOJwyX5Czs3OmTf158+nTpxddn+Xc2fM8ZeLiPsb1 6yt4n+8/sK9bt66S/qHV7q+84n4/aXmSbd+xtXevfvn5+dOnzfL3ezJkyCB1 DfWYmPdHjxwPC3tNCOnRs7vDiMo2xFWrVq0tWzfNmjk3IyNzQP/Bs2bPtLa2 ZMmygoKD9+09mJycTAhZtnyxIaP9z2PHTkybOrNPn17dunczNW2qoa6enZPz 7l3UiROnPiV+IuWc6Obmra5fv5mcnDJ9+hSjRkapKalXrri6u3sQQho00F+8 eAE9Z+PGjSzatQ0JDr1xw2v8OGencWMbNNBP/pZ8/frNK1dcjY0bJycn8/R0 Si21/r+1K1es+fLla+9e/caPH9uzVw8dHZ28vLzIyGjfO75v3rx9/eZnmfP1 //0bFBQcEfHuxg2v16/fTJw4vq1FGzU1tezs7OioGD+/J76+d9XV1Wvc/Vp0 DRs2PHBwH0+ASghZu/bf6Kjo8B/dOHO5XF/fu77l9xoqut69e+vq6lInFSGE w+FcOH+RkIvUYNOmTWJjP5RXUrphw4Y9evR49OgRPYbNZtNlVg0NDcWuX9qm TWtmHFtaWur3+GcH2nPnzRElGJaVle3Vuxcd1z3xf1L53SXwAMnJyR06fHDU yDF0jmVBQWEl2xnW1dXt3bvXvXv36TGPHj2id7WKioqWltanT59+uZ4ePbpr aGgwM4QpMjIyQ8ppI2TAgP67du5ifs7IycmJ+NHaZGUOKz+BNUEIIYMHD+rY sQM9OGbMaGa+cUzM+w0bNtKDJqYm0VHRpHpkZWX5+Nwp74MCIWScoG7nf5t1 69e+i4xk/vzQ0Fehoa94ZlNVVT1wYH9VxZwjRjgEBwV7eHjSYxISEhISBLQR sHHjBrrtA1pGRsbbtz+DYZ6vqwB/qxJ2icsVN5crbqamJlbWli1bttCuU4cQ 8vnzFz//J3d8fKlH7bBhdsy7n0DLl62kgsDVa1a1atWSWTGBJi+vQOdn/K0v V2FhYf7lPNmLi4uZLyeGhj8ra/B/Py2vBw1SFQV/QHpISzBsbNzYzf3y+HGT 0tLSzp49z1M8uGfPHqdOH6uSxvocHIblZOesXv1vVlb2ls1lGqySkZGZN3/O ggW8LSUUFBTcvOl98yZv3WAZGZnp06eMHz+Wfytz5s66cd3Ly8s7MPAZc3z9 +vVc3S7zZHfs27fbdujwtLQ0Hx9fHx9fenzDhg3PnjtlO1TwJ4ApUyaxZFlr 1qzLz88/cuT4kSPHmVPpPpwoqqqq165fnTN7nq/vvbi4+HXrBPSmK0rjQzVR rVq1HByGz5k7u3ZtAQ3nqKioXLx04b/1Gzw9rwnPB2NWlBWFsrLS/gP7pk6Z lp3N/y2j8YmTx3v17CNk8f82rBs9auznz595xrdt22b7ju02fYR13C2EoqLi kiVL1qz5t5J71d7eng6G4+Pj374NF7tApvAD1KRJEw9P96VLlvHHIUzy8vLM gh7Cbdy0ISEhITqat26wmpravv17jx07LkowLCcnN2BAf57Gigkh7dq1owtl 8FBRUdm5a8eM6bP4e3IaNWqkdVfrObPnirEDFRUVu/foHvA0QHhj2jIyMo4j R/z77xrmyPHjx70Oe+3lxXtzk5WVXbR4IZvNrr5gWHhSx4wdM3lyZYsCVYaq qurlyxdXr1pz+7ZPefOYmpnu2fM/Y2NRTzxRbN6yqaFBw0MHD5d3NDU1NTdt 3tinj4BA984dX/r9UkFBoaKdogPUUEZGRgoK8sXFJVFR0VGCblkyMjJOTmO2 bN30y1W9e/c9Y3Ptv+vX/rte4DxLly5aumwx9b80v1wB/DbSEgwTQjp0aP/8 xdOTJ0/f8fH98OFDXl6elpZWW4u2Ix0dBg0WqQCkiJwnTejRs/vxYyf9/Pw/ ffpcWlpat25dS8vOk6c4m5vztoNy7Nihx4/9/R77v30b/u3bt/T0dDk5+YYN G3Ts2MFp3FgLizYCN8FisU6eOnrliuvlSy5RUVH5+QUGBg0HDhowd+7s2rV5 G2EyMWn66PG9vXv23717/+vXL8rKygYGBgMHDZg6dTL/zDw/pG8/m1Onzjx6 +DghIaGgoEBXV1dfX79nrx72fM1xaWioX7h4NjDwmauL+/PnL5KSvhUUFKip 1TIwMGjd2rx37559bITFZjWCrKysnJycioqKhoZ63bp1GzVqZGHR1qavjaqq qpClVFRUtm7bMmPGdA9Pz6CXwfHxcVlZ2Vwut1atWvr6ek2aNm3fzsLK2rq8 CEeItm3b3Lh5/fjxE48fPU5KSlJRUTEwaNivf78JE8b/MgO2Xr16nteuHjt6 /N79+18+f1FSUmpq0tTO1naEo0N5mX4iGjnKsUHDBhcvXAwLe52RkcFTt1lE nTt3MjFpSseTt7xviRIMi3eADAwMXFyvPH/+wue2T0hI6NevX3NycuTl5WvX rt3QoKGZmVnHjh3oZrppzE8bPM04a2lpubm7nTt7ztv7VlxcnIwMqVuvXvdu 3ZwnOevp1T927DgRja2dLX8wLLzErKWlpYen+9EjxwIDn6Wnp2toqLdp23bs 2DFWVpb8vT2JSFFR8fjxo9nZ2c+ePQ8OCo6Kik5ISMjIyCgsLJSXl1dTU2vc uFFbi7ZDhw7hLxkhKyv7v927evbq6eriGhHxrrCwUFtbu107C6dxThYWbQ8d OixekoRbtHhh7969QkJDX4WGffn6JTMjMzMzk7riDAwMLCza2toN/RNaflJT U9u7b8/0iAhPj2tBQUGfP3/JyclRVlbW1tFu06ZN3742vXv3qvL+VGRlZWfP njVihIObm/uzwGcfPnzMyspisWQ1NTWbNWvWrXs3Ozs7ZWXBdw9vxkeNIUMG a2hoSHoXAvwOM2ZMHTNm1IMHD58+DXjz5m18XEJ2dpaMjGzt2rWNjRt36Nje ccRwqv3U6iANL1cAkiVTTbW2oDq8ehXW12YgIeTkqWNDhkjLV/nMzBxJJwEk 4Pr1G0uXLKP+19HRefjoPn91KQlq26YdXcKtdu3aQcEvJJ0igGqUkJDQ16Y/ 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 FhadGjZobNzYrGcPmw0bNicnJ/PMRjX0V69uw4yMTJ5JLVu0peq8+dy+wzPJ 2Xmqro6+lWV3UVLy6lUYtZ6bN70JIW6u7na2DmamrQwaGltb9diyeVtOTo7A BWNjP+zfd3DM6HEWbTs20G9k0NC4nUXn6dNm+T32F7K57OycLZu3WVv1MGho bGracshg+8uXXbhcrvC2Q7lcrrfXrcmTprVt06GBfiN6j337lixwK8nJyZs3 bbPpM6CJsZlefcNmZuZdu/Zydp569uyFtLS0X+4TO1sHXR39lJQUQojLFTcq YdRfzx42PDPHxcWvWvmvtVWPRkYmBg2NO3awXDB/8evXb8Q7MQoLC0+dPDNq pJN5K4sG+kbNzMx79+q3fPnKZ8+ec7mCW0fncDhnTp/r339wE2MzQ4MmPXvY 7Nt7gH7JE3gIdu/e17//YFOTFg30jcxbWUyYMNnb65bwo1ahRSq6/wsLC48f Pzl8mGOL5m309QxNTVva2TocP36ysLBQxP22Y/suXR39a9duEEI+JX5iHjJd Hf2srGz+RTLSMzZv2mZl2d2goXHTJs3sbB08Pa8LPzSiJ7K8tkmNDJvq6uj/ 888qQsibN2/nz1vUvl2XBvqNdHX0Rfyloh8LqunsXj378oyPjo6hdgv/jYXL 5ZqZttLV0V+69B+e9VBNcFd0p/Gg2k9et24DNUhti/oLDgphziniHZJ/r0ZF Rs2ft8iibccG+kYtmreZ5DwtNPQVz/zM2+O8uQuZp8rqVWvp2YqLi0+eOD3M fkQzM3O9+oZNmzTr3MnawWHU3j37o6NjRP/VwvcGT2vSPDfk+/cfjB41rnmz 1g30G7Vv1+Wff1YlJX0TuDZRLroKXSYVuutyudznz19s3Lhl6JBhzZu11tcz NG5s1tW65/LlK2Ni3gvZCXl5edu37ezatRf1RBg6ZNiVK67l3etEIeIFQl2h fW0GUoOTJ02j98O+vQeErH/Pnn3UbG/fhpc3z/x5i3R19BvoN8rMzOKZJPqJ feWKq5CmrbOysqmphw4eYY5nNg5cXFxy/PjJAQOGmJq21NXR37F9lyg70Of2 nYkTp1AH3dCgSTuLzgMGDFm/fuPTp4EC53/1KmzJ4uVdOneln4Dz5y0S7wko xqq+fUvetnXHgAFDzExbNdA3atO6/aCBtjt2/O/9+1hqBhHPeeGtSVfoKV/R 2xGlSu42Yl+GlPz8/D179vXsYdO4kalxY7OBA4eePXuhtLS0vPlFvNYCAgKp vX3ixKnyVnX1qic1z507d3kmVf71AEBENfvzPBUJO/+IhPvs+paeVyreqkpL S93drhJC+tj00dBQJ4QMG26/b++Bu753MzIyNTU1Kp9aNpu9aOFSZqstRUVF 4eER4eERJ0+cPnx4/4CB/elJllZdqFQ9C3zGHB8dHUM/Pp88Ceg/oB89icvl BgY8o5et0G+fPGka9QZGbyU6OsbV1f2qh2vjxmUKNL59G87/kp2YmJiYmOjp eX3UKMfde3ayWCyeGWJjPwwf5vjly/cS7IWFhc+fv3j+/MXtWz5O48aWl7C0 tDTniVOfPXtOjykuLqb22KmTZw4f3s/8+YSQFy9ejh0znvlil5aWlpaWFhUZ 5e11i3C5EyaOq/xxpJw+dXb16n+ZLZHGxcXHxcVfvuwyf/7clauWV2htQS+D J0+e9vVrEk/K37x5e/rU2acBj5s2bcKzSF5e3iTnaQEBP19TqD1z585d96tX lJWV+TcxbpwzMyJNSvp2+5bP7Vs+PXv2OHX6mKqqaiUXqej+f/UqbOKEyfRZ QQjJSM8ICAgMCAg8eeL0hYtnq6P0WlRU9OhRTp8+faYGCwsLqS0GB4Vs3LSe f/4qT+TFi5eXLf2HeeZwuVwZGRnhS1XoWFhZWd69ez88PILn3hXw46WW/8YS GRlFdbBhZWVZ+Z0mngrdIXncuOE1Z/Z8+iUpJSXFy8vbx+fO0WOHhgwZVKFk pKSkDB8+KvJdJD0mKys7Kyv7w4ePfo/9w8Mjjh0/XFU/uTzr1v536NBRejAh IeHUyTM3b3hfv3GV53yr8pteRe+6x46dWLN6HXNMSUlOVFROVFT0+XMXt27b NH68E/9W4uPjh9mPTExMpAYLCwufPXv+7NnzW7d8nJzGiLHHxLi/VdSYMaO2 b9vFZrMvXbyyecsG/hny8vJu3PAihAwaNIB6i6BU5sQWQ3p6xqiRTq9ehdFj fvmJgcPhzJo5l+fzFvVYDw4KcXVxD494xZzEZrNXrfr3zOlzzDVTT8ArV1wX Lpz3z4plIqZWvFWdPXthzeq1zKDoy5evX758ffky6MzpczypFZvYT3nRb0dV dbcR7zKkJH9Lnjp1ZlRUND0m6GVw0MvgG9dvXLh4tjLvEl26dG7QQP/Tp8/u 7h5TpkwSuPWr7h6EEE0tzV69ejLHS+T1AKRWzQ6GqyoSJoT4+z2hrjrHH21p jBgxfN/eA8XFJdc8rztPmlD51C5ftpJ6HBoYGMyZM7Nlyxb5+fm+vvdOnTqT n58/adI0z2tudKMyrVq1rF1bLTs758mTAOaTMoDxjfbp0wDm+oW/zgpxYP+h sLDXnTt3mjZ9cqNGjVKSU65ccfXwuPb585cRDqP9/O8zXyPYbLacnFzXrtY9 enZvZmaqrqGenp4eExN7/NjJxMTEK1dcDY0MFy9ewFx/fn7+SMex1O51cBg2 wnG4rq5uQnzC6TPnfHx8y8vjzc/Ptx06PDo6RlZWdujQwTY2vQ2NDDkczssX QUePnkhJSZkyZfr16x7t2ltQ8xcXl0ybOjMrK1tRUXHSpAk9enbX0dEpLS39 lPgpKDjklvdtUXbFtevuhJAWzdukpKSMHDVi//49Amdzd/dYvnwlIURVVXXm zGnWXa1YLFZwUMi+fQfT09P37Nmnoqq8YME8Efd/aOgrOzsHquW2gYMGDB06 2NDAgFPKiY394PfY/9YtH4FLLZi/ODDwma3tkIGDBmhraycmJh4+dDQqKvrl y6Dd/9vH85yOjf3g4DAqPz9fRkZm5MgRtnZDNDU0o2Nijhw+FhHx7uHDR87O U11cLjJDsoouUtH9/+5dpJ2tQ35+voqKysSJ4yzaWTTQ18/Myrx/7+HZs+c+ fPg40nHsvfs+v/wOtXTZ4qXLFk+bOvPatRsNGjYICXkuZOa8vLxxThPT0tJn zJhqaWWpqqLy6lXYgQOHMjIyjx07YWPTu3uPbtWRSFpY2Ovz5y6oqqqOG+/U qlVLNpv98mXQL4Phih4L6nMYl8sNDAgcOGgAvR7mHePp00DmjYWeZGnZuZI7 TaAXLwMIIYcOHqEyhyOj3mhpafHMU6E7JNPbN+EXzl/S1q4zebJzq1YtOaWc e/cenDl9js1mL1yw2MqqC72t5JTPMTHvqczhfft3jxrlyL+2Ff+spt5NbW2H 2Nvb1terr6CgkJKc8vr1G1/fe7/8bFF5Z06f9fd/atGu7ZgxoxoZGWVmZV2+ dOXevQcpKSnz5y3yvvUzYhH9ohPxMqnoXZcQwmFz1NTU+vWz6dylk7GxsbKy ctLXryGhr06dPJObm7ts6YomTYwtLct8ny0sLBzpOJaKhO3sho4eM1JXVzc+ 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 etrPrOx3PyrwUE8Cfq3bCBj/Kux74x9009k8f82bfU9baur39sM7depoZGRI CNm1a0+3br23b9vp7/ckPz9f7KNWHuqbZdOmTQTmusjKylKdiEZGRnFFaBmV apeyadMmv6zWxcPU1JR/JP1RIzc3l5HgKOqf8k6/Dh3bE0K4XG5kZKTYi1Ro /78Ke00Ief8+VuDB1dXRnzrleyEC+vhWCX19fYGfzwXut+pIpLl5y4qmWYxj QRif0uiWYKl7BXXfoCqP8UwigioMV3SniUe8OyRzqsCltDQ1CSG5uXmip0RR UdHO3pYQ8viRXzuLzitWrPb2ulW1J+EvmQm6tGVlZak2mZh7u2pvemLcdSlF RUVnz14YM3pcm9btG+g3ql/PgHoc9On9vVI684kQEfH9CLa1ENzZcnnPo/KI d4GIbfSYUbKysqWlpcwGsTgcDlXxtVv3rg0aNqDHV/LEFo+5eauKLjJqtCOV 2i6du06fNuvyZReBDVkTQl69ekX9M33arPJujFS5pF9eNWKsKiUlhWpTXeCd qgpV5ikv+u2oau82FboMmSzKuRLbtG1DCMnPz4+PT/ixW8S51oYPt6c+e111 92TO7OZ2lfqHp4ybpF4PQJpJOBg+F5A77Vw6l0u0VGXvLa5rVv8X8fCukRqz eqoRQiK/ltj8r2oi4YSEBKrlTJ6vUxQqr/jr1yR/vydibyIz43txRB1dnfLm oUqDMPs7kZWV/V7W8UcwzHydtSqb8yP8dVa48sIwuoBKJiNVeXl5jo5jnMZO uHrVMzb2A5WjzoPZxmPWjw+E2tp1BG+9joDxqSmi3uMKf3YXKXfx0jmqMGfk u8idO3cPHz6yaZNmQ4cMO3vmfBV+ds3IzCRCD2VdXV1CCIfDycn5dZCQlpZO CNGtW7GS7YQQFRVl/pF0TguH8e2GOqnk5eXKa22CLldPH2gxFqnQ/hf9+Fbt 93JlQTuNud9KS3/eUqojkfytRv2SGMeCENKqVUvqJfvJk+91FqgaFtR9g+dT mvAaFhXaaeIR7w4pYgo5FUze1q2bqFbHkpOTT5447ew8tXmz1l279tq+bSdV yKW6if5zqvamJ8ZdlxASE/PeyrLH0iXL79178OXLVypvmUcB44lAn6XlPRF0 dco9BwQS7wIRW4MG+j179iCEXLnsQgdC9+49oLK7qXxjxo+t1IktHoE1j4Qb PXrkkiUL5eXlCgsLPT2vz5+3qFNHK/NWFksWLw8PL/MpPDXl1z0UUgp/dfqJ sSo6nKtbtwI1TcRQmad8hW5HVXW3qehlyCT6G6B411rdurrWXa0IIZ6e1+lM ZvKj4HSbNq152oWW1OsBSDPJtyZ9+kkuIeToOC0tVdkHS3R77UyO/FoicM5d IzXm9a5NCIn8WtKrivKECSEuLu7UI23Xrj27du0pfza3yhfLqWhDpFbWVr6+ 96KiolNTU7W1tanXWWtrK0JIo0ZGenr1v3z5GhAQOHjwILErDAshMGNz+fKV jx4+JoTY2Q11HDnCzMxUW7uOoqIiVQS6mZk51dZFRfaJgJ3C4ZQSQhQUFBI/ fRC9QcWmTZs8fOh7//7D27d8nj9/8f59bEkJm+qx49ChI1dcLvI3Zii2qm1U 9jc0UfsbiL7/qReC7j26ubldlnSqy1UdiWTJsSq/ElFQn9Lu3LlLFSdh1LDo SH7cQ6hPaZqammLXsKhyf8J1UKtWrTNnToSFvfb0vB4Y8Ozt27clJeyoyKio yKgjR44fOXqwb98+kk7jT1V40xPjrku1m5iQkKCgoDB9xtS+ffs0btxIXV2d qnoaFRXd1bonIYQwnghc8ounQ4UeHxIxbtyY+/cfxMXFBwQ8o4pgUGWkNTU1 BpbTSdLvPLHl5MR5r1u2fMlYpzFX3T0e+/mHhrzKzc1NSvp27tyF8+cvLlmy cOmyxdRsdDDjfes6s56nGCqzqt/zxPwNW6mSu40Yl6FIqu5KHOEw3O+xf0pK ir/fkx49uxNCQkJeffjwkRDiMGIYz8w14vUA/jISzhmmnH6SO/18OiFER431 YIluE10Bt/JqioSJyLXwvb1vi10aUEPz+5falORyv3hR5T14vrfRdbSePg3k eZ0lP6oFPn0aWJkKw6T8oib0eI0fqcpIz6AKuowf73Ts+OE+fXo1aKCvpKRE PTNKS0tzcnhrD6r/6G6R2SsdU4qgrdepo0UIKS4u/vTpU4V+C4vF6tu3z+49 OwMC/SKj3hw5etDa2pIQ8vFj3MwZc8TYOfw0NTQIISnJ5X61TU5JoVKiplbr l2ujfum3pG9VkjbBCdbUIISUlLDLqzJHf4GmD7QYi1BE3P91tLQIIbGxH6rv V1feH5JIsY8FdX+IiopOSUmhQmJz81ZUEz5GRob6+npUteHK1LCoKmLfIatP 69bm69atuePrHfshytX10qhRjiwWKzc3d9rUmeXdyiSlqm56Ytx179+7T73R 7tu/e82alZ06ddTR0aEbYcrKEnDGamhoUP+kplbgiSCE2BeI2Pr2s6E+OlMx cGpq6r279wghDg7DeRqgEu/ElpWhy1wIqJxVHXV/KPr6evPmz7l61SXmfYTv 3VsLFsxTV6/N5XJ37Pjf/fsPqHm06nwv21L5G6MYq6IXSUqqcP9bFVK1T/lf quTdRozLkKm8N8AUvjdAsa+1wUMGUv0Vu1/93owWlS3MYrHs7W15VvKHPHlB qvwRwTAh5PST3DkXMwghOmqsh0vr8sTD1RcJP3v2PD4+nhAyYeK4o8cOCfyj umwtKCi4edNbvK3Uq1eXKrkUHCK4SYmYmPfUzaVZs2bM8S1btqDLOlKvs61b m9P196g3nidPAir5Ohsa8krw+NDvVcia/0hVeMQ76muuHd/9ixDy7l0ks91p ipnZ9/pvYWFvBG7ltaDxLVt9r1p5/574bWxqaWkNG2bn4enWf0A/QkhISOgv WwehCP8eTBVKjImJEfhxpLS0NDQklPrhonxXpqpSx8S8r77aL2bNvh+CkHJO v6CXwdSvNjMzE3sRfkL2f6tWLQkhnxI/Vb6ddkp1fMKv8kSKR+xjwfyURpWI trL+eX+w/NECX2VqWFQVse+QYqjoqaKkpNSjZ/d9+3evW7+GEJKfn/+g6hr+ rXLCb3rCf7sYd903b94SQlgs1tChg/mnvnoVxj+yefPvR5C6TwpYKjSMVESV 3KwqRE5Ojqpk63XTOycnx9XFnWoTeAxfy1Xindi1an3vPkBgue7oqOgq+RVC sFisNm1ar1y13MPTjRpz88b3l59WP0+SB5Xcihir0tHRqV+/HqlIE/HiPRqq 9ikvOvHuNmJchkwh5V6JrwghKioqhoYGP3aLmNeaqqpq//59CSHeXrcLCgo4 HM61azcIId26deVvL/oPefKCVPlTgmFCyNHHOVQ8XE+d9XBpXSPt7/HwpmHq 1RQJkx9NZ8nIyCxatMDe3lbg39y5s6ma15gekgAAKOhJREFUftTM4unW1ZoQ EhryKioyin/qhfMXqX94SmLT1YYDfrzOMvN+qZfd6KjoG9dvUmPEe529c+cu f4UlLpfr6uJGCNHU1Gj1o0GO4uLvNTQEVhU+e/Y8/8hmzcyoGinublf5y7/l 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 PuH48ZP+/k/btGn9y4KdPMS+QCrDadxYf/+n1A1fSUnJfpidwNnEOLHl5OTG jXfat/dAXFz8wIG2M2dOa9iwYWpq6u1bPteu3bDualWZvi0Emj1r3prV6wYO 6t+pU8fGjRopqyinpaU/f/6CKq8kLy/n5PQz1B82zM7vsf+lS1eioqK7WvcY P2Fc165WOjo6BQUF8XHxz5+/vHHTKyM9wzLg8S+3K8aqGjdutP6/tStXrPny 5WvvXv3Gjx/bs1cPHR2dvLy8yMho3zu+b968ff3m51kn3qOhap/y5RHjbiOQ eJchzdy81YoVq8PCXjuMGF6njlZs7IdDh45QiwwY2L9Pn17MmcW+1uTk5Ozs h548cfrhw0fy8gpUslVUVPjn/HOevCA9/rhgmBCy7342IWTXSA0qEn6fzO6z Kzkpq4ojYUKIi8v3D0tDhvzio37XrtaamhoZGZmuLm7iBcOEkG3bN5eUlFy5 4vr+fezCBUuYk1RUVA4f3k+ViObRokVzDQ116mM5z+ssIcTKypJuAEzs19k5 c2fduO7l5eXN85Gyfv16rm6Xeba4b99u26HD09LSfHx8fXx86fENGzY8e+6U 7VABN0FVVVUXl4vDhzkmJX1zueLG/J5nY9N73Lix48dPIj+KMzGXunb96pzZ 83x978XFxa9bt4F/zTxtV5SWlgYEBAYEBPLPaW1tuWPnNhF3yKRJE8+fu5CZ mbVt645tW3fQB+Lho7vU/w4Ow3Kyc1av/jcrK3vL5jKrlZGRmTd/zoIF80Tf /23btrnq4TJ50vTk5OTr129e/1HovQoZGzd2c788ftyktLS0s2fP8xRo79mz x6nTx3g+RoixSIX2v6mZ6a1b1ydPnh4T8768pajWnkTRvXs36pHP88U65v07 6gO/eKo2kWIT41hQypaL5r0/UJ/Svv8vuQrDNPHukGJYtGjBOKeJWVnZs2fP p0dOmzZl46b11P9RUdFRgmpmNmigf+HCaeadisPhUGV9a6uJf5pVRoUuul9e JhW969apU2f3np2zZs4tLi45cuQ4MxunazfrtWtX032cMikrK7u4Xho+zPHT p88eHtc8PK7Rk/r1sxk33slp7IQK7QSxL5DKGDRogKaWJtWN8ODBA4XcZ8Q4 sRcvXhAQEBj0MjjyXeT8eYvo8Z06ddy3b3fbNh2q9rcQQlJSUs6eOX/2DG9d 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 /N/Hjx/pkQkJCZcvX7Edar9g/kK6bZqSsp2MMGvnJiUlHT16vDoSPGBAf+ag l5f3/v0HmN2dlJaW3rt7z8vLmxpksVi9evVkTl2+bDmzpyUKm82+63vXYbgj vSDw2Ho7u4j9s6y7jAy5MkN71SB1XbXv3w6a6ModG6+1erA6c6mPKewLgXm/ XDm7lIw5lur9ukw83EJf/s4iXS3Vvz9URHz1C0aNjGzthnp6XKMGORyO88TJ NjZ92rWz0NbRyc3NjfsYFxQcTPUJrK0tfkfhr1+/7t2rT6dOnQghz5+/yMrK Yk6dMGG8pPcEAAAAAFSl6TOmvXnzhtmlUGFh4dGjx44ePaasrKSqqpqdncMs Dk1r0sQ4OCiYHly5cnVUdLS+vv6HDx8uXbwsSqtaYhhqO+TEiRMxMe/pMfv3 Hbhy2aVDxw611dTS09NDQ1+lpKQsXrKInmHOnNm3b/vQNYH9/Z/Y9OlnZ29r aGjIkpVNTkl5++ZtYOAz6r13uMMwCR+PP9WHFPbsi+knJvwMNBTlZNbZqq+z VU/PK5VnEf5ekQpKuI5HU0s4ItVCL2ZzHY+kXp2l3b/lzwxn8wYKPgt1+/4v OfOv7nwYwfCvrV37b3RUdHh4BDXI5XJ9fe/6+t6twk3o6+vn5ORkZWULXK2d nW0Xyy6S3g0AAAAAUJVkZWV3/W/XqpWr+DNFCwoKCwrKbQV61KhRri5udINb mZmZe/fso6eamplGRUZVeWpZLNahw4dGOo5idp6SkpJyy/tWeYsYNTLasnXz 0iXL6KQmJSUdOXz0d+zcv8vZp3maKrJbh2uyyoa9AjNvM/NLxx5P5Wl5S7hi NtfhUKrnHB2b5j+b4GproHBrvm7/3clCKh7XdH9/3nflqaioXLx0Ydgw+182 MNCsWTPxNqGvr3f06GFNTQFtBvTu3Wvjpg0VXyUAAAAA/OmUlZX+t3vX1m1b Gpbt4Jdfy5Yt6HlatGj+77+rmVX5aH1s+qxatbKaUmtoaOB57Wrnzp1EX2To 0CEnT52oW7eu8NnU1dX19fSqKdl/hz13c/rvTg5L/EWIe/tNQefNSb7hhaKt 9aciNnf4wZQHkWUW7NBIwXuBTi3Fv7ZXG+QMi0RFRWXrti0zZkz38PQMehkc Hx+XlZXN5XJr1aqlr6/XpGnT9u0srKyt9fXFv4bbtW/n5X3z5MmTDx48TPqa pKCg0KyZmeNIRxEbFQQAAACAGmrYMHtb26GPHj0OCAgIDQlNTk7Jysricrnq 6rWNjY3btG1j06cPT6uuY53GNm/R4tTJU8HBwZmZWerq6qampsOG2w8dOoRZ grrK1a9f/9z5s6Ghr7y8vEJDQj9//pKTk6OioqKtrW3cxNjKytLGxoZnEWtr qwcP7/n43Hn08NGbt2/TUtPy8/MVFRW1tLQaNTJq0bJF586dOnbsiPZxfulR VGH7DUm9mykNaKVs3VRRT4OlpSrL5pD0vNKPqezHUYXXQgtef6pAhjCPghKu /YGUG3N1upv+zB/u3Fjx5jzdwfuS84pE7fqrBpERvUOzqpWZmSPp3y5J8fEJ Nn360oMdO3a4cPG8pBNFCCEaGuK0hg0AAADw15Dy11RpVtE3YZlJ8ZJO8l+C e8pQItv9az/AmDQ1q/xKomMiK78SAAAAAAAA+NP8tcEw4lgAAAAAAAAoDxrQ AgAAAAAAAKmDYBgAAAAAAACkDoJhAAAAAAAAkDp/bZ3hP5yhoQFqNQMAAAAA AEgKcoYBAAAAAABA6iAYBgAAAAAAAKmDYBgAAAAAAACkDoJhgP+3d8e+TVxx HMDfnX1yEgshBcHCRjIwsAfEAhP/BYx0zJ9Dx3ZEyRgpW7pUVZSBJUMlfB0s OUOxkSLr7IDtuw5RGapmaBr8krzPZ7Rk3ffeO1u/r32WAQCA5CjDAAAAJEcZ BgAAIDnKMAAAAMlRhgEAAEiOMgwAAPCftXWpqxBxGaMdudVy7Vw7NgUAwESU pkvs+6MHRezUt0HEZYz2Um+3W7EOzUVsCgCAiShNl9j3l49XYqe+DSIuY7Qy XBQ+R7l2bAoAgIkoTZfY9zfPu7FT3wYRlzHmN8Odjjeaa6TTKXwOCgBgTE3Q 5SbhZxudty/uxM5+s719cefZRifW0WP+ImJ1daUo2hED8E1RtFdX3eYBABCC MTUx/2cSfvd6/dWT1dhncFO9erL67vV6xABZ0zRxl2A6PfvyZRY3Q+I6nUIT BgD4B2NqCq5kEv7h588//jKOfSo3zNsXd+I24XAdynAIYT5fzGaz+XyxWNSx sySk1crb7VZRuDsaAODfGVNvqyufhH8rv/z0a3Xw+9kff87mLpYLtPPw6EHx 8vHKm+fdiHdHf3MtyjAAAAAsk39RAwAAIDnKMAAAAMlRhgEAAEiOMgwAAEBy lGEAAACSowwDAACQHGUYAACA5CjDAAAAJEcZBgAAIDnKMAAAAMlRhgEAAEiO MgwAAEBylGEAAACSowwDAACQHGUYAACA5CjDAAAAJCdvmiZ2BgAAAFiepmny yWQSOwYAAAAsz2QyyUejUewYAAAAsDyj0SgfDAaxYwAAAMDyDAaDvNfrxY4B AAAAy9Pr9fKyLIfDYewkAAAAsAzD4bAsyzyEcHh4GDsMAAAALMN5Bc5DCEdH R/1+P3YeAAAA+L76/f7R0VEIIZ9OpyGE/f19fzgMAADALdY0zf7+fghhOp3m VVXN5/OTk5Pd3d3YwQAAAOB72d3dPTk5mc/nVVXlWZaNx+O6ro+Pj3d2dnw/ DAAAwC3TNM3Ozs7x8XFd1+PxOMuy1tbWVl3XX79+7XQ6nz59+vjx4/379+/e vRs7KgAAAFyBfr///v37sizruj49PV0sFnmet54+fRpCqOv67OysKIrJZPLh w4eqqtbX19fW1mJnBgAAgEsaDocHBwd7e3vj8Xg2m52entZ1nWVZnufZ9vZ2 /bemabrdbrfbPX/axsbG5ubmw4cP7927t7a2lmVZ7BMBAACACzVNM5lMRqPR YDDo9XplWZ4/XlVVVVXnNfjcXx8qi06pdi1dAAAAAElFTkSuQmCC --WXhK1kKIm1-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 04 09:22:16 2022 Received: (at 59347) by debbugs.gnu.org; 4 Dec 2022 14:22:16 +0000 Received: from localhost ([127.0.0.1]:57965 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1psm-0000Gu-45 for submit@debbugs.gnu.org; Sun, 04 Dec 2022 09:22:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38376) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1psj-0000Gj-A3 for 59347@debbugs.gnu.org; Sun, 04 Dec 2022 09:22:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1psd-0000aB-4s; Sun, 04 Dec 2022 09:22:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=JFZzyEDGX58BieRysdx4K1tMHZBnDYhMbMMt2JhDhJA=; b=VKMRwZEZlxQK Q37l7W0vzV7J7vjFZgZMEEGmNPQR1bHWslHknSzVCtoyix96HnYgPBy6Zbn6QigUM91O76Wz/1trU 0yKZDw2SW/K4ATPnFMe0z7H3Ovp2ZA0dGfSulzqb9Yxl32H2wwg6HNvOvAj+ay1Kld9nimhS0c1Gr rL432RQP9Ds3hSW98u0RYM6xEUJ/VnyDLSa3PGvcTiX/3f/iROBH/PjqSpCbOzXrwvCOmgaIdM/OE utT8R4OGxy6qdj8aVn1wBMzrExHtn+NjemhRgSPxKVNlgKrEU74iGhTVnYkwyhvLFmzozeGZvOGO0 5kCxfaKhup2vJ0XfDtMgXg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1psc-0006Xp-M7; Sun, 04 Dec 2022 09:22:06 -0500 Date: Sun, 04 Dec 2022 16:21:46 +0200 Message-Id: <83tu2b9rlx.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Wed, 30 Nov 2022 15:38:37 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Wed, 30 Nov 2022 15:38:37 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > I attach a screenshot of the font preference box in Firefox. In that > screenshot you see the three most general font families: Serif, Sans Serif > and Monospace. The Serif and Sans Serif families are meant for variable > pitch fonts. Emacs uses these same "Sans Serif" and "Monospace" families. Emacs uses the same families because we have it in face-font-family-alternatives, and/or because Fontconfig has the same notion of families. There's no magic here, and btw face-font-family-alternatives can be customized by the user to yield completely different preferences. But nothing in the family name tells Emacs it _must_ produce a variable-pitch font. Those are just lists of font names, that's all. In your example, you consider DejaVu Sans to be a proper font for that family, but the name "DejaVu Sans" doesn't appear anywhere, so why is it correct? > > You asked for ultra-heavy and heavy weight, but got bold -- why is that > > TRT? > > Same answer: it is TRT because the "family = Sans Serif" specification of > the variable-pitch face is obeyed. This doesn't make sense to me: why should Emacs obey "family = Sans Serif", but not "weight = ultra"? > > Why is it "clear" that font selection should do what you expect here, > > given that the only (weak) indication that we are after a variable-pitch > > font is the family? Why do you consider it so preposterous that Emacs > > comes up with a semi-bold font, when you ask for a semi-bold font? > > > > You seem to misunderstand how font selection works. Stop right there. If you still wonder how you got a semi-angry response in the dispute about narrowed-locking, this arrogant attitude is the reason. You are always right and anyone who disagrees "doesn't understand". You are dangerously close to getting the same reaction in this discussion. If you want a rational, technical, efficient discussion, please drop the attitude and start leveling with me. Do not try to tell me what I do and don't understand, and do not reply with arrogant responses like this one: > > How do you know it wasn't considered? > > I debugged the code. Instead, please assume that I know enough about the code to have good reasons for asking my questions, and please humor me with full, detailed responses. That is the only way to convince me that you are right. So once again, here are my questions: . why do you think Emacs must return only variable-pitch fonts for a spec that includes family = Sans Serif"? where and how should Emacs get the indication that only variable-pitch fonts are acceptable in that case? . why do you consider the family attribute of a face be more important than other attributes? if not all the attributes of a spec are "equal" in their importance, which attributes are more important, and why? and if bold is fine when semi-bold was requested, what about other weights, like ultra-light -- are they also okay? if not, why not? what are the criteria here and with other similar attributes? Without getting detailed answers to these questions, I don't see how we can continue the discussion, nor why we should; and there's no real reason for me to change my mind that what Emacs does now with these specs is correct and expected. > There are, on my system, no less than 166 fonts in the "Sans Serif" > family. It just happens that none of them explicitly supports the 'heavy' > weight / has no explicit 'heavy' variant. But that is not a sufficient > reason to reject all those 166 fonts. What Emacs should do, what others > programs do, and what Emacs would do with the patch, is to select the best > possible font among those 166 fonts. That would mean the user cannot specify a weight meaning "give me that weight or admit failure to find a suitable font". And how does that make sense? > I don't know what else I could say to convince you. You could start showing data and details of the code workings, instead of talking slogans and insults. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 04 09:23:49 2022 Received: (at 59347) by debbugs.gnu.org; 4 Dec 2022 14:23:49 +0000 Received: from localhost ([127.0.0.1]:57978 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1puG-0000I8-NC for submit@debbugs.gnu.org; Sun, 04 Dec 2022 09:23:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40248) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1puE-0000I1-Oe for 59347@debbugs.gnu.org; Sun, 04 Dec 2022 09:23:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1pu6-0000nb-CR; Sun, 04 Dec 2022 09:23:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=7JkoKKw9JyvxUVl9ggZY1O9PbPXdHrkPzQiRl2HhjbM=; b=JndIHCEsqKKB aAHxKR3eE0TtpT12E8EYpztZBRwmQGGp6RmNN9eYaORHo6Qtqh9xkpFKK/bD8SB5el/ZnDQAd6+t3 bm2ZNbx0NScTagbFMCH13Ww6EFL9cnI/GZ9RYdwCbqmQ4UuhjnTZ8CY19dM9Abvtu3ZZQQC/3xUgY c9XHfVgQmtiXQ4QyuNV6+dNBUabMKqQiicYr8SMZY5LEW0VjTprFRFiC7pmiZxrZupr9KljI3UBsR bFHTzhcC/Y1ddX0ShpEw92TTBhJOwCxL6E5c/OYpoqIhaNEwtxiV7Be0WngUpmvyWHwil5FWa7lIc hRu3nrRGN6JuBiKhwOru3g==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1pu5-0006f2-Bq; Sun, 04 Dec 2022 09:23:38 -0500 Date: Sun, 04 Dec 2022 16:23:19 +0200 Message-Id: <83sfhv9rjc.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Wed, 23 Nov 2022 08:13:08 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Wed, 23 Nov 2022 08:13:08 +0000 > From: Gregory Heytings > cc: Eli Zaretskii , 59347@debbugs.gnu.org > > > For me the question is what is its impact in terms of the number of > > fonts we need to consider. > > I don't understand why we should suddently worry about the number of fonts > we consider. During ~8 years (after bf0d3f76dc) _all_ attributes (not > just the size/weight/slant/height ones) were set to nil (in > realize_x_face), and I don't think there were any bug reports about Emacs > being too slow to select fonts. Face realization is something that > happens only rarely. I suspect that you don't have enough fonts installed on your system to see the effect. I've seen people report that they have thousands of fonts installed, and looking for a suitable font take ages. So yes, we do need to worry about that. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 05 18:30:52 2022 Received: (at 59347) by debbugs.gnu.org; 5 Dec 2022 23:30:53 +0000 Received: from localhost ([127.0.0.1]:39044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2KvE-0002wd-BV for submit@debbugs.gnu.org; Mon, 05 Dec 2022 18:30:52 -0500 Received: from heytings.org ([95.142.160.155]:45456) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2KvC-0002wX-91 for 59347@debbugs.gnu.org; Mon, 05 Dec 2022 18:30:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670283048; bh=ECRGgRJy+cwzRO+5pGu4CXiqrJLcivCBOS09SLSSXJA=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=CjAeeVIlI7maMx45rEQaKJWKZzGiX+9Y2pw+NPSFAVCCT0KsafcaKYIYFZ4V24Bpp MYd65kcRj1Ds3qStK4DjinTMKkTgbs9EV/fM2c8vjR04/xkz1JSHmMyS/YKXV7aVH2 0gBr9gdyLIagG2VdhIWpkCdBvLjb0vrKMFUMCrACf/Y2GCO3TPK5G+gvOksUa8oQfr Bd3Q8s/xBiOq1vg1z8t/5aZiou6U+ac9/8gpFZTML6v+WCyNUCDI91kjHzgI7CvAPd AquUyVBtYfbsReZdemuihJS3wfz2TUJyqwkEeJBZr7jtl4DypMsCs3YAEL1ugV/d2w P28+exQz182xg== Date: Mon, 05 Dec 2022 23:30:48 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83tu2b9rlx.fsf@gnu.org> Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) I did not deserve such a public reprimand. I do not care at all about being right or wrong personally, the only thing I care about here is improving Emacs. I try to be as careful as possible, both in the code I write and in the messages I post. In particular, I avoid posting anything that is intentionally insulting, ironical, or even simply humorous. I already spent an unreasonable amount of time on this bug (I'd say easily around 30 hours), although I have no personal interest in seeing it resolved: I did not report it (or any of the bugs to which it is related), and it does not and cannot affect me (I use the same fixed-pitch font everywhere). Nonetheless, I'll try to answer your questions: > > why do you think Emacs must return only variable-pitch fonts for a spec > that includes family = Sans Serif? > In emacs -Q, the only attribute specified in the variable-pitch face is its family: "Sans Serif". There are three canonical, cross-platform, generic font families: "Sans Serif" and "Serif", whose names do not contain the word "proportional" or "variable pitch" but which contain only variable pitch fonts, and "Monospace", which (as its name implies, and as opposed to the Sans Serif and Serif families) contains only fixed pitch fonts. Emacs (by default) only uses the Sans Serif and Monospace generic font families. There is no standard way to make a distiction between monospace fonts with and without serifs. For its fixed-pitch-serif face, which is inherited by Info-quoted and tex-verbatim, Emacs 25 invented another generic font family: "Monospace Serif". > > where and how should Emacs get the indication that only variable-pitch > fonts are acceptable in that case? > It is not Emacs that decides which fonts correspond to a "family = Sans Serif" specification, it is the font driver. In font_list_entities, Emacs passes a font specification to a font driver, which returns a list of fonts matching that specification. When Emacs passes the specification "family = Sans Serif" (or "family = Monospace") to the font driver, it receives a list of all available fonts in that family back. If the specification passed to font_list_entities contains a non-nil width, weight or slant, that list is immediately filtered and all fonts that do not match these width, weight or slant exactly are removed from the list. > > why do you consider the family attribute of a face be more important > than other attributes? if not all the attributes of a spec are "equal" > in their importance, which attributes are more important, and why? > Indeed, the attributes are not equal, in fact none of the attributes are ever equal in their importance. The family is the most important one, followed by the foundry, the registry, the additional style (in that order, see the loop at the end of font_find_for_lface in which Emacs tries to make each of these attributes less specific in turn, starting with the least important one, namely the additional style), followed by the width, height (or size), weight, slant (in the order specified by the variable face-font-selection-order). It is also in that loop (at the end of font_find_for_lface) that face-font-family-alternatives are used. If the generic "Sans Serif", "Monospace" and "Monospace Serif" families that Emacs uses are not a recognized by the font driver (IOW, if font_list_entities returns an empty result for these families), Emacs falls back to some hard-coded, less generic, family names. For example, if "family = Monospace" isn't recognized, Emacs tries "family = courier", and if "family = courier" isn't recongized either, Emacs tries "family = fixed". As noted above, the "Monospace Serif" family is specific to Emacs, so for that generic family name Emacs will always fall back to the less generic family names corresponding to that generic family name in that variable. > > and if bold is fine when semi-bold was requested, what about other > weights, like ultra-light -- are they also okay? if not, why not? > Yes, ultra-light is also okay. If a program requests a font in the Sans Serif family with a semi-bold weight, and the only available font on a given system in that family is a ultra-light one, it's the best possible match for that font specification. It's up to the user to install a font in the Sans Serif family which has a semi-bold variant on their system, if they need a font in the Sans Serif family with a semi-bold variant (or to install another font that is closer to semi-bold than ultra-light, e.g. one with a bold variant). > > what are the criteria here and with other similar attributes? > The family, foundry, registry and additional style attributes are passed "as is" to the font driver, which returns a list of fonts matching these attributes. The width, weight and/or slant are converted to numerical values (with font-{width,weight,slant}-table), and font_score, called by font_sort_entities, called by font_select_entity, which is applied on the list of fonts returned by font_list_entities, selects the best match in that list (according the the preferences in face-font-selection-order). If the width, weight and/or slant were already passed to font_list_entities, the list of fonts passed to font_select_entity contains only fonts that match these width, weight and/or slant, and that mechanism is bypassed. In the worst case, the one which is the cause of this bug, when font_list_entities is called for example with "family = Sans Serif, weight = medium", font_list_entities returns an empty list, even when there are plenty of fonts in the Sans Serif families that would be good candidates according to the scoring mechanism, and therefore Emacs falls back to using face-font-family-alternatives, which is only meant to be used on systems in which the generic font families are not recognized. And in the worst of the worst cases, even using face-font-family-alternatives does not help (IOW, font_list_entities keeps returning an empty list), in which case Emacs falls back to using the default face. From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 06 09:22:30 2022 Received: (at 59347) by debbugs.gnu.org; 6 Dec 2022 14:22:30 +0000 Received: from localhost ([127.0.0.1]:43239 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2Yq5-0004My-DV for submit@debbugs.gnu.org; Tue, 06 Dec 2022 09:22:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2Yq3-0004Ms-O8 for 59347@debbugs.gnu.org; Tue, 06 Dec 2022 09:22:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p2Ypy-0005gq-8P; Tue, 06 Dec 2022 09:22:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=UVaE/wbYkzy4DRmGEx8me6OQ7fkRsLrkwXXSQEYfjCs=; b=BnWprj7awC7C H0zjW5Kk69I69MwxZA21/AYT/AGKhvBtLHU34ozYSE5tpM+M/5uV1vCR6ToLvknH95UbIZgCqdF3S KYDCyhHFHKFFZqy/N3TNxZmhRLkN9orqS5qFw4M8MT94LHxVvFEYL5j00JGPZvLBuzJzSNPklV5hA jCpeaeRqoAvsQo+Q9nRD5I3TuL1cO2/rAoVsPHMOpLLLSFwGEC+iKITiDzkUe8b4D7uStwU0va1mU 0N60ucpu5sFC77JJ+0yATQYcgynp54OryphKd5g5nICMAQx3nvqOBVly2Fcy5dEQwPsLkGYub1xon WfAE3mnKiYZXbSQaau98nw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p2Ypv-0003Bn-FE; Tue, 06 Dec 2022 09:22:21 -0500 Date: Tue, 06 Dec 2022 16:22:05 +0200 Message-Id: <83k0347gtu.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 05 Dec 2022 23:30:48 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Mon, 05 Dec 2022 23:30:48 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > I did not deserve such a public reprimand. I do not care at all about > being right or wrong personally, the only thing I care about here is > improving Emacs. I try to be as careful as possible, both in the code I > write and in the messages I post. In particular, I avoid posting anything > that is intentionally insulting, ironical, or even simply humorous. > > I already spent an unreasonable amount of time on this bug (I'd say easily > around 30 hours), although I have no personal interest in seeing it > resolved: I did not report it (or any of the bugs to which it is related), > and it does not and cannot affect me (I use the same fixed-pitch font > everywhere). > > Nonetheless, I'll try to answer your questions: Thank you. I hope we can now finish up dealing with this issue. > > where and how should Emacs get the indication that only variable-pitch > > fonts are acceptable in that case? > > It is not Emacs that decides which fonts correspond to a "family = Sans > Serif" specification, it is the font driver. In font_list_entities, Emacs > passes a font specification to a font driver, which returns a list of > fonts matching that specification. That is also what I know, so we agree on this point. I will note right here that Emacs has no way of knowing whether the fonts returned by the font driver are or aren't variable-pitch. In fact, AFAIR it is a tricky and not very reliable to try deducing that from the font data Emacs records about each font (see 'font-info'). We just blindly trust the font driver to give us the appropriate list of fonts. IOW, for Emacs the family is just a meaningless string. > If the specification passed to font_list_entities contains a non-nil > width, weight or slant, that list is immediately filtered and all fonts > that do not match these width, weight or slant exactly are removed from > the list. And you are saying that this filtering is wrong, yes? > > why do you consider the family attribute of a face be more important > > than other attributes? if not all the attributes of a spec are "equal" > > in their importance, which attributes are more important, and why? > > Indeed, the attributes are not equal, in fact none of the attributes are > ever equal in their importance. The family is the most important one, > followed by the foundry, the registry, the additional style (in that > order, see the loop at the end of font_find_for_lface in which Emacs tries > to make each of these attributes less specific in turn, starting with the > least important one, namely the additional style), followed by the width, > height (or size), weight, slant (in the order specified by the variable > face-font-selection-order). That is not the relative importance of interest in the context of this discussion, because Emacs already does look for a suitable font in the order of the importance you describe. My question was not about this basic relative importance, it was about something else: when none of the fonts of the given FAMILY fits the font spec, why do you consider keeping the family to be more important than keeping the weight? And another question: if we are to follow face-font-selection-order, to observe the relative importance of the attributes as set by the user, then why did your patch only consider relaxing the weight (which is in the penultimate place in the order of importance), and not the slant (which is the least important attribute, in the default order we use)? > It is also in that loop (at the end of font_find_for_lface) that > face-font-family-alternatives are used. If the generic "Sans Serif", > "Monospace" and "Monospace Serif" families that Emacs uses are not a > recognized by the font driver (IOW, if font_list_entities returns an empty > result for these families), Emacs falls back to some hard-coded, less > generic, family names. I'm not sure I agree with this part of your description. The code looks up face-font-family-alternatives _before_ the loop in font_find_for_lface, i.e., _before_ font_list_entities is called. Where exactly do you see what you describe above? > > and if bold is fine when semi-bold was requested, what about other > > weights, like ultra-light -- are they also okay? if not, why not? > > Yes, ultra-light is also okay. If a program requests a font in the Sans > Serif family with a semi-bold weight, and the only available font on a > given system in that family is a ultra-light one, it's the best possible > match for that font specification. It's up to the user to install a font > in the Sans Serif family which has a semi-bold variant on their system, if > they need a font in the Sans Serif family with a semi-bold variant (or to > install another font that is closer to semi-bold than ultra-light, e.g. > one with a bold variant). > > > > > what are the criteria here and with other similar attributes? > > > > The family, foundry, registry and additional style attributes are passed > "as is" to the font driver, which returns a list of fonts matching these > attributes. The width, weight and/or slant are converted to numerical > values (with font-{width,weight,slant}-table), and font_score, called by > font_sort_entities, called by font_select_entity, which is applied on the > list of fonts returned by font_list_entities, selects the best match in > that list (according the the preferences in face-font-selection-order). > If the width, weight and/or slant were already passed to > font_list_entities, the list of fonts passed to font_select_entity > contains only fonts that match these width, weight and/or slant, and that > mechanism is bypassed. IOW, you want to disable the filtering of candidate fonts in font_list_entities, and instead consider _all_ the candidates, selecting the best match for the numerical attributes: width, height, weight, and slant. And you don't want to relax the non-numerical attributes (family, foundry, registry, adstyle) unless there's really no font, of any width/height/weight/slant, installed for the specified family/foundry/registry/adstyle. Is that right? If that is what you want us to do, then I must ask at least about the height: is it really reasonable to prefer _any_ height from the given family, even if it's radically different from what was requested? Also, the patch you suggested to install in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#77 doesn't do the above, it is basically a minor semi-kludgey change of the existing code, which only considers 'normal' weight when 'medium' was requested. Why didn't you submit a patch that follows your description and your critique to the logical conclusion? The rest of what I write below is based on the assumption that my understanding of your critique of the current code is as I describe above; if it is wrong, please ignore what's below, and please help me understand what is it that you are actually proposing and I misunderstood. So I see the following issues with your proposal (which AFAIU is different from the patch you actually posted): . we will examine much more fonts than we do now: the current code only examines matching fonts and returns the first one that satisfies the spec; your proposal will require us to examine all of them, in order to find the best match out of many . your logic, which says that the family is so much more important than the other attributes is not necessarily correct in all the cases where this code is executed: I can easily imagine cases where the requested weight is so important that no other "close" weight will do, and the caller really wants to get an empty list rather than a deviant font So I can only agree to installing the patch along the lines of the above logic, i.e. to make the code relax the numerical attributes trying to keep the family, on the following conditions: . we add an additional loop, like the one in font_find_for_lface, after the original one, and in that additional loop implement the examination of candidates without filtering then by numerical attributes up front; that additional loop will run only if the one before it came up with no fonts that match the family . whether the additional loop will actually run should be controlled by a variable exposed to Lisp, so that if this change causes regressions, we could easily find out this is the reason, and users could work around the regressions without rebuilding Emacs OK? And note that my agreement is not to the patch you posted, but to a more general change in the logic of examining the candidate fonts. This is how I understand what you think Emacs should do; if I misunderstood, please correct me. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 06:00:29 2022 Received: (at 59347) by debbugs.gnu.org; 7 Dec 2022 11:00:29 +0000 Received: from localhost ([127.0.0.1]:49576 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2sA9-0002at-4g for submit@debbugs.gnu.org; Wed, 07 Dec 2022 06:00:29 -0500 Received: from heytings.org ([95.142.160.155]:47328) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2sA6-0002an-Oa for 59347@debbugs.gnu.org; Wed, 07 Dec 2022 06:00:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670410825; bh=qmbgWv34vK0XD0/KarGSCLIdoej6eY1vUfNjpBOwkKE=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=EYi62pOzzEOAPib4/E7mhTgGjoOKhmdb4t2mbtUwzMrQNDfSnnD5+Q97nbW3+DXtd 8+0lktmJXTiC2QEtW0OBnFRQy1xZb7V9nvIYrGhy0ZKzJ+iclVmeQZ3eB8+3sgC07Z /o/gWsoIf+TdYdzVfjNnjzqRNmKUXqXnGL4ZeiVHB1QCfijZHIi9TR9UxMOQH52yUM zWVpo7AwlFjnKEjx8c1VyES7xgy+DFBinOCIf1gyCF77Y1mAbDUCnanvSSgvXlGiT7 +fkXSH/1delSM8pBEVAfLFEHbVtVQZ/3brTeDYlStqUeJ4v2ucdabeXueO9iNRMlYt BFZ474wTAJNng== Date: Wed, 07 Dec 2022 11:00:24 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83k0347gtu.fsf@gnu.org> Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) > > I will note right here that Emacs has no way of knowing whether the > fonts returned by the font driver are or aren't variable-pitch. In > fact, AFAIR it is a tricky and not very reliable to try deducing that > from the font data Emacs records about each font (see 'font-info'). We > just blindly trust the font driver to give us the appropriate list of > fonts. IOW, for Emacs the family is just a meaningless string. > Indeed, Emacs trusts the font driver >> If the specification passed to font_list_entities contains a non-nil >> width, weight or slant, that list is immediately filtered and all fonts >> that do not match these width, weight or slant exactly are removed from >> the list. > > And you are saying that this filtering is wrong, yes? > No, that filtering in font_list_entities is not wrong, because font_list_entities has another caller besides font_find_for_lface: Flist_fonts. What is wrong is to call font_list_entities with these attributes non-nil in >>> why do you consider the family attribute of a face be more important >>> than other attributes? if not all the attributes of a spec are "equal" >>> in their importance, which attributes are more important, and why? >> >> Indeed, the attributes are not equal, in fact none of the attributes are >> ever equal in their importance. The family is the most important one, >> followed by the foundry, the registry, the additional style (in that >> order, see the loop at the end of font_find_for_lface in which Emacs tries >> to make each of these attributes less specific in turn, starting with the >> least important one, namely the additional style), followed by the width, >> height (or size), weight, slant (in the order specified by the variable >> face-font-selection-order). > > That is not the relative importance of interest in the context of this > discussion, because Emacs already does look for a suitable font in the order > of the importance you describe. > > My question was not about this basic relative importance, it was about > something else: when none of the fonts of the given FAMILY fits the font > spec, why do you consider keeping the family to be more important than > keeping the weight? > > And another question: if we are to follow face-font-selection-order, to > observe the relative importance of the attributes as set by the user, then > why did your patch only consider relaxing the weight (which is in the > penultimate place in the order of importance), and not the slant (which is > the least important attribute, in the default order we use)? > >> It is also in that loop (at the end of font_find_for_lface) that >> face-font-family-alternatives are used. If the generic "Sans Serif", >> "Monospace" and "Monospace Serif" families that Emacs uses are not a >> recognized by the font driver (IOW, if font_list_entities returns an empty >> result for these families), Emacs falls back to some hard-coded, less >> generic, family names. > > I'm not sure I agree with this part of your description. The code looks up > face-font-family-alternatives _before_ the loop in font_find_for_lface, > i.e., _before_ font_list_entities is called. Where exactly do you see what > you describe above? > >>> and if bold is fine when semi-bold was requested, what about other >>> weights, like ultra-light -- are they also okay? if not, why not? >> >> Yes, ultra-light is also okay. If a program requests a font in the Sans >> Serif family with a semi-bold weight, and the only available font on a >> given system in that family is a ultra-light one, it's the best possible >> match for that font specification. It's up to the user to install a font >> in the Sans Serif family which has a semi-bold variant on their system, if >> they need a font in the Sans Serif family with a semi-bold variant (or to >> install another font that is closer to semi-bold than ultra-light, e.g. >> one with a bold variant). >> >>> >>> what are the criteria here and with other similar attributes? >>> >> >> The family, foundry, registry and additional style attributes are passed >> "as is" to the font driver, which returns a list of fonts matching these >> attributes. The width, weight and/or slant are converted to numerical >> values (with font-{width,weight,slant}-table), and font_score, called by >> font_sort_entities, called by font_select_entity, which is applied on the >> list of fonts returned by font_list_entities, selects the best match in >> that list (according the the preferences in face-font-selection-order). >> If the width, weight and/or slant were already passed to >> font_list_entities, the list of fonts passed to font_select_entity >> contains only fonts that match these width, weight and/or slant, and that >> mechanism is bypassed. > > IOW, you want to disable the filtering of candidate fonts in > font_list_entities, and instead consider _all_ the candidates, selecting the > best match for the numerical attributes: width, height, weight, and slant. > And you don't want to relax the non-numerical attributes (family, foundry, > registry, adstyle) unless there's really no font, of any > width/height/weight/slant, installed for the specified > family/foundry/registry/adstyle. Is that right? > > If that is what you want us to do, then I must ask at least about the > height: is it really reasonable to prefer _any_ height from the given > family, even if it's radically different from what was requested? > > Also, the patch you suggested to install in > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#77 doesn't do the above, > it is basically a minor semi-kludgey change of the existing code, which only > considers 'normal' weight when 'medium' was requested. Why didn't you > submit a patch that follows your description and your critique to the > logical conclusion? > > The rest of what I write below is based on the assumption that my > understanding of your critique of the current code is as I describe above; > if it is wrong, please ignore what's below, and please help me understand > what is it that you are actually proposing and I misunderstood. > > So I see the following issues with your proposal (which AFAIU is different > from the patch you actually posted): > > . we will examine much more fonts than we do now: the current code only > examines matching fonts and returns the first one that satisfies the > spec; your proposal will require us to examine all of them, in order to > find the best match out of many > . your logic, which says that the family is so much more important than the > other attributes is not necessarily correct in all the cases where this > code is executed: I can easily imagine cases where the requested weight > is so important that no other "close" weight will do, and the caller > really wants to get an empty list rather than a deviant font > > So I can only agree to installing the patch along the lines of the above > logic, i.e. to make the code relax the numerical attributes trying to keep > the family, on the following conditions: > > . we add an additional loop, like the one in font_find_for_lface, after the > original one, and in that additional loop implement the examination of > candidates without filtering then by numerical attributes up front; that > additional loop will run only if the one before it came up with no fonts > that match the family > . whether the additional loop will actually run should be controlled by a > variable exposed to Lisp, so that if this change causes regressions, we > could easily find out this is the reason, and users could work around the > regressions without rebuilding Emacs > > OK? And note that my agreement is not to the patch you posted, but to a > more general change in the logic of examining the candidate fonts. This is > how I understand what you think Emacs should do; if I misunderstood, please > correct me. > > Thanks. > > > > From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 06:02:43 2022 Received: (at 59347) by debbugs.gnu.org; 7 Dec 2022 11:02:43 +0000 Received: from localhost ([127.0.0.1]:49611 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2sCJ-0002dG-8j for submit@debbugs.gnu.org; Wed, 07 Dec 2022 06:02:43 -0500 Received: from heytings.org ([95.142.160.155]:47342) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p2sCH-0002dA-I9 for 59347@debbugs.gnu.org; Wed, 07 Dec 2022 06:02:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670410959; bh=qhVpLAhToVd8gbku1OOhtF97Q7GA/btbbpoyW41VKIw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=dKb//bN5vDFDYrr/eMS1UqM2ngj2JptesHPO+JnpCdEWjmE2e5H6sb2dw7gr4EtWR unWPcsEirXD+A6I6STopi83Ky2b2+9LUPKeKiMG9ddKQmremrJz9fgYxY4/HIOX04K LGPpBm6f5Xwl3+McncpHrJxC/QBgvhZ+kX6dQfHNhyKRxDH4OflKnclDKqO226CyIW ses4JX0albawt1Wo3pXAGaYbCZP5qkBJNbWLAtwsEyrcbLqDchZ+p11RBuEYeXf2Nv mQXh/p/aL1XeRGeNkZYm4fzgTaN2DNSMei3iUgr+LUQ/DmLsHkW64A9KcJL8gJFr6z Ofr/q1xrz+p3g== Date: Wed, 07 Dec 2022 11:02:39 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) [Sorry, please ignore my previous post.] From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 18:20:07 2022 Received: (at 59347) by debbugs.gnu.org; 7 Dec 2022 23:20:07 +0000 Received: from localhost ([127.0.0.1]:52777 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p33hq-0004Tq-85 for submit@debbugs.gnu.org; Wed, 07 Dec 2022 18:20:07 -0500 Received: from heytings.org ([95.142.160.155]:48048) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p33hn-0004TP-JC for 59347@debbugs.gnu.org; Wed, 07 Dec 2022 18:20:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670455198; bh=4NZGzMB3TCi2EzgmCysKzO5ogj5oWyFHr4fTTxENglw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=8wmbz0bVxvBUB9dtIB+glqy0d/aVc6CWyIJKS63MNYSVRFqD8TC2ON+Y12Yn7XMIe 87paq1+FeESy9DBQKZpCUCqDyb4OajCB3yfOHI2HTPWQXC/uVhTDa1uR0uxvtpcxOR oIYGZEpREPNtkXlwS4C+OBL/pJO5B3mT+PAYciQT0mkhOjKflGBUTgF0g1JBTk4p8t lkHX0vZHhQkHiUmHCPV9zpK1Hqg5yMkXKTgxBM5rNIbtoRWT5XDyRlNm399hXh3NhD pHfabQNBVJS4iarYgJNAnUSjCUfUV1EKHmOb4DUuUtblbip8uNu3+XNoc27uILz7LG iGivI4V16A/3A== Date: Wed, 07 Dec 2022 23:19:57 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83k0347gtu.fsf@gnu.org> Message-ID: References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="axgqivedOD" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) --axgqivedOD Content-Type: text/plain; charset=us-ascii; format=flowed > > I will note right here that Emacs has no way of knowing whether the > fonts returned by the font driver are or aren't variable-pitch. In > fact, AFAIR it is a tricky and not very reliable to try deducing that > from the font data Emacs records about each font (see 'font-info'). We > just blindly trust the font driver to give us the appropriate list of > fonts. IOW, for Emacs the family is just a meaningless string. > In a sense the family name is just a meaningless string indeed. The names "Serif", "Sans Serif" and "Monospace" are just a convention. And indeed, Emacs trusts the font driver, why wouldn't it? And what else could it do? The font driver itself calculates the "monospace" or "proportional" property based on the actual glyph widths in each font (at least that's what Fontconfig does). When all glyphs have the same width, the font is considered monospace and its 'spacing' property is set to 100. Otherwise the font is considered proportional and its 'spacing' property is set to 0. And if for some reason Fontconfig does not set that property correctly for a font, it can be forced by the user. I don't understand what you mean by "try deducing that from the font data Emacs records about each font". We could double-check that when we want a fixed-pitch font max-width == average-width == space-width, and when we want a variable-pitch font max-width != average-width != space-width, but what would be the benefit of doing that? >>> why do you consider the family attribute of a face be more important >>> than other attributes? if not all the attributes of a spec are >>> "equal" in their importance, which attributes are more important, and >>> why? >> >> Indeed, the attributes are not equal, in fact none of the attributes >> are ever equal in their importance. The family is the most important >> one, followed by the foundry, the registry, the additional style (in >> that order, see the loop at the end of font_find_for_lface in which >> Emacs tries to make each of these attributes less specific in turn, >> starting with the least important one, namely the additional style), >> followed by the width, height (or size), weight, slant (in the order >> specified by the variable face-font-selection-order). > > That is not the relative importance of interest in the context of this > discussion, because Emacs already does look for a suitable font in the > order of the importance you describe. > The problem is precisely that currently it doesn't do that, when faces such as variable-pitch are realized. The font list returned by font_list_entities called in font_find_for_lface (called by font_load_for_lface, called by realize_gui_face) is erroneously limited to fonts which have the exact same width/slant/weight attributes as the default face (which is _not_ the font that is being realized). If the default face has for example weight = medium, and Emacs realizes the variable-pitch face whose only non-nil attribute (in emacs -Q) is "family = Sans Serif", and if there are no fonts in the Sans Serif family with a weight equal to medium, font_list_entities returns an empty list. Which is wrong. > > My question was not about this basic relative importance, it was about > something else: when none of the fonts of the given FAMILY fits the font > spec, why do you consider keeping the family to be more important than > keeping the weight? > I don't understand your question. If we agree that there is an order of importance in the attributes of a font spec, and that the family is the most important one, it seems clear to me that keeping the family is more important than keeping the weight. What am I missing? By the way, that's what Emacs already does, in most cases (the exception being the current bug). If (in emacs -Q) you (set-face-attribute 'variable-pitch nil :weight medium) and if (1) there are no fonts in the Sans Serif family with a medium weight on your system but (2) there are fonts in the Monospace family with a medium weight, Emacs will not suddenly select a fixed pitch font for the variable-pitch face. > > And another question: if we are to follow face-font-selection-order, to > observe the relative importance of the attributes as set by the user, > then why did your patch only consider relaxing the weight (which is in > the penultimate place in the order of importance), and not the slant > (which is the least important attribute, in the default order we use)? > That's not what the last patch I had sent did (see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#164). In that patch all these attributes (weight/slant/width) were set to nil. However, after spending a few more hours on this, I concluded that the fix I proposed in that patch was placed a bit too low in the abstraction layers, and that it is safer to place it where it belongs, namely in realize_gui_face. font_find_for_lface has other callers, which may depend in subtle ways on its current behavior. I attach that new, and hopefully final, patch. I checked in particular it with the recipes of bug#37473, bug#57555, bug#59347 and bug#59371, and with some variants. All seem to work correctly. >> It is also in that loop (at the end of font_find_for_lface) that >> face-font-family-alternatives are used. If the generic "Sans Serif", >> "Monospace" and "Monospace Serif" families that Emacs uses are not a >> recognized by the font driver (IOW, if font_list_entities returns an >> empty result for these families), Emacs falls back to some hard-coded, >> less generic, family names. > > I'm not sure I agree with this part of your description. The code looks > up face-font-family-alternatives _before_ the loop in > font_find_for_lface, i.e., _before_ font_list_entities is called. Where > exactly do you see what you describe above? > The code in font_find_for_lface just above the final loop that looks up face-font-family-alternatives only populates the 'family' array. Nothing "concrete" happens in font_find_for_lface before the final loop: the code only populates the 'family', 'foundry', 'registry' and 'adstyle' arrays, as well as the 'work' font spec. >>> what are the criteria here and with other similar attributes? >> >> The family, foundry, registry and additional style attributes are >> passed "as is" to the font driver, which returns a list of fonts >> matching these attributes. The width, weight and/or slant are >> converted to numerical values (with font-{width,weight,slant}-table), >> and font_score, called by font_sort_entities, called by >> font_select_entity, which is applied on the list of fonts returned by >> font_list_entities, selects the best match in that list (according the >> the preferences in face-font-selection-order). If the width, weight >> and/or slant were already passed to font_list_entities, the list of >> fonts passed to font_select_entity contains only fonts that match these >> width, weight and/or slant, and that mechanism is bypassed. > > IOW, you want to disable the filtering of candidate fonts in > font_list_entities, and instead consider _all_ the candidates, selecting > the best match for the numerical attributes: width, height, weight, and > slant. > Yes, that's still what I want to do, but in realize_gui_face and not in font_find_for_lface anymore. > > And you don't want to relax the non-numerical attributes (family, > foundry, registry, adstyle) unless there's really no font, of any > width/height/weight/slant, installed for the specified > family/foundry/registry/adstyle. > It is not necessary to change anything there, because the loop at the end of font_find_for_lface already relaxes these non-numerical attributes when necessary: if there is no font of any width/height/weight/slant for the specified family/foundry/registry/adstyle, Emacs tries to set adstyle to nil (if it isn't already), then to set registry to nil (if it isn't already), then to set foundry to nil (if it isn't already). And if doing that had no effect, Emacs tries the alternative family names listed in face-font-family-alternatives. > > If that is what you want us to do, then I must ask at least about the > height: is it really reasonable to prefer _any_ height from the given > family, even if it's radically different from what was requested? > The height (or size) attribute already receives a special treatment in font_find_for_lface, where it is already set to nil before being passed to font_list_entities. --axgqivedOD Content-Type: text/x-diff; name=Unset-the-weight-slant-width-in-the-spec-when-realiz.patch Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: attachment; filename=Unset-the-weight-slant-width-in-the-spec-when-realiz.patch RnJvbSA0N2I0ZjA5Nzg2ZjFlZGZmMGE2NWE5YzUyZWI0ZjYyNjEyZjNmNWUz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBXZWQsIDcgRGVj IDIwMjIgMjM6MTU6MDYgKzAwMDANClN1YmplY3Q6IFtQQVRDSF0gVW5zZXQg dGhlIHdlaWdodC9zbGFudC93aWR0aCBpbiB0aGUgc3BlYyB3aGVuIHJlYWxp emluZyBhDQogZm9udA0KDQpCZXR3ZWVuIGNvbW1pdHMgYmYwZDNmNzZkYyAo MjAxNCkgYW5kIDZiMWVkMmYyYzkgKDIwMjIpLA0KcmVhbGl6ZV9ndWlfZmFj ZSBjYWxsZWQgZm9udF9sb2FkX2Zvcl9sZmFjZSB3aXRoIGFuIGVtcHR5IG9y DQpwYXJ0bHkgZW1wdGllZCBmb250IHNwZWMsIGkuZS4gaXQgaWdub3JlZCBh IHBhcnQgb2YgaXRzIGF0dHJzDQphcmd1bWVudC4gIFRoZSByYXRpb25hbGUg Z2l2ZW4gaW4gYnVnIzE3OTczLCB3aGljaCBsZWQgdG8NCmJmMGQzZjc2ZGMs IGlzIG5vdCBjbGVhci4gIEhvd2V2ZXIsIDZiMWVkMmYyYzksIHdoaWNoIHBh c3Nlcw0KdGhlIGZ1bGwgZm9udCBzcGVjIHRvIGZvbnRfbG9hZF9mb3JfbGZh Y2UgYW5kDQpmb250X2ZpbmRfZm9yX2xmYWNlLCBsZWFkcyB0byBzdWJvcHRp bWFsIGZvbnQgY2hvaWNlcywgZm9yDQpleGFtcGxlIHdoZW4gdGhlIGZvbnQg Y2hvc2VuIGZvciB0aGUgZGVmYXVsdCBmYWNlIGhhcyBhDQp3ZWlnaHQsIHNs YW50IG9yIHdpZHRoIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBvdGhlcg0K YXZhaWxhYmxlIGZvbnRzIG9uIHRoZSBzeXN0ZW0sIHN1Y2ggYXMgJ21lZGl1 bScgb3IgJ2hlYXZ5Jy4NCg0KSWYgdGhlc2UgYXR0cmlidXRlcyBhcmUgbm90 IHVuc2V0IGhlcmUsIHRoZSBjYWxsIHRvDQpmb250X2xpc3RfZW50aXRpZXMg aW4gZm9udF9maW5kX2Zvcl9sZmFjZSBhcmJpdHJhcmlseSBsaW1pdHMNCnRo ZSBjYW5kaWRhdGUgZm9udCBsaXN0IHRvIHRob3NlIHRoYXQgYXJlIHBlcmZl Y3QgbWF0Y2hlcyBmb3INCnRoZXNlIGF0dHJpYnV0ZXMsIHdoaWNoIG1lYW5z IHRoYXQgdGhlIHNjb3JpbmcgbWVjaGFuaXNtIGlzDQpieXBhc3NlZC4gIE5v dGUgdGhhdCB0aGUgc2l6ZSBhdHRyaWJ1dGUgaW4gc3BlYyBpcyBhbHNvIHVu c2V0LA0KaW4gZm9udF9maW5kX2Zvcl9sZmFjZS4NCg0KKiBzcmMveGZhY2Vz LmMgKHJlYWxpemVfZ3VpX2ZhY2UpOiBVbnNldCB0aGUgd2VpZ2h0LCBzbGFu dCBhbmQNCndpZHRoIG9mIHRoZSBmb250IHNwZWMuICBGaXhlcyBidWcjNTc1 NTUgYW5kIGJ1ZyM1OTM0Ny4NCi0tLQ0KIHNyYy94ZmFjZXMuYyB8IDIwICsr KysrKysrKysrKysrKysrKy0tDQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9zcmMv eGZhY2VzLmMgYi9zcmMveGZhY2VzLmMNCmluZGV4IGRmMDc4MjI3YzguLjcx MDQyYTMxMjYgMTAwNjQ0DQotLS0gYS9zcmMveGZhY2VzLmMNCisrKyBiL3Ny Yy94ZmFjZXMuYw0KQEAgLTYwNzEsOCArNjA3MSwyNCBAQCByZWFsaXplX2d1 aV9mYWNlIChzdHJ1Y3QgZmFjZV9jYWNoZSAqY2FjaGUsIExpc3BfT2JqZWN0 IGF0dHJzW0xGQUNFX1ZFQ1RPUl9TSVpFXQ0KIAkgICAgZW1hY3NfYWJvcnQg KCk7DQogCX0NCiAgICAgICBpZiAoISBGT05UX09CSkVDVF9QIChhdHRyc1tM RkFDRV9GT05UX0lOREVYXSkpDQotCWF0dHJzW0xGQUNFX0ZPTlRfSU5ERVhd DQotCSAgPSBmb250X2xvYWRfZm9yX2xmYWNlIChmLCBhdHRycywgYXR0cnNb TEZBQ0VfRk9OVF9JTkRFWF0pOw0KKwl7DQorCSAgTGlzcF9PYmplY3Qgc3Bl YyA9IGNvcHlfZm9udF9zcGVjIChhdHRyc1tMRkFDRV9GT05UX0lOREVYXSk7 DQorCSAgLyogVW5zZXQgdGhlIHdlaWdodCwgc2xhbnQgYW5kIHdpZHRoIGlu IHNwZWMuICBUaGUgYmVzdA0KKwkgICAgIHBvc3NpYmxlIHZhbHVlcyBmb3Ig dGhlc2UgYXR0cmlidXRlcyBpcyBkZXRlcm1pbmVkIGluDQorCSAgICAgZm9u dF9maW5kX2Zvcl9sZmFjZSwgY2FsbGVkIGJ5IGZvbnRfbG9hZF9mb3JfbGZh Y2UsIHdoZW4NCisJICAgICB0aGUgY2FuZGlkYXRlIGxpc3QgcmV0dXJuZWQg YnkgZm9udF9saXN0X2VudGl0aWVzIGlzDQorCSAgICAgc29ydGVkIGJ5IGZv bnRfc2VsZWN0X2VudGl0eSAod2hpY2ggY2FsbHMNCisJICAgICBmb250X3Nv cnRfZW50aXRpZXMsIHdoaWNoIGNhbGxzIGZvbnRfc2NvcmUpLiAgSWYgdGhl c2UNCisJICAgICBhdHRyaWJ1dGVzIGFyZSBub3QgdW5zZXQgaGVyZSwgdGhl IGNhbmRpZGF0ZSBmb250IGxpc3QNCisJICAgICByZXR1cm5lZCBieSBmb250 X2xpc3RfZW50aXRpZXMgb25seSBjb250YWlucyBmb250cyB0aGF0DQorCSAg ICAgYXJlIGV4YWN0IG1hdGNoZXMgZm9yIHRoZXNlIHdlaWdodCwgc2xhbnQg YW5kIHdpZHRoDQorCSAgICAgYXR0cmlidXRlcywgd2hpY2ggbGVhZHMgdG8g c3Vib3B0aW1hbCBvciB3cm9uZyBmb250DQorCSAgICAgY2hvaWNlcy4gIFNl ZSBidWcjNTkzNDcuICAqLw0KKwkgIEFTRVQgKHNwZWMsIEZPTlRfV0VJR0hU X0lOREVYLCBRbmlsKTsNCisJICBBU0VUIChzcGVjLCBGT05UX1NMQU5UX0lO REVYLCBRbmlsKTsNCisJICBBU0VUIChzcGVjLCBGT05UX1dJRFRIX0lOREVY LCBRbmlsKTsNCisJICBhdHRyc1tMRkFDRV9GT05UX0lOREVYXSA9IGZvbnRf bG9hZF9mb3JfbGZhY2UgKGYsIGF0dHJzLCBzcGVjKTsNCisJfQ0KICAgICAg IGlmIChGT05UX09CSkVDVF9QIChhdHRyc1tMRkFDRV9GT05UX0lOREVYXSkp DQogCXsNCiAJICBmYWNlLT5mb250ID0gWEZPTlRfT0JKRUNUIChhdHRyc1tM RkFDRV9GT05UX0lOREVYXSk7DQotLSANCjIuMzUuMQ0KDQo= --axgqivedOD-- From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 19:27:46 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 00:27:46 +0000 Received: from localhost ([127.0.0.1]:53092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p34lN-00052N-Lo for submit@debbugs.gnu.org; Wed, 07 Dec 2022 19:27:46 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:27563) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p34lE-00052H-QF for 59347@debbugs.gnu.org; Wed, 07 Dec 2022 19:27:43 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 54ECF44287F; Wed, 7 Dec 2022 19:27:31 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id C9A4E44287C; Wed, 7 Dec 2022 19:27:29 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1670459249; bh=HzCD5aDVrW19Rwc+4TNWrDzQ+njzJPVkMPc5NgitQ1Q=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=idkg5k/po7pn3x9c0014evreh6x8DNcaGUCmG3kHrt9C188hSZlIDEyfFF7br1eop nkC4ze+y2Jwf4oMHHhyAqs1BVs/1Rkj2huYqpMmCizcB0tpSWsjCCuu1p4KHV409G2 RHxM4ctmG26iwl55MLlrXffkEuLWRDAIQwl9Zh3eXlr/lpzQ9QCXS9pI0FLxHCW+dJ re++fjB4oAup61mn4EsmW8BJfqDAc08HB2F6MZuTWGS3LhCrBcFsExGhZMdVGGRdKg ehpPaQ0W1dBz4rwM+6FTHXpxhfxF1zgdBNu7mx73yhhWM3glXfPy+qljSu4iLDWQC9 E1eafwqyZESRA== Received: from pastel (unknown [45.72.193.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9F59F122557; Wed, 7 Dec 2022 19:27:29 -0500 (EST) From: Stefan Monnier To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Gregory Heytings's message of "Wed, 07 Dec 2022 23:19:57 +0000") Message-ID: References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> Date: Wed, 07 Dec 2022 19:27:28 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.313 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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: -3.3 (---) >> My question was not about this basic relative importance, it was about >> something else: when none of the fonts of the given FAMILY fits the font >> spec, why do you consider keeping the family to be more important than >> keeping the weight? > I don't understand your question. If we agree that there is an order of > importance in the attributes of a font spec, Why should we agree on that? When I specify the `:family` property on the `variable-pitch` face, I definitely want it to take precedence over the `:weight` of the default face, yes. But when I specify the `weight` property of the `bold` face, it's not clear at all that the `:family` of the default face should take precedence over the `:weight` of the `bold` face. FWIW, I've been running with your patch and I like the result. I think it's better overall, but I suspect that we still have a fundamental problem with this notion of precedence/ordering. Maybe the ordering should depend on the "stacking order" of the faces and their properties. I.e. instead of merging `bold+variable-pitch+default` to get a set of properties on which we apply a globally-imposed ordering, we could keep track of the relative ordering of the properties: `bold` was on top, so the `:weight` property comes first, then came `variable-pitch` so its `:family` property comes second and the second comes afterwards. So `bold+variable-pitch+default` could result in a different font than `variable-pitch+bold+default` even if the combined properties (i.e. the merged face) are identical. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 20:07:31 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 01:07:31 +0000 Received: from localhost ([127.0.0.1]:53303 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p35Nq-0007jU-Ok for submit@debbugs.gnu.org; Wed, 07 Dec 2022 20:07:31 -0500 Received: from heytings.org ([95.142.160.155]:48154) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p35No-0007jO-2J for 59347@debbugs.gnu.org; Wed, 07 Dec 2022 20:07:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670461646; bh=i0qqjF3oX4HJQMENeSOgP/P8YrENgQdEBoEVTmyfThE=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=lmQ/lPLsHYnyi3JajomSF39eWHd4/78VewQ2EIAc+uXSKArznACaGl+d8gvPv98yB xy4JuDI9tIemmDfyQK9RDCdlxg9pTJrl3dA9cL/9SWvaSNEMKxzmJAJYVRJEzijRv5 fC1tqfSxIRs1B3hZOC8j69gRN0hK/GpG0QNKD4QpTLDJjswA1faLsQ+mrqbb8Q5rLR +9WkQrCF2+iXz+thLnMMbWsxV36LueFOUhsjbEPwbSf5xapqPXuBciHkLyeZ/VmC1+ gjhkFyWWNg2Bcp2Rpq9aZzERcsFffsbTBm2Ehq3GblfEs2yeXthBZc4Lt1eIfSDlon /6e4ocY9EG3lw== Date: Thu, 08 Dec 2022 01:07:25 +0000 From: Gregory Heytings To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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 (-) > > But when I specify the `weight` property of the `bold` face, it's not > clear at all that the `:family` of the default face should take > precedence over the `:weight` of the `bold` face. > I'm not sure I understand what you mean. Do you mean that if a user chooses a font for the default face that has a single variant (say 'regular'), then the 'bold' face (which does not specify any family) should be realized with another font which has a bold variant? And that the 'italic' face should likewise be realized with another font which has an italic variant? Or do you mean that if a user chooses a font for the default face, and then updates the weight attribute of the 'bold' face to a weight value that is not explicitly supported by the font of the default face (say 'ultra-bold'), then the 'bold' face should be realized with another font that explicitly supports that variant? Or do you mean something else? FWIW, I don't think either of these options are reasonable. IMO in the first case the user should just use a font which has more variants for the default face (there are plenty of excellent fonts), and in the second case it is fine to approximate the weight with the weights that are available in the default font. > > Maybe the ordering should depend on the "stacking order" of the faces > and their properties. I.e. instead of merging > `bold+variable-pitch+default` to get a set of properties on which we > apply a globally-imposed ordering, we could keep track of the relative > ordering of the properties: `bold` was on top, so the `:weight` property > comes first, then came `variable-pitch` so its `:family` property comes > second and the second comes afterwards. > > So `bold+variable-pitch+default` could result in a different font than > `variable-pitch+bold+default` even if the combined properties (i.e. the > merged face) are identical. > Why not. But it is already possible to fine-tune each individual face with the existing mechanisms, so I'm not sure the added complexity is worth the price. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 00:32:59 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 05:32:59 +0000 Received: from localhost ([127.0.0.1]:54399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p39Wl-0001Vt-8l for submit@debbugs.gnu.org; Thu, 08 Dec 2022 00:32:59 -0500 Received: from mail-pg1-f177.google.com ([209.85.215.177]:41966) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p39Wj-0001Vn-5O for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 00:32:58 -0500 Received: by mail-pg1-f177.google.com with SMTP id q71so350956pgq.8 for <59347@debbugs.gnu.org>; Wed, 07 Dec 2022 21:32:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=3Hf4VO5VybLrD0gonulRl03pAG4xdQQJlQTOZkFe/ws=; b=Q6TNx7ggmB7vzbKsnmYIbC+ZuMg04DahmTlfi2J1/1Gop8nnFHllqb1TqHR9PXwazd qbnb/oWJK+4NMAnrFFeTcTpbMfXGE6BEOeXTRvYjGk3215H6nQgX+Y6F3hfKHOGqwRPN AcdCwyQ3fUcbFPIKCRhtJOStXpc2xbJSNsjTXFpBjuRZL+4jbZ0Tc/OVqfF9s3VQj1ES wUb8y/hgnRiaVLG3Nck5DYey7ZrHGuGfe5S8ThlT0Z4SOtb1/w0I0eCv0OjrkBltFc39 DN364PlgDtPlsDcp78Rp3zezKPAdjjwDpB769XLMinUM0d6gf4v639xK+aSX+cEUepB2 0tXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3Hf4VO5VybLrD0gonulRl03pAG4xdQQJlQTOZkFe/ws=; b=VVS7F5UhSKcqtcqUJOgrWhmtPIcH0k3+hCzVl0vLHlKu0BPM/Yy6kvsqTMugKKdvPQ ejEsm9zu+1awzwG9VFc8ktDPOreIq+2kNZvMWgMhEZwSoOoqZc5LW23TWk1Wi4o+fTr7 bmbIlDWTzkHDkzb9z+IeII28J6E+YT9x2hgiWvbVE21ziaFk+NQ8fG2iD1LDH71M51IK 9gTfXQs5lVH4xxOI0ofYUphVuF51xAcHE9JwP2MMxvbtvU+H8fEKj1DvdInsDRCtPSx1 G2EZP/SpdJg5oOP7FbcjWel/uV1/rlHYRJ17vDQl+QrNZdP0iJbcxEF7pJ5KZvnWsLrM 2y7w== X-Gm-Message-State: ANoB5pkhPfjbQZfd/CkOcKC3xzqZv4MMNVuaTtWEMARcFCjCKEfA8avu CANI/EjLPYauAWtEYC/gy0A= X-Google-Smtp-Source: AA0mqf7O2p+clObtvPZ/H0eio3qtNYeia7NT3140Mv38rQKSvgsiyshzxoe0eRx8QxZANAn6QtRAIw== X-Received: by 2002:a62:ee0d:0:b0:573:1d31:2b87 with SMTP id e13-20020a62ee0d000000b005731d312b87mr1352385pfi.31.1670477570979; Wed, 07 Dec 2022 21:32:50 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id l124-20020a622582000000b00573eb4a9a66sm14440115pfl.2.2022.12.07.21.32.50 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Dec 2022 21:32:50 -0800 (PST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored From: Yuan Fu In-Reply-To: Date: Wed, 7 Dec 2022 21:32:48 -0800 Content-Transfer-Encoding: quoted-printable Message-Id: <066E73C7-E991-45B6-A5B8-BB164AFEE1BF@gmail.com> References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> To: Stefan Monnier X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , Eli Zaretskii , 59347@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 (-) > On Dec 7, 2022, at 4:27 PM, Stefan Monnier via Bug reports for GNU = Emacs, the Swiss army knife of text editors = wrote: >=20 >>> My question was not about this basic relative importance, it was = about >>> something else: when none of the fonts of the given FAMILY fits the = font >>> spec, why do you consider keeping the family to be more important = than >>> keeping the weight? >> I don't understand your question. If we agree that there is an order = of >> importance in the attributes of a font spec, >=20 > Why should we agree on that? >=20 > When I specify the `:family` property on the `variable-pitch` face, > I definitely want it to take precedence over the `:weight` of the > default face, yes. >=20 > But when I specify the `weight` property of the `bold` face, it's not > clear at all that the `:family` of the default face should take = precedence > over the `:weight` of the `bold` face. >=20 > FWIW, I've been running with your patch and I like the result. I = think > it's better overall, but I suspect that we still have a fundamental > problem with this notion of precedence/ordering. >=20 > Maybe the ordering should depend on the "stacking order" of the faces > and their properties. I.e. instead of merging = `bold+variable-pitch+default` to get > a set of properties on which we apply a globally-imposed ordering, we > could keep track of the relative ordering of the properties: `bold` = was > on top, so the `:weight` property comes first, then came > `variable-pitch` so its `:family` property comes second and the second > comes afterwards. >=20 > So `bold+variable-pitch+default` could result in a different font than > `variable-pitch+bold+default` even if the combined properties (i.e. = the > merged face) are identical. IIUC currently all faces are realized into a =E2=80=9Crealized face=E2=80=9D= , where each attribute is filled in with parent faces=E2=80=99 = attributes. So there is no difference between an explicitly assigned = attribute and an inherited attribute at the time when Emacs selects = fonts. But if I assign only :family attribute to a face, and that face = inherits a :weight attribute, naturally the :family face should take = precedence when selecting fonts. OTOH if I explicitly assign a :weight = attribute, and the :family attribute is inherited, then :weight should = probably take precedence. IIUC you are just describing a generalized version of this strategy, = right? I think it=E2=80=99s a good idea. Even if we don=E2=80=99t = generalize it into a =E2=80=9Cstacking order=E2=80=9D, but only record = what=E2=80=99s inherited and what=E2=80=99s assigned explicitly, and = prioritize the explicitly assigned attributes, it would produce more = intuitive results, I think. Yuan= From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 03:03:57 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 08:03:57 +0000 Received: from localhost ([127.0.0.1]:55128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Bsr-0005RT-An for submit@debbugs.gnu.org; Thu, 08 Dec 2022 03:03:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49912) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Bsp-0005RN-3H for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 03:03:56 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3Bsh-0004jO-PD; Thu, 08 Dec 2022 03:03:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=0kduKbTPsq9JdvtlNMVu/FbBMqPGpBh2drfRfqSNY8A=; b=VV3uZjc8jwIY TCLZHkmtgTwIG59Y2ml1g+b6HWny5t/irFgzOXIPOiNkfOplKPYn5ORJIEGoocTz0EdPsmioueUC5 UYCfVoE7gciQVgMFYXXqqdmSk+R+vQFYFGvWl2MzMMt71BrMJ/Om3qR+rh3qO0McSiUm5hAwWb4wW hZtXHKzSZjroWVdgsiS+UIleaPUrLszxULVKRLbt3AQMm3GFPcezJrFc3FrpZLC1dof9+zDgWE8ad G+rmyx7UjfTaZJwI5ulXEB5dGa6pTS/Z6K4BpE+cvJWT2692EnfwnowlmlN6dKblP7aaMC/Ilwf1K epLM9XR2f60Frj/omQV37Q==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3Bsh-0006qV-84; Thu, 08 Dec 2022 03:03:47 -0500 Date: Thu, 08 Dec 2022 10:03:36 +0200 Message-Id: <83v8mm2ug7.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Wed, 07 Dec 2022 23:19:57 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <834juu9aya.fsf@gnu.org> <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Wed, 07 Dec 2022 23:19:57 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > Thanks for the detailed response. I don't want to restart this long discussion from the beginning, so I will limit myself only to the a few comments, and try to focus on the patch you suggest. We don't need to agree about the rest. > I don't understand what you mean by "try deducing that from the font data > Emacs records about each font". We could double-check that when we want a > fixed-pitch font max-width == average-width == space-width, and when we > want a variable-pitch font max-width != average-width != space-width, but > what would be the benefit of doing that? (The check you are suggesting above doesn't work reliably, IME.) My point was that _if_ we wanted to implement some logic in Emacs that a family implying variable-pitch fonts must yield only variable-pitch fonts (and similarly for fixed-pitch fonts), we'd need to have code for doing that, something that we don't have and AFAIR cannot be implemented for all the font backends we want to support. You don't suggest adding such a test, so we don't need to discuss this tangent. > > My question was not about this basic relative importance, it was about > > something else: when none of the fonts of the given FAMILY fits the font > > spec, why do you consider keeping the family to be more important than > > keeping the weight? > > I don't understand your question. If we agree that there is an order of > importance in the attributes of a font spec, and that the family is the > most important one, it seems clear to me that keeping the family is more > important than keeping the weight. What am I missing? The order on which we agreed is only about the numerical attributes: width, height, weight, and slant. I'm asking about the other attributes, and about their importance relative to the numerical ones. You seem to say that this order is self-evident, and I'm questioning that. But we don't need to keep arguing about this tangent, either. > I checked in particular it with the recipes of bug#37473, bug#57555, > bug#59347 and bug#59371, and with some variants. All seem to work > correctly. What about bug#51768, bug#52493, bug#52888, and the problem reported in https://lists.gnu.org/archive/html/emacs-devel/2021-12/msg01643.html? Also, did you test Emacs invocation as in "emacs -fn FONT" where FONT is specified as Fontconfig and XLFD patterns documented in the "Fonts" node of the Emacs user manual? E.g., what happens if you use the Fontconfig pattern such as "Sans Serif-12:weight=black:slant=oblique:width=condensed"? -- does Emacs start with a font with the expected attributes, both when such a font which matches exactly exists and when an exact match doesn't exist? I'm asking this because AFAIR realize_gui_face is called at startup for the default face of the initial frame, and we need to make sure your proposed patch works in that case as well, even though it basically throws away the weight, slant, and width attributes that were requested. > diff --git a/src/xfaces.c b/src/xfaces.c > index df078227c8..71042a3126 100644 > --- a/src/xfaces.c > +++ b/src/xfaces.c > @@ -6071,8 +6071,24 @@ realize_gui_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE] > emacs_abort (); > } > if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX])) > - attrs[LFACE_FONT_INDEX] > - = font_load_for_lface (f, attrs, attrs[LFACE_FONT_INDEX]); > + { > + Lisp_Object spec = copy_font_spec (attrs[LFACE_FONT_INDEX]); > + /* Unset the weight, slant and width in spec. The best > + possible values for these attributes is determined in > + font_find_for_lface, called by font_load_for_lface, when > + the candidate list returned by font_list_entities is > + sorted by font_select_entity (which calls > + font_sort_entities, which calls font_score). If these > + attributes are not unset here, the candidate font list > + returned by font_list_entities only contains fonts that > + are exact matches for these weight, slant and width > + attributes, which leads to suboptimal or wrong font > + choices. See bug#59347. */ > + ASET (spec, FONT_WEIGHT_INDEX, Qnil); > + ASET (spec, FONT_SLANT_INDEX, Qnil); > + ASET (spec, FONT_WIDTH_INDEX, Qnil); > + attrs[LFACE_FONT_INDEX] = font_load_for_lface (f, attrs, spec); > + } > if (FONT_OBJECT_P (attrs[LFACE_FONT_INDEX])) > { > face->font = XFONT_OBJECT (attrs[LFACE_FONT_INDEX]); As I mentioned earlier, any such change must be controlled by a variable exposed to Lisp, which could then be used to investigate and perhaps countermand any regressions it could cause. If you agree to adding such a variable, I'm okay with installing this on the emacs-29 branch. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 03:10:24 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 08:10:24 +0000 Received: from localhost ([127.0.0.1]:55155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Bz4-0005UY-BO for submit@debbugs.gnu.org; Thu, 08 Dec 2022 03:10:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46266) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Byz-0005UO-Au for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 03:10:21 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3Bys-0002Xw-7a; Thu, 08 Dec 2022 03:10:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ZIDljAwf9UQxO00ASlP71NEcJaj3NLUnI+TsxNsvuJQ=; b=dOFsVaz5rHTr /KFszVvfT0sIxqiBCWirQKK7sIFo+uhTNsqXxWjD3SFAq4hI6V0zsai1h/MDyKvxl2pSUviyr6LO0 p6sJcaykFHhe7baQSdHNiXpEwMyXGVLVnLC0hmVyhUhEWPvOT+ICUM7/GqhMFRVs5hiaQFpS3z0Qa CusyfL2MKMuim2DoVFjwsKkLsBRuxedtHqqlZT7ig1dleqSbaNz3ZZMWRE80Wm8nFpZB+hY8j0VsQ 7tUSXH7WrQOb8eKd3pCnxq47Ca9xyu7mCz2LajrZVHOff8n8wfb/5dHUOmu5zqK6XVSPsIdVUyoPJ PMLAHi3usdLiByjx7xDJeA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3Byr-0001Dn-Nr; Thu, 08 Dec 2022 03:10:10 -0500 Date: Thu, 08 Dec 2022 10:09:58 +0200 Message-Id: <83tu262u5l.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Wed, 07 Dec 2022 19:27:28 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: Eli Zaretskii , 59347@debbugs.gnu.org > Date: Wed, 07 Dec 2022 19:27:28 -0500 > > >> My question was not about this basic relative importance, it was about > >> something else: when none of the fonts of the given FAMILY fits the font > >> spec, why do you consider keeping the family to be more important than > >> keeping the weight? > > I don't understand your question. If we agree that there is an order of > > importance in the attributes of a font spec, > > Why should we agree on that? > > When I specify the `:family` property on the `variable-pitch` face, > I definitely want it to take precedence over the `:weight` of the > default face, yes. > > But when I specify the `weight` property of the `bold` face, it's not > clear at all that the `:family` of the default face should take precedence > over the `:weight` of the `bold` face. If we want to distinguish between explicitly requested attributes and inherited attributes, we need to store this information inside the font spec. (We have the :user-spec attribute, but it is used for slightly different purposes.) Please also note that explicit requests for attributes can come from a Lisp program, not from the user. > FWIW, I've been running with your patch and I like the result. Which patch is that? The one proposed in the message to which you are responding, or one of the earlier ones? > Maybe the ordering should depend on the "stacking order" of the faces > and their properties. I.e. instead of merging `bold+variable-pitch+default` to get > a set of properties on which we apply a globally-imposed ordering, we > could keep track of the relative ordering of the properties: `bold` was > on top, so the `:weight` property comes first, then came > `variable-pitch` so its `:family` property comes second and the second > comes afterwards. > > So `bold+variable-pitch+default` could result in a different font than > `variable-pitch+bold+default` even if the combined properties (i.e. the > merged face) are identical. How would you determine the order in the stack? IOW, which attributes will be "the first"? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 03:17:11 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 08:17:11 +0000 Received: from localhost ([127.0.0.1]:55193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3C5f-0005Yu-AW for submit@debbugs.gnu.org; Thu, 08 Dec 2022 03:17:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41116) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3C5a-0005YS-8e for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 03:17:09 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3C5U-0007wG-A3; Thu, 08 Dec 2022 03:17:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=yePbV4ps9xdZ5v075dS0GbVXxyVeJ2Gu2/qyEIzVhhk=; b=fAEOaNVVz5SR XctnqGskwsSGQW49OL2aYH+bnFffshafiG2QnJ6pY2tLRvYpPLmBwyXC0/6rON1DjfKsp5fIA8caU 7TGatW09fefPSuiX1uXma++2tHka4cIv/cDT9xUvddK02ZipgkgrbNc3r+++W/Woasti6O8YdC73X vPQSbOmLFDDGn8gV9XC6wVmOJ+Ni7LkM8zz12fNUZOTWgecXgGKZtCJBy54dXv7Q8X4nlyqbuCS2u pEm2aalhNhWGBaLwQ+AB6PbtHgLnkfGrpzfvhTYYMOeO7gEbZGS62KS4YDemww202BlkDXogJD2tx oClE02NQyRq4dgKasO7c0g==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3C5R-00020E-Q4; Thu, 08 Dec 2022 03:16:59 -0500 Date: Thu, 08 Dec 2022 10:16:48 +0200 Message-Id: <83sfhq2tu7.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Thu, 08 Dec 2022 01:07:25 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Thu, 08 Dec 2022 01:07:25 +0000 > From: Gregory Heytings > cc: Eli Zaretskii , 59347@debbugs.gnu.org > > Do you mean that if a user chooses a font for the default face that has a > single variant (say 'regular'), then the 'bold' face (which does not > specify any family) should be realized with another font which has a bold > variant? And that the 'italic' face should likewise be realized with > another font which has an italic variant? I don't think these situations are possible, at least not all of them, because Emacs will not use a font for the default face if that font doesn't have at least the bold or italic variant. > FWIW, I don't think either of these options are reasonable. You keep saying that, but you don't explain why this must be the truth. A user or a Lisp program can reasonably want an ultra-bold font and consider that more important than keeping the family. You never explained why you thought this to be an unreasonable request. > IMO in the first case the user should just use a font which has more > variants for the default face (there are plenty of excellent fonts), > and in the second case it is fine to approximate the weight with the > weights that are available in the default font. The questions is what should Emacs do in this case, not what the user should do. When I want Emacs to render text in some script, I would naturally prefer _any_ font that is capable of supporting that script, even if it doesn't belong to the family from which the default font is taken. Why should width or slant or weight be treated differently? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 07:53:20 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 12:53:20 +0000 Received: from localhost ([127.0.0.1]:56614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3GOt-0002eF-Uk for submit@debbugs.gnu.org; Thu, 08 Dec 2022 07:53:20 -0500 Received: from heytings.org ([95.142.160.155]:48770) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3GOr-0002e9-MZ for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 07:53:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670503996; bh=2FKJY/Ge3SJwCL0IGEHn5dQ5Pb8y/hq4bIDMPNTMFY4=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=4ovMlVCKpmuvMEU5Q7uEkEr6MgM3DkQ7cqDU41IwxkFGNmI6Pu1Nh/nsi26LoLcuY WhjbCahjUScmA3iRSABK7VvWpJiO8BgX+bIjeNCbxWX5Y9C3dR/uzXIEK0xuzZyrsF S/PRrolhqWfZw7UUMR7n9QTF+s+FgLs8tTcj2RQrsg51IyeE0O07/enNj7O+grkj+k KXuifw2Mq5WudHmHyN5DT8PM/OLZIClgfDGk+WRqUgIvD3C9gdlk1enIbcly1TTxdk H7xknRrbjxxec74a2+m6PLcop900Wxanf8znzcckQUcmB5lmi2c6aax1fFoP4A5DWt 16qQdn97+zbEw== Date: Thu, 08 Dec 2022 12:53:15 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83v8mm2ug7.fsf@gnu.org> Message-ID: References: <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="abtUo9GTLK" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) --abtUo9GTLK Content-Type: text/plain; format=flowed; charset=us-ascii Thanks for your detailed feedback. >> I don't understand your question. If we agree that there is an order >> of importance in the attributes of a font spec, and that the family is >> the most important one, it seems clear to me that keeping the family is >> more important than keeping the weight. What am I missing? > > The order on which we agreed is only about the numerical attributes: > width, height, weight, and slant. I'm asking about the other > attributes, and about their importance relative to the numerical ones. > You seem to say that this order is self-evident, and I'm questioning > that. > Okay, now I see what you mean. It is not self-evident indeed, it is the intended behavior that is visible (or at least that I see) in the existing code, and it seems to me that it is the most natural behavior, because changing the font itself, e.g. from DejaVu to Courier, has more effect / creates more visual diversity than only changing the width/height/weight/slant attributes, and in graphical user interfaces more uniformity is better than more diversity. >> I checked in particular it with the recipes of bug#37473, bug#57555, >> bug#59347 and bug#59371, and with some variants. All seem to work >> correctly. > > What about bug#51768, bug#52493, bug#52888, and the problem reported in > https://lists.gnu.org/archive/html/emacs-devel/2021-12/msg01643.html? > bug#51768: Works as expected here, with '(default ((t (:family "Source Code Pro" :foundry "outline" :slant normal :weight medium :height 90 :width normal)))). bug#52493: Works as expected here, the Inconsolata_dz font is used and rendered correctly. But the original recipe doesn't work anymore (it does not work in Emacs 28 either), it should be :font "Inconsolata_dz" instead of :family "Inconsolata_dz". bug#52888: That bug seems unrelated to the current bug, but I see no difference in behavior between Emacs 28 and Emacs 29 with the patch. problem reported on emacs-devel: The medium weight is selected both for frames that are created by calling emacs and for frames that are created by calling emacsclient. > > Also, did you test Emacs invocation as in "emacs -fn FONT" where FONT is > specified as Fontconfig and XLFD patterns documented in the "Fonts" node > of the Emacs user manual? E.g., what happens if you use the Fontconfig > pattern such as "Sans > Serif-12:weight=black:slant=oblique:width=condensed"? -- does Emacs > start with a font with the expected attributes, both when such a font > which matches exactly exists and when an exact match doesn't exist? > emacs -Q -fn 'Sans Serif-12:slant=oblique:width=condensed' works as expected and behaves like Emacs 28: the font for the default face is a condensed and oblique variable-pitch sans serif font. emacs-28 -Q -fn 'Sans Serif-12:weight=black:slant=oblique:width=condensed' displays the same error in Emacs 28, 29, and 29 with the patch: Font 'Sans Serif-12:weight=black:slant=oblique:width=condensed' is not defined > > As I mentioned earlier, any such change must be controlled by a variable > exposed to Lisp, which could then be used to investigate and perhaps > countermand any regressions it could cause. If you agree to adding such > a variable, I'm okay with installing this on the emacs-29 branch. > Okay, so here is an updated patch. To make it easier to investigate bugs in this area, I think it makes sense to control each field separately, and also to allow unsetting other attributes, which is what the new variable does. --abtUo9GTLK Content-Type: text/x-diff; name=Unset-the-weight-slant-width-in-the-spec-when-realiz.patch Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: attachment; filename=Unset-the-weight-slant-width-in-the-spec-when-realiz.patch RnJvbSA2MGNhZTc5YWMzOGEyODYwNTc5NTMyYmY4NDUwZDhkODE2ODhmMzgw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBUaHUsIDggRGVj IDIwMjIgMTI6NDU6MDYgKzAwMDANClN1YmplY3Q6IFtQQVRDSF0gVW5zZXQg dGhlIHdlaWdodC9zbGFudC93aWR0aCBpbiB0aGUgc3BlYyB3aGVuIHJlYWxp emluZyBhDQogZm9udA0KDQpCZXR3ZWVuIGNvbW1pdHMgYmYwZDNmNzZkYyAo MjAxNCkgYW5kIDZiMWVkMmYyYzkgKDIwMjIpLA0KcmVhbGl6ZV9ndWlfZmFj ZSBjYWxsZWQgZm9udF9sb2FkX2Zvcl9sZmFjZSB3aXRoIGFuIGVtcHR5IG9y DQpwYXJ0bHkgZW1wdGllZCBmb250IHNwZWMsIGkuZS4gaXQgaWdub3JlZCBh IHBhcnQgb2YgaXRzIGF0dHJzDQphcmd1bWVudC4gIFRoZSByYXRpb25hbGUg Z2l2ZW4gaW4gYnVnIzE3OTczLCB3aGljaCBsZWQgdG8NCmJmMGQzZjc2ZGMs IGlzIG5vdCBjbGVhci4gIEhvd2V2ZXIsIDZiMWVkMmYyYzksIHdoaWNoIHBh c3Nlcw0KdGhlIGZ1bGwgZm9udCBzcGVjIHRvIGZvbnRfbG9hZF9mb3JfbGZh Y2UgYW5kDQpmb250X2ZpbmRfZm9yX2xmYWNlLCBsZWFkcyB0byBzdWJvcHRp bWFsIGZvbnQgY2hvaWNlcywgZm9yDQpleGFtcGxlIHdoZW4gdGhlIGZvbnQg Y2hvc2VuIGZvciB0aGUgZGVmYXVsdCBmYWNlIGhhcyBhDQp3ZWlnaHQsIHNs YW50IG9yIHdpZHRoIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBvdGhlcg0K YXZhaWxhYmxlIGZvbnRzIG9uIHRoZSBzeXN0ZW0sIHN1Y2ggYXMgJ21lZGl1 bScgb3IgJ2hlYXZ5Jy4NCg0KSWYgdGhlc2UgYXR0cmlidXRlcyBhcmUgbm90 IHVuc2V0IGhlcmUsIHRoZSBjYWxsIHRvDQpmb250X2xpc3RfZW50aXRpZXMg aW4gZm9udF9maW5kX2Zvcl9sZmFjZSBhcmJpdHJhcmlseSBsaW1pdHMNCnRo ZSBjYW5kaWRhdGUgZm9udCBsaXN0IHRvIHRob3NlIHRoYXQgYXJlIHBlcmZl Y3QgbWF0Y2hlcyBmb3INCnRoZXNlIGF0dHJpYnV0ZXMsIHdoaWNoIG1lYW5z IHRoYXQgdGhlIHNjb3JpbmcgbWVjaGFuaXNtIGlzDQpieXBhc3NlZC4gIE5v dGUgdGhhdCB0aGUgc2l6ZSBhdHRyaWJ1dGUgaW4gc3BlYyBpcyBhbHNvIHVu c2V0LA0KaW4gZm9udF9maW5kX2Zvcl9sZmFjZS4NCg0KQWxzbyBhbGxvdyB1 bnNldHRpbmcgdGhlIG90aGVyIGF0dHJpYnV0ZXMsIGZvciBkZWJ1Z2dpbmcg cHVycG9zZXMuDQoNCiogc3JjL3hmYWNlcy5jIChyZWFsaXplX2d1aV9mYWNl KTogVW5zZXQgdGhlIHdlaWdodCwgc2xhbnQgYW5kDQp3aWR0aCBvZiB0aGUg Zm9udCBzcGVjLiAgRml4ZXMgYnVnIzU3NTU1IGFuZCBidWcjNTkzNDcuDQoo c3ltc19vZl94ZmFjZXMpOiBOZXcgdmFyaWFibGUNCidyZWFsaXplLWd1aS1m YWNlLWlnbm9yZWQtc3BlYy1hdHRyaWJ1dGVzJy4NCi0tLQ0KIHNyYy94ZmFj ZXMuYyB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0NCiAxIGZpbGUgY2hhbmdlZCwgNTMgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL3NyYy94 ZmFjZXMuYyBiL3NyYy94ZmFjZXMuYw0KaW5kZXggZGYwNzgyMjdjOC4uYzMz NTE5Mzk5OSAxMDA2NDQNCi0tLSBhL3NyYy94ZmFjZXMuYw0KKysrIGIvc3Jj L3hmYWNlcy5jDQpAQCAtNjA3MSw4ICs2MDcxLDQyIEBAIHJlYWxpemVfZ3Vp X2ZhY2UgKHN0cnVjdCBmYWNlX2NhY2hlICpjYWNoZSwgTGlzcF9PYmplY3Qg YXR0cnNbTEZBQ0VfVkVDVE9SX1NJWkVdDQogCSAgICBlbWFjc19hYm9ydCAo KTsNCiAJfQ0KICAgICAgIGlmICghIEZPTlRfT0JKRUNUX1AgKGF0dHJzW0xG QUNFX0ZPTlRfSU5ERVhdKSkNCi0JYXR0cnNbTEZBQ0VfRk9OVF9JTkRFWF0N Ci0JICA9IGZvbnRfbG9hZF9mb3JfbGZhY2UgKGYsIGF0dHJzLCBhdHRyc1tM RkFDRV9GT05UX0lOREVYXSk7DQorCXsNCisJICBMaXNwX09iamVjdCBzcGVj ID0gY29weV9mb250X3NwZWMgKGF0dHJzW0xGQUNFX0ZPTlRfSU5ERVhdKTsN CisjZGVmaW5lICAgTUFZQkVfVU5TRVRfQVRUUklCVVRFKEFUVFIpCQkJXA0K KwkgIGlmIChyZWFsaXplX2d1aV9mYWNlX2lnbm9yZWRfc3BlY19hdHRyaWJ1 dGVzCVwNCisJICAgICAgJiAoMSA8PCBGT05UXyMjQVRUUiMjX0lOREVYKSkJ CVwNCisJICAgIEFTRVQgKHNwZWMsIEZPTlRfIyNBVFRSIyNfSU5ERVgsIFFu aWwpOw0KKwkgIC8qIFRoZSBkZWZhdWx0IHZhbHVlIG9mDQorCSAgICAgcmVh bGl6ZV9ndWlfZmFjZV9pZ25vcmVkX3NwZWNfYXR0cmlidXRlcyB1bnNldHMg dGhlDQorCSAgICAgd2VpZ2h0LCBzbGFudCBhbmQgd2lkdGggaW4gc3BlYy4g IFRoZSBiZXN0IHBvc3NpYmxlDQorCSAgICAgdmFsdWVzIGZvciB0aGVzZSBh dHRyaWJ1dGVzIGlzIGRldGVybWluZWQgaW4NCisJICAgICBmb250X2ZpbmRf Zm9yX2xmYWNlLCBjYWxsZWQgYnkgZm9udF9sb2FkX2Zvcl9sZmFjZSwgd2hl bg0KKwkgICAgIHRoZSBjYW5kaWRhdGUgbGlzdCByZXR1cm5lZCBieSBmb250 X2xpc3RfZW50aXRpZXMgaXMNCisJICAgICBzb3J0ZWQgYnkgZm9udF9zZWxl Y3RfZW50aXR5ICh3aGljaCBjYWxscw0KKwkgICAgIGZvbnRfc29ydF9lbnRp dGllcywgd2hpY2ggY2FsbHMgZm9udF9zY29yZSkuICBJZiB0aGVzZQ0KKwkg ICAgIGF0dHJpYnV0ZXMgYXJlIG5vdCB1bnNldCBoZXJlLCB0aGUgY2FuZGlk YXRlIGZvbnQgbGlzdA0KKwkgICAgIHJldHVybmVkIGJ5IGZvbnRfbGlzdF9l bnRpdGllcyBvbmx5IGNvbnRhaW5zIGZvbnRzIHRoYXQNCisJICAgICBhcmUg ZXhhY3QgbWF0Y2hlcyBmb3IgdGhlc2Ugd2VpZ2h0LCBzbGFudCBhbmQgd2lk dGgNCisJICAgICBhdHRyaWJ1dGVzLCB3aGljaCBsZWFkcyB0byBzdWJvcHRp bWFsIG9yIHdyb25nIGZvbnQNCisJICAgICBjaG9pY2VzLiAgU2VlIGJ1ZyM1 OTM0Ny4gICovDQorCSAgTUFZQkVfVU5TRVRfQVRUUklCVVRFIChXRUlHSFQp Ow0KKwkgIE1BWUJFX1VOU0VUX0FUVFJJQlVURSAoU0xBTlQpOw0KKwkgIE1B WUJFX1VOU0VUX0FUVFJJQlVURSAoV0lEVEgpOw0KKwkgIC8qIEFsc28gYWxs b3cgdW5zZXR0aW5nIG90aGVyIGF0dHJpYnV0ZXMgZm9yIGRlYnVnZ2luZw0K KwkgICAgIHB1cnBvc2VzLiAgKi8NCisJICBNQVlCRV9VTlNFVF9BVFRSSUJV VEUgKEZBTUlMWSk7DQorCSAgTUFZQkVfVU5TRVRfQVRUUklCVVRFIChGT1VO RFJZKTsNCisJICBNQVlCRV9VTlNFVF9BVFRSSUJVVEUgKFJFR0lTVFJZKTsN CisJICBNQVlCRV9VTlNFVF9BVFRSSUJVVEUgKEFEU1RZTEUpOw0KKwkgIE1B WUJFX1VOU0VUX0FUVFJJQlVURSAoU0laRSk7DQorCSAgTUFZQkVfVU5TRVRf QVRUUklCVVRFIChEUEkpOw0KKwkgIE1BWUJFX1VOU0VUX0FUVFJJQlVURSAo U1BBQ0lORyk7DQorCSAgTUFZQkVfVU5TRVRfQVRUUklCVVRFIChBVkdXSURU SCk7DQorCSAgTUFZQkVfVU5TRVRfQVRUUklCVVRFIChFWFRSQSk7DQorI3Vu ZGVmICAgIE1BWUJFX1VOU0VUX0FUVFJJQlVURQ0KKwkgIGF0dHJzW0xGQUNF X0ZPTlRfSU5ERVhdID0gZm9udF9sb2FkX2Zvcl9sZmFjZSAoZiwgYXR0cnMs IHNwZWMpOw0KKwl9DQogICAgICAgaWYgKEZPTlRfT0JKRUNUX1AgKGF0dHJz W0xGQUNFX0ZPTlRfSU5ERVhdKSkNCiAJew0KIAkgIGZhY2UtPmZvbnQgPSBY Rk9OVF9PQkpFQ1QgKGF0dHJzW0xGQUNFX0ZPTlRfSU5ERVhdKTsNCkBAIC03 MzYwLDYgKzczOTQsMjMgQEAgc3ltc19vZl94ZmFjZXMgKHZvaWQpDQogY2xl YXIgdGhlIGZhY2UgY2FjaGUsIHNlZSBgY2xlYXItZmFjZS1jYWNoZScuICAq Lyk7DQogICBmYWNlX25lYXJfc2FtZV9jb2xvcl90aHJlc2hvbGQgPSAzMDAw MDsNCiANCisgIERFRlZBUl9JTlQgKCJyZWFsaXplLWd1aS1mYWNlLWlnbm9y ZWQtc3BlYy1hdHRyaWJ1dGVzIiwNCisJICAgICAgcmVhbGl6ZV9ndWlfZmFj ZV9pZ25vcmVkX3NwZWNfYXR0cmlidXRlcywNCisJICAgICAgZG9jOiAvKiBJ Z25vcmVkIGZvbnQtc3BlYyBhdHRyaWJ1dGVzIGluIHJlYWxpemVfZ3VpX2Zh Y2UuDQorDQorVGhlIHZhbHVlIGlzIGFuIGludGVnZXIgbnVtYmVyIGFuZCBy ZXByZXNlbnRzIGEgYml0IG1hc2suDQorVGhlIGF0dHJpYnV0ZSBjb3JyZXNw b25kaW5nIHRvIGVhY2ggYml0IHRoYXQgaXMgc2V0IGlzIGNsZWFyZWQgaW4N CityZWFsaXplX2d1aV9mYWNlLiAgVGhlIGJpdHMgYXJlOiAxID0gOmZvdW5k cnksIDIgPSA6ZmFtaWx5LA0KKzMgPSA6YWRzdHlsZSwgNCA9IDpyZWdpc3Ry eSwgNSA9IDp3ZWlnaHQsIDYgPSA6c2xhbnQsIDcgPSA6d2lkdGgsDQorOCA9 IDpzaXplLCA5ID0gOmRwaSwgMTAgPSA6c3BhY2luZywgMTEgPSA6YXZnd2lk dGgsIDEyID0gZXh0cmENCithdHRyaWJ1dGVzICg6bmFtZSwgOnNjcmlwdCwg OmxhbmcgYW5kIDpvdGYpLg0KKw0KK1RoZXJlIGlzIG5vIHJlYXNvbiB0byBj aGFuZ2UgdGhhdCB2YWx1ZSBleGNlcHQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nl cy4gICovKTsNCisgIHJlYWxpemVfZ3VpX2ZhY2VfaWdub3JlZF9zcGVjX2F0 dHJpYnV0ZXMgPQ0KKyAgICAoMSA8PCBGT05UX1dFSUdIVF9JTkRFWCkgfA0K KyAgICAoMSA8PCBGT05UX1NMQU5UX0lOREVYKSB8DQorICAgICgxIDw8IEZP TlRfV0lEVEhfSU5ERVgpOw0KKw0KICNpZmRlZiBIQVZFX1dJTkRPV19TWVNU RU0NCiAgIGRlZnN1YnIgKCZTYml0bWFwX3NwZWNfcCk7DQogICBkZWZzdWJy ICgmU3hfbGlzdF9mb250cyk7DQotLSANCjIuMzUuMQ0KDQo= --abtUo9GTLK-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:12:48 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 14:12:48 +0000 Received: from localhost ([127.0.0.1]:57023 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Hdo-0003Pn-3W for submit@debbugs.gnu.org; Thu, 08 Dec 2022 09:12:48 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:49486) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Hdm-0003Pf-9F for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 09:12:46 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D7FB61000FB; Thu, 8 Dec 2022 09:12:40 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 4BF5F1000D5; Thu, 8 Dec 2022 09:12:39 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1670508759; bh=Udw0AIuikR/uLa5tupaDHSpLNqT5sD2GDD4AW3jsdro=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=BvB3nLcIG4Oo54YQBRkw3NPtzyV5Sy8n+d1KbPQk19JQ6WFkHQpUcUB0GZLOVkh5j YdDbiTXv3LI2WdDODB34d40ocheKzAgjd/+1+0psvnsoewtj58uKbqFb7jMbGMBdT7 ZE1mpI0oJZskM0/+qcpGtQ5s3vzcwksqEDaFK8E07yk+bYHo/iMrTrYZ9HaDBveTgw 9REVC+2xNRCAsoTQ+xr8m6SHRDaSd8c7kGBqu0JtwTjDen9PCysMqxnI7VYgkUz738 mPHyVhRRUxK2/q6nu1Lw8yrUpFGurFwCESSAQdB2o1Cea6Xz3mGoCZ0y6sy16/4vV/ 4ZDZdq2IN9MUg== Received: from pastel (unknown [45.72.193.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 2412D122626; Thu, 8 Dec 2022 09:12:39 -0500 (EST) From: Stefan Monnier To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Gregory Heytings's message of "Thu, 08 Dec 2022 01:07:25 +0000") Message-ID: References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> Date: Thu, 08 Dec 2022 09:12:38 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.302 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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: -3.3 (---) > Do you mean that if a user chooses a font for the default face that has > a single variant (say 'regular'), then the 'bold' face (which does not > specify any family) should be realized with another font which has a bold > variant? Yes. > And that the 'italic' face should likewise be realized with > another font which has an italic variant? Exactly. > FWIW, I don't think either of these options are reasonable. I can see reasons why some users would consider it not just reasonable but "The Right Thing" in their specific situation. The argument would be as simple as "Which part of `bold` don't you understand?" and would fundamentally be just the same as the argument that we should not use a monospace font when the "sans-serif" family is specified. > Why not. But it is already possible to fine-tune each individual face with > the existing mechanisms, so I'm not sure the added complexity is worth > the price. I'm not sure either, but I think the current discussion around `variable-pitch` is similarly influenced by the fact that that we specified the `:family` (and on top of that the face is called "variable-pitch"), so it's obvious (to us human) that the desired result should not be a monospace font. IOW the context of this discussion implies a bias towards putting more precedence on `:family` but we could restart this discussion replacing "variable-pitch" with "bold" and "family" with "weight" and most of the arguments would hold just as well, just favoring `:weight` this time around :-( In any case, I do support inclusion of your patch on the `emacs-29` branch as "the best solution so far". Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:16:44 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 14:16:44 +0000 Received: from localhost ([127.0.0.1]:57049 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Hhb-0003Sr-UN for submit@debbugs.gnu.org; Thu, 08 Dec 2022 09:16:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59254) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Hha-0003Sk-9J for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 09:16:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3HhU-0001w9-31; Thu, 08 Dec 2022 09:16:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=KeBLjrsMwoUeUe4g61uCvmgm48JGhZPkHFdyuJsWBhw=; b=JMOi0G2Ws3KN mSQ7+dtmjbyO2izaMaFGG09Dqpa5d+OZ4rHOhJwYouK2rgmhtoeEqb45rf4kI0Jbwn5ySjeRH0O46 4PIZKUqBJT+oWI/31adRkXueoW8b7yjAtS54hxJuVxofYJYvTtpN4GQ4JTZQRWt+oBxGJygHr9myt cBZGYoqTEfvDXvvhrlTZJDPaRpHeQyDP8jtNHMAevtKq5t9NA8aF2P6FuNDRfGR+7kVbXrPYuBpiD w3HaSXJv47X/z10hvyD3NVwVTY36Sxc0Ji/BaTI+Db+kJKR7Un5hVF8gACZuLoRd7elv1BntrLC70 oNUHVQMqIVczhQJYZhmMpw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3HhT-0004vy-Hd; Thu, 08 Dec 2022 09:16:35 -0500 Date: Thu, 08 Dec 2022 16:16:25 +0200 Message-Id: <83cz8u2d6u.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Thu, 08 Dec 2022 12:53:15 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <7cc9e03786024fc72f3b@heytings.org> <83a64l65ai.fsf@gnu.org> <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Thu, 08 Dec 2022 12:53:15 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > The order on which we agreed is only about the numerical attributes: > > width, height, weight, and slant. I'm asking about the other > > attributes, and about their importance relative to the numerical ones. > > You seem to say that this order is self-evident, and I'm questioning > > that. > > Okay, now I see what you mean. It is not self-evident indeed, it is the > intended behavior that is visible (or at least that I see) in the existing > code Well, you just explained in so many words why some of the existing code is wrong in your opinion, so arguments based on the existing code are not very convincing... > and it seems to me that it is the most natural behavior, because > changing the font itself, e.g. from DejaVu to Courier, has more effect / > creates more visual diversity than only changing the > width/height/weight/slant attributes, and in graphical user interfaces > more uniformity is better than more diversity. You again seem to implicitly assume that the presence of the family attribute means the caller must have that family or something close to it. But that needs not be the case, and OTOH the presence of some other attribute, like weight, might by the same logic mean that the caller must have that weight no matter the family. > emacs -Q -fn 'Sans Serif-12:slant=oblique:width=condensed' > > works as expected and behaves like Emacs 28: the font for the default face > is a condensed and oblique variable-pitch sans serif font. And the size is indeed 12? > Okay, so here is an updated patch. To make it easier to investigate bugs > in this area, I think it makes sense to control each field separately, and > also to allow unsetting other attributes, which is what the new variable > does. This is fine with me, although I tend to think that unsetting all the attributes is too much. > + DEFVAR_INT ("realize-gui-face-ignored-spec-attributes", > + realize_gui_face_ignored_spec_attributes, > + doc: /* Ignored font-spec attributes in realize_gui_face. > + > +The value is an integer number and represents a bit mask. > +The attribute corresponding to each bit that is set is cleared in > +realize_gui_face. The bits are: 1 = :foundry, 2 = :family, > +3 = :adstyle, 4 = :registry, 5 = :weight, 6 = :slant, 7 = :width, > +8 = :size, 9 = :dpi, 10 = :spacing, 11 = :avgwidth, 12 = extra > +attributes (:name, :script, :lang and :otf). > + > +There is no reason to change that value except for debugging purposes. */); I suggest to describe the default value in the doc string, since gleaning that from a (decimal) value displayed by Emacs by default is not that easy. Maybe also add a sentence which explains why that is the default. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:17:21 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 14:17:21 +0000 Received: from localhost ([127.0.0.1]:57056 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3HiD-0003Te-Ey for submit@debbugs.gnu.org; Thu, 08 Dec 2022 09:17:21 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:54780) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3HiC-0003TX-4l for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 09:17:20 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 8C2D8100123; Thu, 8 Dec 2022 09:17:14 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id DB4E7100084; Thu, 8 Dec 2022 09:17:12 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1670509032; bh=cgr0ltAzX/G2aa2mj2KLYarYrCOVBUamnUYuD2x+VCk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=F9L9WFfo9p71J4RyKff4+34UEOPgeJ+BEe2ZdBVJeQxbtz2RRaI8AMtK8D03VtO4m 7qCSXfjPxW/AYKNx3kEpaMZU+dtCFS3OOUj6Jz9sOBUH9Fp6TqOSbttQXXlR3Pafty 5n8iaOyH8CSZbjA9zv7hGp1Jo4hDbw8b13WPWUsSpmImOn1VNdElwgj3TugH+64C64 vmUPBBngNIxGajhZIPELB+rEVkYcB0MZ5JYuLQXEsh6nx7cnNxghQFyAESXqYaJEj7 90BzdxM9cdBR0655LMqUdTgwnwcOaTjGbxMLq8CBOorY2baQvDlYjOtiqZzA9zpDNW jdVqs2k9ziPzg== Received: from pastel (unknown [45.72.193.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 8E14A120FD8; Thu, 8 Dec 2022 09:17:12 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83tu262u5l.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 08 Dec 2022 10:09:58 +0200") Message-ID: References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83tu262u5l.fsf@gnu.org> Date: Thu, 08 Dec 2022 09:17:12 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.295 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) >> But when I specify the `weight` property of the `bold` face, it's not >> clear at all that the `:family` of the default face should take precedence >> over the `:weight` of the `bold` face. > > If we want to distinguish between explicitly requested attributes and > inherited attributes, we need to store this information inside the > font spec. (We have the :user-spec attribute, but it is used for > slightly different purposes.) Indeed. >> FWIW, I've been running with your patch and I like the result. > > Which patch is that? The one proposed in the message to which you are > responding, or one of the earlier ones? See the hunk below. > How would you determine the order in the stack? IOW, which attributes > will be "the first"? For attributes specified directly in a face the relative order is not specified, but attributes directly specified would come before inherited attributes, and similarly when we merge several faces, attributes from the first face would come before those of later faces. Stefan @@ -3003,6 +3012,10 @@ font_find_for_lface (struct frame *f, Lisp_Object *attrs, Lisp_Object spec, int } ASET (work, FONT_SIZE_INDEX, Qnil); + /* Also ignore the font weight, which when set leads to suboptimal + font choices. See bug#59347. */ + ASET (work, FONT_WEIGHT_INDEX, Qnil); + /* Foundry specification alternatives: from the most specific to the least specific and finally an unspecified one. */ foundry[0] = AREF (work, FONT_FOUNDRY_INDEX); From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:49:40 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 14:49:40 +0000 Received: from localhost ([127.0.0.1]:57210 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IDT-0003kD-Nb for submit@debbugs.gnu.org; Thu, 08 Dec 2022 09:49:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56546) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IDR-0003jv-Mf for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 09:49:38 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3IDL-0003Oh-C3; Thu, 08 Dec 2022 09:49:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=UuSTz65XwLQ4RzU4hVsQTKgR8UX0LGq6l+DVZz9/FPw=; b=gYsIk9/pOwZ/ wr8ZlI1U7s1kxFRlEQUPCh6i42ivBEzt+3/Ga9xwJ4F9MLOJJR2xtf3fa6AQ563ge6DlQRooaCTLX E+5LgUqHlZvmTuXDd4o49Qz2Ev8ZovKT+He+d7tblDRH+6j+YzXk6VxRz8B03v7RlisQR9q5OwBdB s7RbWbKrkDhRKUtw7qUrCj+GgEwHF+fdxBDJRmkc+3TpGjZrz/WktwxkOiOoZe74d0YYiIT1nnhB7 jb/rDSkf763b07N+T9ySQ6v+KnhgSFsTGWhpWqGmGRm8THQxpxsJae9RNrC+fVFYBmIsFHWzGZ88C BGVFxx8CUHcj1NEk8pY1gQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3IDK-0005Gn-CO; Thu, 08 Dec 2022 09:49:30 -0500 Date: Thu, 08 Dec 2022 16:49:21 +0200 Message-Id: <838rji2bny.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Thu, 08 Dec 2022 09:17:12 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83tu262u5l.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: gregory@heytings.org, 59347@debbugs.gnu.org > Date: Thu, 08 Dec 2022 09:17:12 -0500 > > > How would you determine the order in the stack? IOW, which attributes > > will be "the first"? > > For attributes specified directly in a face the relative order is not > specified, but attributes directly specified would come before > inherited attributes, and similarly when we merge several faces, > attributes from the first face would come before those of later faces. I'm not sure this will give correct results, especially in the merge-face case: in many cases the faces being merged are of equal "importance". From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 09:59:30 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 14:59:30 +0000 Received: from localhost ([127.0.0.1]:57272 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IMz-0003pe-Np for submit@debbugs.gnu.org; Thu, 08 Dec 2022 09:59:30 -0500 Received: from heytings.org ([95.142.160.155]:48948) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IMx-0003pY-Is for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 09:59:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670511566; bh=t9Nn5Jw6gV4XekT2K+Il9rurbBoynulwhy/Pp21K19U=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=0+xvzYkIIS7HyPQDz6o3NTx39UZo17cgOftvlpVUYVCW/QXjZ5i/4aLSsFyemlsPq AMPgkfGrPW2V2iaLWDTBIxWYu/tIIdQ6pw8vqBMs97uTJpSTWKmuF86psrIFVYkbDM 2JqbVUiDIkNq+XoGvkuKZy40ExA8Gvk9GzKZUFLlCBZq1T3L1Rd176QFXKh3iJOLES gOKYyP7Lt9UB4CV2xtYqgKW7sn/3Aq0k5b8g/9Gw66Ve6j0sxtjnDARvQvpUZ/6gjz mxzwowd76JR0yEpqqMojAdvK5275xlXLhhOIF4p2ZJLJFn+DMg/m26mM/TNrNfeLtk J6IYighrsxtxA== Date: Thu, 08 Dec 2022 14:59:25 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83sfhq2tu7.fsf@gnu.org> Message-ID: References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83sfhq2tu7.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> Do you mean that if a user chooses a font for the default face that has >> a single variant (say 'regular'), then the 'bold' face (which does not >> specify any family) should be realized with another font which has a >> bold variant? And that the 'italic' face should likewise be realized >> with another font which has an italic variant? > > I don't think these situations are possible, at least not all of them, > because Emacs will not use a font for the default face if that font > doesn't have at least the bold or italic variant. > Hmmm... here at least it does. With Fixedsys500c.ttf in http://www.ler.is.edu.ro/~ema/proiecte/soft/2005/apm/+predesign/fonts/fixedsys500c.zip (which has no variants) and (set-face-attribute 'default nil :font "FixedSysTTF"), the bold, italic and bold-italic faces are identical. >> FWIW, I don't think either of these options are reasonable. > > You keep saying that, but you don't explain why this must be the truth. > A user or a Lisp program can reasonably want an ultra-bold font and > consider that more important than keeping the family. You never > explained why you thought this to be an unreasonable request. > It's only my opinion, indeed. I don't think it's a completely unreasonable request, but it's not what Emacs has been doing so far, and I do think that it's not what Emacs should do by default. It is better to preserve a visual coherence / uniformity. Also note that allowing that would mean that Emacs would need to consider all fonts when realizing a face, instead of what it does now, namely to relax the family/... attributes only when necessary, that is, to consider more fonts only when necessary. And also note that, should a user really want a specific ultra-bold font for a certain face, that is already possible with the existing infrastructure, by making that choice explicit, e.g. (set-face-attribute 'bold nil :font "Desired Font" :weight 'ultra-bold). And it is also possible, with the existing infrastructure, to list the available fonts with given attribute values, e.g. with (list-fonts (font-spec :weight 'ultra-bold)), and to select the best one in that list with an appropriate fourth argument to list-fonts. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:14:05 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 15:14:05 +0000 Received: from localhost ([127.0.0.1]:57345 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Ib7-0003ym-2X for submit@debbugs.gnu.org; Thu, 08 Dec 2022 10:14:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56274) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Ib4-0003yI-U9 for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 10:14:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3Iaz-0002ho-C7; Thu, 08 Dec 2022 10:13:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=A8lqhguMC/MQA7s18r8O+QdUs1ZYnMmy6e+RcPmJQGg=; b=jPqiusxwXQgQ c1sNioAkejOOdaUg1I4MLSgG/CW4ZlY4WUqNSWMLM9FJDd4Nu39U8b9CDuDBL9eOpNKHm7++hqEHh MGJo5NPHo7u2RuKHrFayvO0RCK/4THC84QdcGhhNUEdlh37Rsqgdv48gzO2HoOGmbpG0glaOtVext HGMyDbMFtMRpYh5o4eG3zKyhqfkQjtR0/2gtS8HlC6djUuFav/BWesKJ3yMepebuKyg+mF3J6w/nM s0sN7r0uaWMbrlEfaQW7ulLhmwXpUWheM2gY2B9WfkKFjauSLX+/eOrEBgNh2CcaraYjds1khU3SN rZW+Q/dtf2aTJCFnJThqxQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3Iay-0008Ch-M0; Thu, 08 Dec 2022 10:13:56 -0500 Date: Thu, 08 Dec 2022 17:13:46 +0200 Message-Id: <834ju62aj9.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Thu, 08 Dec 2022 14:59:25 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83sfhq2tu7.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Thu, 08 Dec 2022 14:59:25 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > And also note that, should a user really want a specific ultra-bold font > for a certain face, that is already possible with the existing > infrastructure, by making that choice explicit, e.g. (set-face-attribute > 'bold nil :font "Desired Font" :weight 'ultra-bold). And it is also > possible, with the existing infrastructure, to list the available fonts > with given attribute values, e.g. with (list-fonts (font-spec :weight > 'ultra-bold)), and to select the best one in that list with an appropriate > fourth argument to list-fonts. The use case which bothers me is similar to bug#51768, where users specify certain weight or width because they like the appearance of the resulting font, and expect Emacs to come up with the exact match, not the best approximation. When the family value actually names a font (i.e., it is a very "narrow" family), that should work even if we relax the numerical attributes, but if the family is much more general, like "Sans Serif", the result could be different because we still return whenever we find a first valid "approximation". From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:17:41 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 15:17:41 +0000 Received: from localhost ([127.0.0.1]:57363 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Iea-00040k-PI for submit@debbugs.gnu.org; Thu, 08 Dec 2022 10:17:41 -0500 Received: from heytings.org ([95.142.160.155]:48992) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IeZ-00040e-QE for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 10:17:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670512658; bh=I8YevOe+k6kCZy/jsXJ1pwVWSeefqbum5vYyLOHhUEA=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=bgOv6WpboLaWUHIIiYpKsYgaA1QiPTTKumY79b9rzFdLP2CBkElRNmq0CfwhYyJGz kNWhdAw6SVh1RL1JB/spxQp+qETQpNEGEXsXABTjfxY+oNMlQaeGtyt+wQJXhOmeY1 9IegpQXBi4tkHjkZbbb55ZJmG/4ltSL0bBmyBDkYquEIo4jCxvmcL3EIzcGbgl3W+/ Ne3BMYm+ZbyCSNeeGx6jq2h+FSt9Wm1LDotaqzOQTDIPnlkR2UkJ9obc2zKUhV11A1 QvVXw1WLUVZgujUFQNGeCgvV0tjhFSbdddAjmPOadGP4bGZnq18hYUD8DDBcS7sWYP mJv2C5uSAIW+A== Date: Thu, 08 Dec 2022 15:17:38 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83cz8u2d6u.fsf@gnu.org> Message-ID: References: <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) >> Okay, now I see what you mean. It is not self-evident indeed, it is >> the intended behavior that is visible (or at least that I see) in the >> existing code > > Well, you just explained in so many words why some of the existing code > is wrong in your opinion, so arguments based on the existing code are > not very convincing... > ;-) The fact that there is a bug in the current code doesn't mean that its general structure (and in this case the meaning and intent of font_find_for_lface) is not visible. But I may very well misunderstand that structure, or see things that are in fact not visible. >> emacs -Q -fn 'Sans Serif-12:slant=oblique:width=condensed' >> >> works as expected and behaves like Emacs 28: the font for the default >> face is a condensed and oblique variable-pitch sans serif font. > > And the size is indeed 12? > I think so, yes. The size is different with -10, -11, -12, -13, -14. With -12 on my computer I get the x:-urw-nimbus sans l-regular-i-condensed--32-231-100-100-p-144-iso8859-1 font. > > I suggest to describe the default value in the doc string, since > gleaning that from a (decimal) value displayed by Emacs by default is > not that easy. Maybe also add a sentence which explains why that is the > default. > Okay, I'll do that. Should I post the updated version of the patch before pushing? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:25:08 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 15:25:08 +0000 Received: from localhost ([127.0.0.1]:57399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Ilo-00044v-5d for submit@debbugs.gnu.org; Thu, 08 Dec 2022 10:25:08 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:25290) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Ill-00044T-Ki for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 10:25:06 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 2DBB6100123; Thu, 8 Dec 2022 10:25:00 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 9D7141000EB; Thu, 8 Dec 2022 10:24:58 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1670513098; bh=5XrLPtf2MOOo//VZY8wEetVyh4hZ9iqD5TrC9oY3fjs=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=KjIUgHmPSgKffKfTdcZ7V6BjdU0d3Lobtyvopq2BCgCTrqRDwSiMaQ7xtTMqpG9Up SPaxXLLFDJCpB/t/rsijm9P4DNq1my8WVLkyUEg9cririnFhk8bKArp1yOIObOGwnk gWMpN5tvPvUJnc3WhlYAOYjX1Z3QWBT8MEmUtuRe3vON74CuO7OgAOKaN4JYRomoE4 bJDYWbrU/Ezjaklyww+YuCUw1Lzz2CuyeZPA4ZTM4TVOaqLrJfnJYkeUtXtRJo4Bfe f3ylUxkIiBbFzgaGKI7YZJCBOUyrrPaK/JI5O9wnTRPEw5aK8G0VEWFrVl0ygXLLSr L6kYiEMjLSlGw== Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 5FE72122551; Thu, 8 Dec 2022 10:24:58 -0500 (EST) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <838rji2bny.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 08 Dec 2022 16:49:21 +0200") Message-ID: References: <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83tu262u5l.fsf@gnu.org> <838rji2bny.fsf@gnu.org> Date: Thu, 08 Dec 2022 10:24:50 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.084 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > I'm not sure this will give correct results, FWIW, I'm not sure either. I suspect the only generally-valid answer is to find a way to provide more control (e.g. add a face attribute that specifies some kind of precedence, or tweaks the weights given to various attributes). I'm not sure we need to go there, tho. I think Gregory's patch is "good enough for now". Stean From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:33:52 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 15:33:52 +0000 Received: from localhost ([127.0.0.1]:57444 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IuG-0004AO-4w for submit@debbugs.gnu.org; Thu, 08 Dec 2022 10:33:52 -0500 Received: from heytings.org ([95.142.160.155]:49020) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3IuC-0004AH-VW for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 10:33:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670513627; bh=DdWYekJ5KfDvyZMDF6uTZDqs2n0ph0xL56YDKbWlKQE=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=ZehIiaNfuDa+B9QCIQTBUe0Az9O0gCpZvLbIvN0M/6TUFtbvuE8PRNqj7Nqf+RYjn w/3Q3GRY0hFhTWwo33E8YkEHRs0Z/N3u5G9i9zuuVfLQyKcsUsmVU+AXFobCmGLuhb Pdtm+xIe3HsSqmOBxGDa5fA9svBnSfLJoOVyyoMasDaBO/HB4NLybHMDVOu080HqlQ zk4c1mIriLXuqVrwh7pMqKYgImqBihQQTCY2LBhJnVunNLi2T/q+8EK00cMiYikjUC a31wFPJUZ1mTSmI2ZUo9q5hBC0wpoypf3bBu2gEjax5UEw5Co3ianPEMY5JfpNVPvy F12jnutlKTD/w== Date: Thu, 08 Dec 2022 15:33:47 +0000 From: Gregory Heytings To: Stefan Monnier Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , 59347@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 (-) > > I can see reasons why some users would consider it not just reasonable > but "The Right Thing" in their specific situation. The argument would > be as simple as "Which part of `bold` don't you understand?" and would > fundamentally be just the same as the argument that we should not use a > monospace font when the "sans-serif" family is specified. > This (a user choosing a font for the default face that has no bold and/or italic variant) is really an exceptional case, in fact it wasn't easy to find one to test that case. So I think the answer "The font you have chosen for the default (or variable-pitch, or...) face has no bold (or italic, or...) variant" is more than satisfactory for such exceptional cases, and I think that adding more complexity to an already rather complex code to handle that exceptional case better is not reasonable. Also, I'm pretty sure that with the better solution you suggest, other users would complain and ask "why is Emacs using so many different fonts?". Again, this is just my opinion. Perhaps the most reasonable thing to do here would be to display warnings in such cases. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:42:46 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 15:42:46 +0000 Received: from localhost ([127.0.0.1]:57495 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3J2r-0004FK-PF for submit@debbugs.gnu.org; Thu, 08 Dec 2022 10:42:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37096) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3J2i-0004FD-AT for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 10:42:44 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3J2Y-0001Zc-T5; Thu, 08 Dec 2022 10:42:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TeRiR2wGiA24OdgMmsZeo8EIbnHZasm6JtmB5oZNQU8=; b=dnZEUkP5mUax v8FbaY8gIIyO2ic12k1Yn5aumSX6BrjZR2+ZkOtnTFlxSf6KpI2CxKvwyfbZZ6iUKQSXvD/ev0A94 2+fOFm3xpSo/DxvU/BE8q3Y2B67rDrbWoWNM/r46gRggJ3wBTsJ1F30BadfDtnRUdxl4DxrwiWhuA Z6r6T2b3Dat3a7M+4Fg1+/gctSMOrGHhbzVwoo5i5RWZwmM3rEm8hyvRH4ZnV3el8mB5i+xMx00RU s3LQRle69z5U0NzhI+cGXIbTd33RmGmOW4Vz0DzzoGybqZhUX16e8Ja2+y4AB8X1TFpWeZlztZvzL 1N3Prsi0gKT5veRO0L3XyA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3J2T-0003nw-1u; Thu, 08 Dec 2022 10:42:24 -0500 Date: Thu, 08 Dec 2022 17:42:11 +0200 Message-Id: <831qp93nsc.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Thu, 08 Dec 2022 15:17:38 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <7cc9e0378678a092e6ee@heytings.org> <835yf962q4.fsf@gnu.org> <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Thu, 08 Dec 2022 15:17:38 +0000 > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > I suggest to describe the default value in the doc string, since > > gleaning that from a (decimal) value displayed by Emacs by default is > > not that easy. Maybe also add a sentence which explains why that is the > > default. > > Okay, I'll do that. Should I post the updated version of the patch before > pushing? No need, just go ahead and install. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 10:45:28 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 15:45:28 +0000 Received: from localhost ([127.0.0.1]:57513 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3J5U-0004HP-1l for submit@debbugs.gnu.org; Thu, 08 Dec 2022 10:45:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41144) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3J5S-0004HJ-D5 for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 10:45:26 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3J5N-0006Kq-6K; Thu, 08 Dec 2022 10:45:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=XOETkPTpMWsXh2clrXS8nOhcSHHWb+MYkqal2WaGCn8=; b=fTIixqoMj+Wb 5dXoTyz9zxt4rkkG+S4QCV0LEXrmyiovueqh+vUy1DhSSeHMgnXMZ5scNMdTHlKGiBsirIE23PxzO j4hdgd5jGzxJPWvIUV51aYZd0EUeX+ux/PoGyJNhcTFe9k1m0hrl9RR1dKMNKk9ZA1wwbcnqEPnwn Gz2H/zoDSpdkDfFdtLR/zHGPGjXX++WI5ZSjl7iHZdL4FEvZWcpsCgplCP3HjWDkIuXkEWj1I2Lsr AaaZ9tOrDNvYtswCdQErelAQb4mCZb2vV82CxGdPM6L3vjZjp2lY1Qcln1+66id8NyrniRDY6dVXc fD/lbaH8CbLfa4iULHUYTw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3J5J-00049w-RI; Thu, 08 Dec 2022 10:45:20 -0500 Date: Thu, 08 Dec 2022 17:45:09 +0200 Message-Id: <83wn71292y.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Thu, 08 Dec 2022 10:24:50 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83tu262u5l.fsf@gnu.org> <838rji2bny.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: gregory@heytings.org, 59347@debbugs.gnu.org > Date: Thu, 08 Dec 2022 10:24:50 -0500 > > I think Gregory's patch is "good enough for now". I certainly hope so. We'll see soon enough. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 11:28:02 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 16:28:02 +0000 Received: from localhost ([127.0.0.1]:57751 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Jkg-0006yQ-8v for submit@debbugs.gnu.org; Thu, 08 Dec 2022 11:28:02 -0500 Received: from heytings.org ([95.142.160.155]:49110) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Jke-0006y3-LF for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 11:28:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670516879; bh=YG5hs3cNGTJCUyzdTXOCGhkNzwqysCkFNX6Qa1VkLco=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=vz4bbn77CiVRHXQIqvbf/lSCdQKcQgaPZFE57HJV1SkEebX23dHClsmlNVyvfN2FW A/TH8ybnL7zx8hYq//m3paWWIDwl4vdzEwvfE1KoJDOcLoxcxrwIUDH/wNPwoDuRUR p0hDZHWquAapICxlWW5xWUyusFt7YWAghrGJEAfQ3QEHFS+XRR49LnNLN030nRudRX 1LfESoraPRNqZyPyYwZ+2OeXFgahyWIiVoKJcFGvjPTNP4OHTUdL6DEaixP3uEKRjb Btrf8vmJ6zUCTWd2WcjOCRGa0xojkbp/TDrm1LzFJs249gTfyYcgqzMxZOWmLTW/Cc Y6D06ffOBA/kw== Date: Thu, 08 Dec 2022 16:27:58 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: Message-ID: References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83sfhq2tu7.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: monnier@iro.umontreal.ca, 59347@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 (-) > > And also note that, should a user really want a specific ultra-bold font > for a certain face, that is already possible with the existing > infrastructure, by making that choice explicit, e.g. (set-face-attribute > 'bold nil :font "Desired Font" :weight 'ultra-bold). And it is also > possible, with the existing infrastructure, to list the available fonts > with given attribute values, e.g. with (list-fonts (font-spec :weight > 'ultra-bold)), and to select the best one in that list with an > appropriate fourth argument to list-fonts. > FWIW, here is a macro to do that: (defmacro set-mandatory-face-attribute (face frame &rest args) "Set attributes of FACE on FRAME from ARGS. This function behaves like `set-face-attribute', which see, except that attributes must match exactly, and that all available fonts are considered." `(let ((spec (font-spec ,@args))) (let ((candidates (list-fonts spec ,frame 1 (font-spec :width (face-attribute 'default :width) :size (face-attribute 'default :height) :weight (face-attribute 'default :weight) :slant (face-attribute 'default :slant))))) (if candidates (set-face-attribute ,face ,frame :font (format "%s" (font-get (car candidates) :family)) ,@args) (error "No available font for the specified attributes"))))) From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 12:29:34 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 17:29:34 +0000 Received: from localhost ([127.0.0.1]:58060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3KiE-0001Tv-2f for submit@debbugs.gnu.org; Thu, 08 Dec 2022 12:29:34 -0500 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:63942) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3Ki9-0001Tp-Ur for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 12:29:32 -0500 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B8GDm9R008217; Thu, 8 Dec 2022 17:29:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=+7NU2EKgEC3+bewHHf/KJNkFiMlBfRhFVvbpAdqVn5c=; b=o2B2aPxMAj+rTbC8Ge6WJnLkSdAP67qLxF0E8HgQsgZdrTOgsMxOpd3V430IYtWURdf5 pEmYGQZ0S9s+HCuyqt2M3yM9n5jPlZM/Pj2RiD5mVThlNQ7S2qhzp8IaG4eFtf0xpjei ZZ12iA2mE0QJyej5cIC1k8YReg7hhMyMivt2H6UTEjaneJ8C5lDUvs4bNHpTFKO36ECs V5RwIlUFbPhUwHeG6MjKP4MvM7c1k58BfQ3YvB+GG9d3p0HsLEyJKNMgvHunIcgTpodO u9xlgd0lGmYV2RfybvJqOOcRVkC4+/+NB/uTciZJpEumhsSeem/cjF0ybSXxXkV8Ge+k Pw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mauf8k9y5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 08 Dec 2022 17:29:29 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2B8GmnAo008334; Thu, 8 Dec 2022 17:29:28 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2047.outbound.protection.outlook.com [104.47.73.47]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3maa6124m6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 08 Dec 2022 17:29:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bpXbFFGE5iV31Dr39b2bMQF56bxTdZvtkmbJiHNePT+KGa7OEt0yZagvoCFsfO/SOorDHcg9lNYNAQyQ4K72Znn3d0btPrMb5PnnA5kBe/+6zePM/2ipkZXTaUIgdWH9migPYf6134ij1J7+8BeecdB2m/kjDM4S/Qysv5O0BjmKNBluj5mm/y6u4CEwl9/l+JESTrQYr6J1UU4VzMIgdMJkTtj1/BVElzGMgmFH4ySPjfB3LckodiHEnJILBBL8GI8FiAhCNfjtyqb+bL//OCZiG6mOFYdGZNV9SKZzdGjZXBC+UiZRm2UyASY3bfDdnX1Lxi+1/ZlctVaooOSpQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+7NU2EKgEC3+bewHHf/KJNkFiMlBfRhFVvbpAdqVn5c=; b=V58Z4cvc9sJ0ktsfrUxePtIYc1DxPBxON1NTb63Oh3B3hf8yX2BFDlPcQn4nQo7QwBQHdknWNnb/9DYbSnQ82KLTpqTYWQ00IcMd5mmV/whFcZxf7/08fbWC3/RI1je5Udqxa/KIWVGMI170HNnw82DGjZRNNbY2eASTfeoloya8Ywn0SyXGH216ibcj/IJBdnhrgxqJBXcBZ5XTjR0ZOxSn7r4off5SK+iirxqRcatkQ+DHD7H706eNeIjtu120n/z8A0O7hJ4K8v/63PcvO5m0bG1UhxfjTSMYWxc/tRhRxHfWapKawJ/lDMewuwBY5oqqZBKVrP5w92OsmOAT8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+7NU2EKgEC3+bewHHf/KJNkFiMlBfRhFVvbpAdqVn5c=; b=j3rmrs25h+druxdDN85YCESGd99Kzfb3JFXVFuknZifY5hS9vmjfIOzL8cAFVbi3cTQu5TzdozWT9INg+1kUylB+KOsUjqhtkliBeqxRks1soBGzFA0yEugzl1FN+U1rqC+TUg2T/l/Q2m48JfZSshBzgwr0D3CES+M7yEYLK4Q= Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by IA1PR10MB7310.namprd10.prod.outlook.com (2603:10b6:208:3ff::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Thu, 8 Dec 2022 17:29:26 +0000 Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::176d:3689:aa5b:91b]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::176d:3689:aa5b:91b%2]) with mapi id 15.20.5880.014; Thu, 8 Dec 2022 17:29:26 +0000 From: Drew Adams To: Stefan Monnier , Gregory Heytings Subject: RE: [External] : bug#59347: 29.0.50; `:family` face setting ignored Thread-Topic: [External] : bug#59347: 29.0.50; `:family` face setting ignored Thread-Index: AQHZCw9NbxLOce2BuEG2SOd8Hhe0w65kOesA Date: Thu, 8 Dec 2022 17:29:26 +0000 Message-ID: References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|IA1PR10MB7310:EE_ x-ms-office365-filtering-correlation-id: 3b54b068-49cb-451b-c49b-08dad941c126 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: GdkHFXSORCI1uYJdehfxZSkVGbvWUD/n9dEI8HYU/n0tlXJA1iybQ+eA6mrKaC0oQ3UzBgtGtn2njO3OfTNo1HAaUXYXrB0a6LhvXN3QAX07NVIzksql+zr93SunJPkVA2R7sXbIiDhoXqm6geg7/7ewuIhQJf4W3PsMe+gTUkS0p3EbtuiKxklWPe2j8Cl/HzkAd/EkMDespg5MlBB0vrtIMyiK2HTPLyCjkDy5SbspWkQbXPNGN0XIDAUAxSN5GHbm/NqJZCHmZPT58mCDb/P7b6fYe47YgrPX1B7FQWM3+WQeCrqnCMBBAdyVmj+Xji89NBA75yyTSxVJLz2R5WxdAp9aKaodtE2IQtc5N/KKhBuDhGU8nM0xfQIo3Bm/82FjM7G7XkjFEDd98n6/NmNa0nlluprALmTa2thD40CbNY/I3rEZfYJzFRRL3zshyKQ+zl4AB3XwKjUm5TKBZH6SBnea4J4vG7Wlb61MZygJG64MhjEGxGhHbkWxuIQ26Nhy9wTPcWjHDoDE68MEfAmVHQoBKEnMG4buF6grzs2808VB0ImVY+oV7vPjYzl66mb44gFKSfBHgHkmJ5BD7/iL35huE5cnrF2UAvHhihQ1GADs5RRhelcq6YKj7qLBtqqDyHDOkSmZPq4umvkidbE8u9CEHOm/8D1kVwmeykGY4GbMSIfC5Mzh//I34YGV0EOQRLex5HJCAsFyfEKmAIiy5NFknH79xBs5tHOmeTI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(376002)(136003)(346002)(396003)(366004)(39860400002)(451199015)(186003)(110136005)(26005)(316002)(6506007)(7696005)(122000001)(38100700002)(296002)(33656002)(4326008)(38070700005)(64756008)(44832011)(2906002)(8676002)(478600001)(66899015)(41300700001)(9686003)(76116006)(66946007)(54906003)(5660300002)(66556008)(52536014)(86362001)(66476007)(8936002)(66446008)(71200400001)(55016003)(81973001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?YdqtZ+2QcA5QEvzqoimUpT9mEFWlBLtkmgD6DmjeUyn+M3dIFMa9mD8dWLO3?= =?us-ascii?Q?FK7s46fdO+NAc6R0OQBALXi6KYbNRkFN2WVhHtA3ZgSVoNMWKXIXgL86eGM8?= =?us-ascii?Q?d6K5Uu/MghQR6QJ0oYRi5+g07J+0kNWWb2KKdB22uVtxBdc5+T/p+5xpf6Lu?= =?us-ascii?Q?rPcYkeiAfs4yvWTiH3fzg4hTc0KOscrkchZGmSe3lyEOeftqLJMtUducknXa?= =?us-ascii?Q?X0JizIw1PNq7awrP/zqLuKpxV6aR3VoiqiCA7lKQ8Wp0+hsU0fCpKBUXykPl?= =?us-ascii?Q?6yUvxhUf8RUvGYyBKo5+VYq7l7lwpU4Ah9Cj4lqagqwS3xpgbwgXRLdTNW9D?= =?us-ascii?Q?NJaf0junLpKYQlfDLYugK0SMbq0mXiRI0YW8qTD+n97tOk4BM87IEDSWn15a?= =?us-ascii?Q?Hn3lqSme8+0kroMk+/WFgVWIY+k/Mrlq50wQLMJLCuqSrLgGelFTNF0MGqQ1?= =?us-ascii?Q?g1wxT26DptsC/gFBAcmeRkkHoiB0GAmT2B7SyS5vdLSTqwMbVDImFKUVe1Kl?= =?us-ascii?Q?mQN85sIjsySuAMpGrH1q7UZrPvcT68HUmAuKv98jvD9PqR7jXw5LKUYUEkI2?= =?us-ascii?Q?VLjqevWgDCLaIii6vGuPcKJoCaVYFjkv5KyvFQ0hyLONfx2WIWsB5S8y91W6?= =?us-ascii?Q?3EtMnLj+mSryS6IxfLpiS7blCt2z6x+bHwslZYNzCwkC4I+P0RZ6TcQdbeuH?= =?us-ascii?Q?NL+2sEFNiQ4HY0pZps4z3GzfC65bdDSSwkrlxSt0mS2XhhUIZPeZM8NBApu9?= =?us-ascii?Q?rKCQ5SRyyUXQdA+sTsjHmRc0xoNJ9SIa6K5IA+b6hhT7T/dIqIF0AJ6LqeUW?= =?us-ascii?Q?P/o9Fl++TvbdQ8IAIsaaheRFsAWkHuQJGScRK46+D2eExsdxDHls1qvusAKE?= =?us-ascii?Q?Q+UzvDdDl22F3ir4GE5Vi8sNJ0NYbTlCRQqTySP9bXM2O/kfX0EAuWkYRfvG?= =?us-ascii?Q?KH1j/KNL9foMmj3Lyq4wDOPKNlvXwbWf0T1fUdSYiqHcHH0yT7+qqX//WsCT?= =?us-ascii?Q?leafDBspWtDVGRFLIl/VhKJGyNWTYjXw8GPkgpX4YnU9Sc9lhAthPP3w2hZ9?= =?us-ascii?Q?UBxIpH5Lnl0Jf6JTDM2IRbIGxjri5KoZn5vQm8DSuaBWNAw7y6ijiHV9oGjX?= =?us-ascii?Q?+NbSQqFto8W7r4qU98TsUsAC2E+A+oqMbeDSs6s/c5cx2cncDdonWhzKZS0h?= =?us-ascii?Q?tHsdmz1zfe4lPIJNXbsaAs4+Vt2pnm2sUexsXNAQ5PmuvLKDJ1w8w0OoOEeF?= =?us-ascii?Q?KKONLsAkr+acESa79cnHCAZ0ExZyZgOJ9MvaUQ4zGTsy2RKfo0w4tKP8MXUd?= =?us-ascii?Q?bg0ajiTINTVDvDavKaoarfgthDhXROGQ17Ak/1zCDuVb8IFLulXDc+Zc6XdM?= =?us-ascii?Q?ICDyQ9I4PPHNr1ZIhxFKsOiDymnGTwgHE1vgIUj2rtZquXt5jFKK9J1btcyt?= =?us-ascii?Q?gWlzsdQDoFJM+ORF53VOSWqmLBjM5MBuVgwJcbiE6kZNebI6XK9J5/CT0Vwd?= =?us-ascii?Q?pUBj2oMyY/c+4fIoa8hRlNzVwgYA9dXy69iMiN28hnKpnlVoUIA/QiHKWn+6?= =?us-ascii?Q?A4M1HCIWIaEYx/pXFMHOm0DyDDjLdEl8oc+rp2+m?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b54b068-49cb-451b-c49b-08dad941c126 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2022 17:29:26.2835 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 3+3j0a63LIDcOP2hoVaOpDUnHdYjFR1kI5klya73vH+20j0nf9gvg5PhnfTV0ZgTZPo2sLqXN9UjJuypIB+FaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7310 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-08_11,2022-12-08_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=953 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 mlxscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212080146 X-Proofpoint-ORIG-GUID: I84PC9iqpZv8vOLddGkheVTrFqR71_KP X-Proofpoint-GUID: I84PC9iqpZv8vOLddGkheVTrFqR71_KP X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , "59347@debbugs.gnu.org" <59347@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.7 (-) (Mille excuses - not following this thread. Ignore if irrelevant.) Does some of the "problem" figuring out what to do here perhaps come from the (misguided?) decision to name some faces (basic/common ones, no less) after particular face/font attributes, such as "bold"? Is it a good idea to have such faces? Maybe that's considered unavoidable, as these are so basic/common that their names can't really be based on any particular _use_ of the face? We could have an `emphasis' face, but face `italic' is apparently meant to really express/~hard-code "italic" appearance instead. Nevertheless, isn't this perhaps at the root of the problem - trying to decide how to deal with a face whose name shouts "bold" or "fixed pitch"? We've only got a few such appearance-name faces. We don't have a face called "ten-point", for instance. Do we really need/want to have _any_ such faces? (Abstracting from an already-sailed argument.) If such faces were named neutrally (e.g. `foo') would there still be a problem/discussion here? ____ As for grouping into families: is the intention to hard-code such groups or let users/code do the grouping? Is Stefan's idea to give users and code some control over this? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 08 12:45:13 2022 Received: (at 59347) by debbugs.gnu.org; 8 Dec 2022 17:45:13 +0000 Received: from localhost ([127.0.0.1]:58133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3KxN-0001eO-3i for submit@debbugs.gnu.org; Thu, 08 Dec 2022 12:45:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:52464) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p3KxG-0001dr-T5 for 59347@debbugs.gnu.org; Thu, 08 Dec 2022 12:45:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3KxB-0000Iu-2K; Thu, 08 Dec 2022 12:45:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=2yODdvu0lD4nrmfxMrjLECosw+Z1ORGtFcOvMU6YI3U=; b=sQHl2+kbKCsb ZuT5TWkY6xVE0n9OvXLy18U42H2eC17n87/xY7xw3V7K19IgvHZuE31dKGSm2lq1cvbL6ZyDXkGIZ 9vjIjLKYf4Ng4uXZrZjtA3oYJ0Gul8wGxuaDQnaZQbHFceJPC/Vusz7CbT8wwMxaITAblZJZG75WO CgslyTUJz/Qnuv8ZgWNfH/uAzcLxjsstNgf0EdacLMlUPAPKInayg9A+KcFzhAPYYj8Nj8zxXtflR ln7b9r29TCaBd25T9AIGVlQQhEenVn8O7kFc8Umn1i0CqeImciWOeFicianFD7bAElLOnPLqJSNyb 4tpJB3WDVOnXkR9y+0pMow==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p3KxA-0005f5-Ij; Thu, 08 Dec 2022 12:45:00 -0500 Date: Thu, 08 Dec 2022 19:44:51 +0200 Message-Id: <83pmct23jg.fsf@gnu.org> From: Eli Zaretskii To: Drew Adams In-Reply-To: (message from Drew Adams on Thu, 8 Dec 2022 17:29:26 +0000) Subject: Re: [External] : bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > From: Drew Adams > CC: Eli Zaretskii , > "59347@debbugs.gnu.org" > <59347@debbugs.gnu.org> > Date: Thu, 8 Dec 2022 17:29:26 +0000 > > Does some of the "problem" figuring out what to > do here perhaps come from the (misguided?) > decision to name some faces (basic/common ones, > no less) after particular face/font attributes, > such as "bold"? No, that's completely unrelated. > Nevertheless, isn't this perhaps at the root of > the problem - trying to decide how to deal with > a face whose name shouts "bold" or "fixed pitch"? fixed-pitch is not a face attribute, so there's no problem whatsoever to have a face by that name (assuming its font is specified accordingly). > Do we really need/want to have _any_ such faces? It's convenient, because such a name speaks about itself. In addition, popular font-handling systems that Emacs supports have such broad "families" of fonts defined, whether we want that or not. For example, "Monospace". From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 10 17:51:17 2022 Received: (at 59347-done) by debbugs.gnu.org; 10 Dec 2022 22:51:17 +0000 Received: from localhost ([127.0.0.1]:45578 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p48gf-00018C-3g for submit@debbugs.gnu.org; Sat, 10 Dec 2022 17:51:17 -0500 Received: from heytings.org ([95.142.160.155]:52434) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p48gd-000186-RI for 59347-done@debbugs.gnu.org; Sat, 10 Dec 2022 17:51:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670712674; bh=gL2KGceZZmPl49wPiDhPzAMYzSS0i89ghrlWjxpq7E0=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=tnWuJidYA8qhxx8RfKpISVd0CW0sBxnLeDG6KgAvtuXa5BuFgT5Ci0jtz0qj6XDjU +WARuy+HzJ5W3xGJECr61BpYrCSfJnYLps7cWLFIwJTeV1P2MUounlymYyzKOqqiv2 FeoyoOqtvZFjkkGAwMW2evDGG2CRzNN0H1jK12pR3fMkm1I3GLaqlNM137mpH+X61Y 2xNFm9EpF8inWKtFbnXRRJtfWJcHSR7pOG7lbw1hHZI+TthQdv/nDnrRd1CeDg2ywK w876TdnrFfyRluNZ2GkffZDv9TylCgJnFiVwK1dQdZ1WHpvzzcOzFy4gZek28tgWiK YdOQNoZzT74cw== Date: Sat, 10 Dec 2022 22:51:13 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <831qp93nsc.fsf@gnu.org> Message-ID: <1a7e3acf3578520feda7@heytings.org> References: <7cc9e03786754c9e0aaf@heytings.org> <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347-done Cc: monnier@iro.umontreal.ca, 59347-done@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 (-) > > No need, just go ahead and install. > Now done (30e3cb2135), and closing this bug. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 11 19:58:09 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 00:58:09 +0000 Received: from localhost ([127.0.0.1]:49231 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4X8y-0005Rp-Ru for submit@debbugs.gnu.org; Sun, 11 Dec 2022 19:58:09 -0500 Received: from heytings.org ([95.142.160.155]:53960) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4X8i-0005RR-Lg for 59347@debbugs.gnu.org; Sun, 11 Dec 2022 19:58:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670806670; bh=B+HHlIL7hslzjV7JF9e46vw1kvvG2YR2FLhe4pOjuUM=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=eCvUvQqBTR9kxNeJXUIABXhSznuFb8K1bVPimN7FrK8H4CzxZqVRI+S5rlovL5fGs UokxLxdOVF5NxzgpIWeqnN+2j/Uf/8QdcLiL8mCfnP1yOKmURi21gjBe9IbSjkuARx EPxzcKr6GVm47ol8oQFTVq2Zs7Sm7c2d4KgqnzRHn8omY0dEb/ET1EfvRZJKB4nLxU QBrBHp79Tg15nc0/VU4l8fKnL0SrnyXdTwuqAK4sdpu4LFqqGXGI+hLQ8pmpSX2nGd C/vF3XnoHHEn3mIPi/bx6hwO3t2keW1oQVC33tK+FyFpyWBVUEwcicvqPT+YXTwhg+ 8UPMEbcMnnBGQ== Date: Mon, 12 Dec 2022 00:57:49 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <1a7e3acf3578520feda7@heytings.org> Message-ID: References: <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Po Lu , monnier@iro.umontreal.ca, 59347@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 (-) Amazing. I thought this exhausting discussion was over, but no, Po Lu came and "improved" the code that was agreed upon only a couple of hours after it was pushed, disregarding this entire discussion, the docstring of the variable that the commit introduced, the commit message, and without asking any questions. How can that be right, how can that be acceptable? Po Lu's commit said "there is no reason any user should have to think about bitmasks" even though the docstring said "there is no reason to change that value except for debugging purposes." (Of course, that sentence was also removed from the "improved" version of the docstring.) It is on purpose that that variable was a bitmask and not a list, it is on purpose that that variable was used in a macro and not in a function: there is no reason that each face realization in each Emacs instance should spend unnecessary CPU cycles (a function call and traversing a list) on a variable that should never (or hardly ever) be changed, and that was introduced only to help debugging other potential problems in that subtle area of Emacs' code. The name of the variable was changed, and the docstring was "improved", and became completely wrong. It is simply untrue that this is a list of attributes that Emacs will "ignore when realizing a face", or in fact that this changes anything fundamental in the way Emacs realizes faces. Here is again, in every possible detail, but this time in a single post, the analysis of this subtle bug, and the rationale of the patch that was agreed upon. I explain this bug with an concrete example, with the 'variable-pitch' face and a font with a 'medium' weight. That example is only meant to illustrate the bug: the same reasoning applies for other faces and other font attributes (slant or width). (1) The first (and perhaps most important) thing to note is that, before or after this bug fix, (set-face-attribute 'variable-pitch nil :weight 'medium) does _not_ change the font that is used for the 'variable-pitch' face, unless the font that Emacs would have selected for the 'variable-pitch' face without that call to set-face-attribute happens too have a 'medium' variant. Fonts with an explicit 'medium' variant are rare, so most likely (that is, on most computers) after this call to set-face-attribute, the weight of the font for the 'variable-pitch' face will still be 'regular' (or 'normal'). IOW, when the weight/slant/width attribute of a face is set, Emacs tries to find a good match among the available fonts, and does not consider (and never considered) these attributes as strict requirements, _even if they are explicitly specified in the face itself_. Clearly, that should remain the case when these attributes are _unspecified_ in a face. (2) Now suppose that a user has, in their init file, the following line: (set-face-attribute 'default nil :font "Source Code Pro" :weight 'medium) That "Source Code Pro" font has more variants than most fonts, and in particular it has a variant with a 'medium' weight, which is slightly thicker than the 'regular' weight (the difference is probably only visible on HiDPI screens). That apparently anecdotal detail is important: it implies that the weight of the default face is set to 'medium' (see below). The 'variable-pitch' face is defined as follows in emacs -Q: Family: Sans Serif Foundry: unspecified Width: unspecified Height: unspecified Weight: unspecified Slant: unspecified Note that, apart from the family, all other attributes are unspecified in that face (which means implicitly that it should be similar, with respect to its width/height/weight/slant, to the default face). What happens when a buffer with a text with the 'variable-pitch' face is displayed is this: (2.1) face_at_buffer_position is called, and finds (with Fget_text_property) that the face is 'variable-pitch'. A few lines below, the following code: /* Begin with attributes from the default face. */ memcpy (attrs, default_face->lface, sizeof(attrs)); copies the attributes of the default face into the Lisp_Object attrs. The last statement of that function is: return lookup_face (f, attrs); which means that lookup_face is called with 'attrs' set the attributes of the default face, merged with the attributes of the 'variable-pitch' face which are, except for the family, unspecified. At that point, 'attrs' also contains, in its 'font' slot, a font-spec corresponding to the default face. Therefore lookup_face is called with attrs[weight] = 'medium' and attrs[font][weight] = 'medium'. (Note that we now have _two_ copies of the same information ("the weight of the default face is 'medium'") in the same Lisp_Object.) (2.2) lookup_face calls realize_face without changing its 'attr' parameter, which means that it calls realize_face with attr[weight] = 'medium' and attrs[font][weight] = 'medium'. (2.3) realize_face calls realize_gui_face without changing its 'attrs' parameter, which means that it calls realize_gui_face with attrs[weight] = 'medium' and attrs[font][weight] = 'medium'. (2.4) In realize_gui_face, the conditional 'if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))' is taken, because the 'font' slot of 'attrs' contains a font-spec, not a font object (see 2.1). (2.5) realize_gui_face calls copy_font_spec, which copies the font-spec from the 'font' slot of 'attrs' into the Lisp_Object 'spec'. Therefore spec[weight] = 'medium'. I'm explaining the bug, so for now I suppose that the code that unsets weight in 'spec' isn't present. (2.6) realize_gui_face calls font_load_for_lface, with 'attrs' (in which attrs[weight] = 'medium' and attrs[font][weight] = 'medium'), and with 'spec' (in which spec[weight] = 'medium'). (Yes, there are now _three_ copies of the same information.) (2.7) font_load_for_lface calls font_find_for_lface, with 'attrs' and 'spec' unmodified. Therefore attrs[weight] = 'medium', attrs[font][weight] = 'medium', and spec[weight] = 'medium'. (2.8) font_find_for_lface calls copy_font_spec, and puts a copy of the font-spec 'spec' into the Lisp_Object 'work'. The weight slot of 'work' is not modified in font_find_for_lface. (2.9) font_find_for_lface calls (in the final loop) font_list_entities with 'work'. Therefore font_list_entities is called with work[weight] = 'medium'. And, given that the 'variable-pitch' face is being realized, we also have work[family] = Sans Serif. (2.10) font_list_entities checks the weight slot of its 'spec' parameter, it is set to 'medium', therefore need_filtering is set to true. font_list_entities also populates the Lisp_Object 'scratch_font_spec' with some of the attributes coming from its 'spec' parameter, in particular the family. Note also that the weight slot of 'scratch_font_spec' is set to nil. Therefore the 'list' function of the font driver is called with scratch_font_spec[family] = Sans Serif and scratch_font_spec[weight] = nil. This returns a list of candidate fonts from the Sans Serif family, of any weight (given that scratch_font_spec[weight] = nil). (2.11) needs_filtering is true, therefore font_delete_unmatched is called with 'spec' (remember that spec[weight] = 'medium'). This removes all fonts, from the list returned by the 'list' function, that do not have an explicit 'medium' variant. As noted above, fonts with a 'medium' variant are comparatively rare. On computers on which there are no fonts in the Sans Serif family with an explicit 'medium' variant, font_delete_unmatch returns an _empty_ list. Therefore font_list_entities returns an _empty_ list, even if there are fonts on the computer with a weight that is close to the 'medium' weight, such as a 'regular' weight (see weight_table). (2.12) Therefore, in font_find_for_lface, the call to font_select_entity, which is supposed to "select the best match for PIXEL_SIZE and attributes in ATTRS if there are several candidates", is bypassed. Remember that attrs[weight] = 'medium', so if font_list_entities had for example returned a list with one or more fonts in the Sans Serif family with a 'regular' weight, one of them would have been selected as the best match, because attrs[weight] = 'medium'. (2.13) The fact that attrs[weight] = 'medium' (and attrs[font][weight] = 'medium') in font_find_for_lface shows clearly that the 'medium' weight is not at all "ignored" by Emacs when realizing the 'variable-pitch' face. It is (or rather, should be) used to find a font that is similar, with respect to its width/height/weight/slant, to the font of the default face. Note that this is exactly what happens in case (1) above: when the weight of the font of the default face is not 'medium', setting the weight of the 'variable-pitch' face to 'medium' does _not_ change the font of the 'variable-pitch' face, instead Emacs selects the best possible match among the available fonts. (2.14) Therefore font_find_for_lface tries to relax the family/foundry/registry/adstyle attributes in 'work', until it finds a font with a weight = 'medium'. All other fonts are rejected, which is clearly wrong: the 'variable-pitch' face that is being realized does _not_ specify any weight. It is only a coincidence that the 'default' face has a 'medium' variant, and that none of the available fonts in the Sans Serif family have a 'medium' variant. (2.15) In the case that triggered this bug, a font that is not in the Sans Serif family but that happens to have a 'medium' variant is selected by Emacs, such as a non-antialiased font, or a monospace font. In the worst of the worst cases, even after trying to relax all family/foundry/registry/adstyle attributes, no fonts with a 'medium' variant has been found, and the 'variable-pitch' face becomes identical to the default face. With the bug fix, in (2.5), spec[weight] is set to nil. Therefore in (2.10), need_filtering remains false, in (2.11) font_delete_unmatch is not called and font_list_entities does not return an empty list, but instead returns (as it should) a list of candidate fonts in the Sans Serif family, and in (2.12) font_select_entity does the job it is supposed to do, and selects the best candidate among those fonts and selects the font that is as close as possible to attrs[weight] = 'medium'. Which is again exactly what happens in case (1) above, when the height of the default face does not happen to be 'medium'. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 11 20:49:46 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 01:49:46 +0000 Received: from localhost ([127.0.0.1]:49447 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4Xww-0005uj-1z for submit@debbugs.gnu.org; Sun, 11 Dec 2022 20:49:46 -0500 Received: from sonic305-22.consmr.mail.ne1.yahoo.com ([66.163.185.148]:36856) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4Xwu-0005ud-Nb for 59347@debbugs.gnu.org; Sun, 11 Dec 2022 20:49:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670809777; bh=h5fdobi7YBSwVe2y6wTCf+7+L1+F0lC1Ve0n6jrEmBE=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=tqGyMIx8HNv1G987rBkfB9cWJPBGiXZh3tywxG9CzF0k/sgUrAl+8IIV0hXofs7/S7ynslT/RQqyphcsy+UARWIHihsOWWjDOXl6Z382AWndJgPJcyh5UibpHUiOUlGyzBtbRnaL8mgzRztCisazaVDluFu83vRbzdcxm1nf9AAVazxOZU9cYImxpUltna0O0LMMXMTSM9Xl8aipHsYOBTyVUGt6aO6s8fhsWUCb1neTt3S7NjKfPRdZRA2X09iwIKJlWOAp0O8SeFv1nJkJFEdrSDuD9IHEYIg/cycrF/ivpR0JNrZb1PAD95UBdavJZTKQDWU/uWtw8fxIa28bMQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670809777; bh=npw6GW/gADWmJwWOTVTIX/ThFK2tityHBhm59KlgGQZ=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=FlIT77xH365mwuBIbKVfLh+nj0opArXjnKCzSzoaFFDYbSITe1ShypQF6k74y9QZgusD0jY10uN5X5z8rbmUm7EZGCMsiAbTKjLS34IisxWNcsMXBgpEX2BsYr+7OziXrhhubCl3XgYzxGmopTgCBiO1L6+S7WD+Isb0FYO+KPbhePw2otCMSOlXkAFDVvk54o3oE9qRyAuDdJ3rPIhkFyB5RppmH0UONCRNnxzuuNzBfekw8vGz5IvIPGqOwWMUO2Sdesdw/3vDohF62u6EsoVMyjHGe7VcG6DXKmPcI+j1knCLhlgqYXkeivoktVtPi/7q5AG+fhA1CA3f625TCQ== X-YMail-OSG: jAFxQCQVM1k4LEwszdFYbIJgBoKByHVRLrLhXfPJkWOiB1d.Nl3FaUSRebCiqoz hFbAUqNglBm8fEqgL247_.c3eT20.12.Ee5TjRu1TDWi0fTsY44HqW3dkvTw0sjeoniP3moICBoc poNI5sru4UdysOxSYk2XRKJ0nD2PV2p7tse4dzU8F8Sn6.ekNzrKQV76.QyYRmK7SmcAcoZJubwG DVGzvpJK_LCs.LHGPyNNQcnJVxFkDnTM.qQfmbneCqyeV3yoTIy3rNVjX4kR6tYnzoDggMOt_dAf SvcLNV_1iFVntvqxuIc1EAMKX3.e4PO2Qzp8tkVYRmsTTxHpCOCf25sJNx8zDOR2bRY6cZwlbELs dm.eihC831lSaiY95PL88I0oO_.U3EUnhtfBsJW8.6kV_IypEEHmW5tuSBWeKJz4u6YVQWI.svQ9 6JsZF8GZyEp8C5VcaaGa9Mst_rhxJ8aYtgL.eixDm86KWTuIqKMkLbcvakm.CnhoSRhh846ap.il D7uuLV63_e2hdMczErr47T8O9vg7hPKrAk_KEuXGdf2fKyzkza7prxUU1IvZWqHE54Zx9TEKzYuH WUgisErPyADCNEnZRHs6rgpjQUtAZmGNBMQQrBym.uZQNHqZOzJVTTmE6hvALMP9ByyKE6huyCxw 6NgamYdTUsD0VwtUXiIn5_VvLFdLgrKKYBKaeFd_rDbtZMqizPNEfYoeTAZnqDWzZg2FWkNocnFI sO6ZTky4HgNzuNT7HsL8swVykGDQeHtThAbekXiAq3KFp.zA6kd7GifTpTXeGPz.3xB4Dwlcv1kn JU.tEiP86JtIKy.eH617eHGl38DrXepCC4F3V.wz2lxijFrydGd7qbinXHpb.flAD_WSKXTXjiST S5fjL41sjmZ18oaNUdS.GLIKD6AHuHvu7Bf6AzComjxbrEG8aerTnA28sNupEyXgGW_WTtmVUEeK wQ6MfTn2pralNAMPrvEbOT0v05usXHUrJlDizMaH1pgE7o6vu1eSQOnAUkQcTo68wPt6PTgc5rq_ AbqGImUwbDbQf85NF_h4GgQK9Lqpy.CByfiMAOoI0.ZvAEuB.Qa2kFdv4w1m82EVCF9PM3lXz70T _3Id2vIw3e3e.4LsMPzHl1yZrzo6vFv0c2NBxIjWnHdDyyWonOza6frvNs.7BPgsZJ7Kd4_eGY62 hKgSWALqsqPgaqaJFCHHZjhc40GZ_MmQQGtK6kMwNdm1gOFozx_xpGMNwR7XhdriqZihK1J9pUVe 6.KCokL7GvedHUC_c..hr4PQbO4u06x26h81udZQgn606VnKxkLlyoGXk0PVh8Olepbnsi7ss.ej RDOBATT6eO8_CENRCyF.DK2BeD3oXR5Qe.4rWBdpZDRLpCYpueuUQZcvzD.DKkQM342QXS2n.13Y fQynOEnHRTWR_9AOb2vJyCiPgFUGASxbeCGuBVE0PT.VDYCD8OCEeCy5kDw_tJNU6naVddWkVony 69l7T3vGXfiEkHhGrw3UqkNEnFB1988cKyQQDeMK8dGDdDblzzWux3DHtY4GbB9IBpAuaTCGHSAi PH7v3gUGyg1SI2Ej7xyqax5u32Me_uK605nvgZ3KXXGyOf72wmnasY1BT8K0aRod48vsYd17ughF oqFJwJDt3Q73XW6KZOGqBXYKwJjTI6xbXVhxzICZttdCDqIqIgC7lMUleBXNXL8YD1oeS.shpUTE AP.fJkb5hlqaFGHlVBO9Kp4gVYcu04y986zOShtzTDqI18UaSgs3J1k.VfnXyKRcPAeQekUtlTpF CInhlnqSS5z6mMVJ_R1A8CHtgg8N6xb8KRSEIGgpoCmjqq.PZ0GExcX1RL3JELpbK9lUT2Xp7c62 8AYET7SfxQmdX.YY6xPesiQ.M.YqRo0djJdzf5mF7BlElFQ2sVukuHBUfOlQbXrQswY_qulfrKf9 yXAwLZpqkQQqQu4rfoL9d3lyKQbGqNtp.DzSp1O8kvT8MGa2dPs.PJ_POfnJJjaM95zvwMIatTqC rBDnCCJRAZTSU97wazjQgHDCww0tIIKLDZnDhtZNzEa8bD9XWykkcZi0niZ6rqAN6zXZCkEmdI8q lN5fBz9zq0aVU6tfIC0HvTDLLIUVEJn9YwiuY7id2BAgJHvfcrseJ4n7k4zyflO5FUusAl4I7cvW Z81O1TDmomuYkJGW9uelPDT5RVV7pQmw96ot9xINvZr9BnfyGiC9MHHQ0.sptkYOlg8iaFxfXRs3 nJMMYcInuzBYHZOfMOt84RsWwiztZKq78biMDpVzMEnHmHhqIaK8zWUWVwnK8Aw-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic305.consmr.mail.ne1.yahoo.com with HTTP; Mon, 12 Dec 2022 01:49:37 +0000 Received: by hermes--production-sg3-b666c6484-prndz (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 7f74274640c7619e5ab9515455c38369; Mon, 12 Dec 2022 01:49:34 +0000 (UTC) From: Po Lu To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Gregory Heytings's message of "Mon, 12 Dec 2022 00:57:49 +0000") References: <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> Date: Mon, 12 Dec 2022 09:49:28 +0800 Message-ID: <87ilihjsrb.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20926 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 3457 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) Gregory Heytings writes: > Amazing. I thought this exhausting discussion was over, but no, Po Lu > came and "improved" the code that was agreed upon only a couple of > hours after it was pushed, disregarding this entire discussion, the > docstring of the variable that the commit introduced, the commit > message, and without asking any questions. How can that be right, how > can that be acceptable? I did not change the behavior of that commit at all. That can hardly be called ``disregarding this entire discussion''. > Po Lu's commit said "there is no reason any user should have to think > about bitmasks" even though the docstring said "there is no reason to > change that value except for debugging purposes." (Of course, that > sentence was also removed from the "improved" version of the > docstring.) So are you saying that users are not supposed to debug Emacs? Then let's stop distributing etc/DEBUG, to save cycles when unpacking Emacs! While we're at it, let's also strip Emacs binaries by default. > It is on purpose that that variable was a bitmask and not > a list, it is on purpose that that variable was used in a macro and > not in a function: there is no reason that each face realization in > each Emacs instance should spend unnecessary CPU cycles (a function > call and traversing a list) on a variable that should never (or hardly > ever) be changed, and that was introduced only to help debugging other > potential problems in that subtle area of Emacs' code. And what was the problem with a list? How many cycles is traversing a list? How many time will it take for your CPU to perform everything? Premature optimization is the root of all evil. If you think that is likely to lead to a real performance problem, then you're more or less 60 years out of touch with the performance of modern computer technology. So, please, demonstrate that searching for a symbol through a list with 3 elements leads to a performance problem. Can you find any other ``debug variable'' that is a bitmask? What if we add different font spec attributes in the future, that bump the index past 29 bits? And why should Lisp have to know about bitmasks at all? > The name of the variable was changed, and the docstring was > "improved", and became completely wrong. It is simply untrue that > this is a list of attributes that Emacs will "ignore when realizing a > face", or in fact that this changes anything fundamental in the way > Emacs realizes faces. Then I guess you only read the first sentence of the doc string. Read it again, specifically: tells Emacs to ignore the `:weight', `:slant' and `:width' face attributes when searching for a font and an exact match could not be ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found for the font attributes specified in the face being realized. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ What is inaccurate about that statement? Unlike your doc string, it does not need the caller to know about the inner workings of the face code (how many of our users even know about the function realize_gui_face?) But anyway if you respond with some more nonsense, don't expect me to reply. Please demonstrate: - There is a real performance problem with searching through a list with three elements upon face realization. - My change actually changes the behavior of the variable, leading to this bug not being fixed. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 03:54:20 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 08:54:20 +0000 Received: from localhost ([127.0.0.1]:51582 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4eZo-000539-B4 for submit@debbugs.gnu.org; Mon, 12 Dec 2022 03:54:20 -0500 Received: from heytings.org ([95.142.160.155]:54430) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4eZm-000533-Bb for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 03:54:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670835257; bh=gJt6g9ismpCD4dM4v6E4taYLd9caUb4Di7DoXdIfiFs=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=WJEBJr0wAZZ23eOVpCko9iPC0PucCq+uWc25GqUw/a2mNCtq8yu3MOh5PSBc5h7pg bYgsRoM2FaQ7+7m8RJjtY8UUpLhFPmpD4lt/3sa4zcnSBurAxgKLPXMxAi1R9CXyMT UdEdzzHVASXpbWzdwkeOTgWHzUi7ndufS+j7TBC1h6sxqFsLz020AlPQuhMzqXLIiR entTNK51Yb5dMGmjv4xL9NnZ4Ah02pRGILs9Yr59l4lO0Pc5XLECPWaJxd5Pa1ygl3 454j75VK3FXVCM9HeiJRJ+/byGtp0lrTcHi24j9GJj9rtL5Uum0VZjs43ZN1zNhcRx OnJzrKMDvhJLQ== Date: Mon, 12 Dec 2022 08:54:16 +0000 From: Gregory Heytings To: Po Lu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <87ilihjsrb.fsf@yahoo.com> Message-ID: References: <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) >> It is on purpose that that variable was a bitmask and not a list, it is >> on purpose that that variable was used in a macro and not in a >> function: there is no reason that each face realization in each Emacs >> instance should spend unnecessary CPU cycles (a function call and >> traversing a list) on a variable that should never (or hardly ever) be >> changed, and that was introduced only to help debugging other potential >> problems in that subtle area of Emacs' code. > > And what was the problem with a list? How many cycles is traversing a > list? How many time will it take for your CPU to perform everything? > My measurements indicate that the "improved" code is ~20 slower in an optimized build, and I care about performance. That's a lot to handle a variable that is, in fact, a near-constant. Once again, that variable isn't supposed to be changed by users. It is there for one purpose: if a user reports a bug about font selection, it will be possible to ask them to set that variable to this-and-that value (most probably 0 and most-positive-fixnum) to check whether Emacs behaves better. Of course, brave souls can also try to change it, if they want. > > So, please, demonstrate that searching for a symbol through a list with > 3 elements leads to a performance problem. > It is not "searching for a symbol through a list with three elements", it is 12 function calls, each of which traverses a list of three elements. >> and an exact match could not be found for the font attributes specified >> in the face being realized. > > What is inaccurate about that statement? > The post to which you are replying explains in every possible detail why that statement is wrong. That you don't have the patience to read a 300 posts long bug thread is one thing, that you don't have the patience to read a 100 lines long explanation, and bluntly declare that it is "nonsense", is another. > > Unlike your doc string, it does not need the caller to know about the > inner workings of the face code (how many of our users even know about > the function realize_gui_face?) > And the purpose of that variable is precisely that: making it possible to dynamically control an implementation detail. It is _not_ supposed to be set by users who do not know about the inner workings of the face code. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 05:33:34 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 10:33:34 +0000 Received: from localhost ([127.0.0.1]:52037 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4g7p-0008KZ-Tm for submit@debbugs.gnu.org; Mon, 12 Dec 2022 05:33:34 -0500 Received: from sonic314-20.consmr.mail.ne1.yahoo.com ([66.163.189.146]:46409) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4g7o-0008KR-9A for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 05:33:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670841204; bh=0V8QqgOTTWipi4ugMQVEzr2MJjw7A1OMjubt2X8ax+4=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=cVnYbKX3AVnHjNfQINhvdK2YAptIFlbHA3H9mtE4oUQEGeQ3b5/WS3Ey8bFEn7o8TaaseqeqZObEYH85UlclyWs3VmUxNBWgxejwFuKDeFfZ8sKeh2UeabfKeORzbL5LexlgDV9oh2EhCbI0sxJc+IDIZDFfQhzoQNY2TOOeN/jppdsl52pMEcBJSWx17lM0+Yta499fGJhHBCwXqZD3bPBmKO7+oFYwbSJ82AYcTL/CZyJXvdrcYRmsZGY/sA9MQyV6PsYhBbs28p4oLg7xj6FPRNyc7P15Mw7SA4kuftV5WTK/nIcUJIlbEKXTf7GtSBoNpn5FJ4TdXnDRmFt7CQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670841204; bh=uwQHPPQPzuJXkErM3bn54ur/VPEqGiKjWz4h/+UQq1R=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=kp76EP8iJm9FoJNLSHqpV6TG92cfNJUtCR/utIT/r4VmoQuemCUuDFEWTSihFXnN5xkPDINoJL3hfN8Wxdv78jMP0NSIZ25zepsJAueaH37O4CQayuJYdKlT5+A8Dqo9bwqhsoiDIosQW1bOrSRSJWxdWkcBWqx9S047chGJnO1s8lO7fAAqZvSCzL5GP1U1UHao1Ztn1bRnalRTNfAL+BQxuaRPso+w0DYxFwFM5yVqmtmPB1X+/cOyT7GzDSSncMNOltH2XCjbBlm/nQMVVdnJyGOvg85ER5EZrGCAJqKzQN3WtvNUdAzcCw34eK63+10d9wtNBpHL8uy3fe19eA== X-YMail-OSG: aQzRJEMVM1kVNpDsFbhFfjsIJisRlhdXYDNDBhpKCpvp_s.ifKD8VYmxdyvRPJ0 3NzbJ90y28P8uscwaL8cZTI0tBeYqoMbD1k71_IglyATqPk6Tw.TEMy7Odq59pYjzwg_5G6rRvQL WQLdz8Lxiv.zFSioo0aF0PrveRgvHbCOv6wokcpcNckNfE.LDD4XCrokEGuDSzdu.U4E700kpUyP DhFmlFdtI7voe7SP2iIvnQAZ2QZOnQMiuo.sWmjTo25tOKo_Dxu.psIGYhr1512ei8VqBwQhe_b5 AAvexb6N3RLA2.h4yJNpXtGTrM.vrbNyrzYexU_3d_oBaCLw7MCKmo_yNOVISBeb_XlBRNCD7AVc U07q9EOVdkP7QxEXN_hK1qjytIFEy1VuUb3ke20UYWEBg7XmXWGFfueCkbvevjpbwL6B5SsFjOdG TNYIe3uOouJpuNN3MSidU.l.jUgWW2hq05fKCW32EpTqWIeTyLhcAxeO615aPY43rtX0wyeXhUXc jjV7RxkGuMpAirS.5vcJURe9dTf4ISX6l9nRldMz.LZyK0GWX6zQ62YgKsEStoAM9fzS5IGxvl0m tOA2HFuLLc7jYuZ47bGRb7E8.eQoJP85e7_7vyJzX2G2IqwIjl8RclSKc_qN0k5A7y3khWc7uFO_ KwcJwyPEsRCz4gRc9eEfpnff_qLbl7Api2N3MCW5bf34Bo_npyCaZKlanK1_w5vLD5c5rdE7cRoA tsNnbzX35b7cDS7e2qdP9g5k6EVNKf9yRawrVBm414t3EtTv9HQaIIB.9ypFxz3dcGCINHgX50Kb L7QIEYVXd1cLWKY2q.NduEGolZypgqxMN2YRtwbjvBHY5M77gGcS6Ism1aYwZjg.PMqfDGR.N0W5 NbDTezkg4MnGmBnULUsQw3xchW0ZamyzP1R19L6hB8LQUIYY7YOQ6BFWGNObsUFwsEMMGkQIsZug Trm0HzwMLdW5DsJ2l.kzC36fg_wEjNamAcHijCWarc6IifdyWWBHNj2J8lLjs0l8R0E6TDodGH8k xg8BdKGAdVsECW3OHuaM37zdLgdVabGIEmQoKmxw9E3_GWdaAe2EhRwVX_bSVRKuggYsp6cbXOuO jyAoERZEnFwhUcIRL2yfWcJOKcCwy8UQpPR8FbLO7Z1rUzfQpkG7ZKHLnVAmi09mJwsog.rQZipG qW5Qs1fGEbbbrzNpHMvvlAwfRqrudySkI8iBpxvw1m_8F57oAr2MElaFtm_7g1Sg9GaLrUKqrVL1 tFjCeWpDKc.52cXDti_XsRssw5lLCNxEE8jncnGSdlyztvXOnSejD5wzsOS9sLfIZq2ErDK0kWco HGpEDl.KW7QWQlCCfRujw9.gTdSRiDyIXilrFBtdVPAmHppIsMc9RWYSsdiQ4qxZMZgLRych.EZ5 18D4xNEO9m62LkoycuB1XQIgNU8_StngRpkWYDzPm1bTxev.0wIh81jXfGtwRhtjvCSEb7SvBOAW ZOfhuDhuRMPFqOLAtbezvZqvvfFwC9VUWYRj2K52Sez.jR5FjeOXV19K5XbIpIjmMVG_FUwdDZJ2 iu_sQUKYVS0iXJhnpkK2Q3Fl0jNW8cxmGf4HP5PSfiZCuVNB85TF1RmHiPXe9S_SFeK3wjrXmwCK eoMIfeXqMq8Xrw0S3xiP38m76ORnrUYdSLrPAyEnzwlQXD_84ofguLebT0zVuH6XVmNfIlRr0Vms IJtTRaPvBWJxG3.qvQIA1dLnh0TzxcA9CpeewkbcqgNHmq8daFvBRp_BFegVUlupTZqxiLgMa5N7 Iuzta75oVuf182d8q0qdPNDbGaOJp.zUzOlttfXnlp6D3DobREKN5cYtVrA5EOkc3z1fbExpBVaf WVe1o7xtQP8TILwvHLtssa_XSFfHAcgzywHzFwZEmLSGkvyl5nJyjN5C4T_AFnDdo._L6G8ug7Yr Od3dqdJTYVEdr753TGabh0hLuVkosNpYwf3PRZRKZqXdAc0U.jCF4YFRoZTLgKmttnFZDM3wY0BQ GxVvHfS3oHYCkXuO52UvHG7MUn8i_1P0GLq7Z0vTm5sZSJGDhyqFGAOdha7qWzUg_F_SUuM8xbHO IRF4MiSUIiDk4EOA9B8b2bBtnro.fNSxgrKgpdAuq5ObOHyS7CboWxpBQCVK4PQeUZyMVIG.wzrd LxflEiR5yuVtLGHjTYWTnVANZfnyEdY8i7Q2Y0yY3uQBFvRBTXV9eGBvjLot.5Az6Z7pmO8PB.q7 Lyyq6pbEcqwBRESPsSxQL8UYbJfdqMtHHP8HYNN8nU32HQYSKFA2VyAYv2rwORFCpBT6AJQ-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.ne1.yahoo.com with HTTP; Mon, 12 Dec 2022 10:33:24 +0000 Received: by hermes--production-sg3-b666c6484-prndz (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 2d6a95f6dc57cdb682f956df2fa05e56; Mon, 12 Dec 2022 10:33:20 +0000 (UTC) From: Po Lu To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Gregory Heytings's message of "Mon, 12 Dec 2022 08:54:16 +0000") References: <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> Date: Mon, 12 Dec 2022 18:33:14 +0800 Message-ID: <87o7s8j4id.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20926 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 4155 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) Gregory Heytings writes: > My measurements indicate that the "improved" code is ~20 slower in an > optimized build, and I care about performance. That's a lot to handle > a variable that is, in fact, a near-constant. And how many microseconds is ``~20x slower''? Do you actually see the drop in performance? You remind me of the people who painstakingly profile GL, and get angry over a drop in performance from ``26450fps'' to ``9300fps'', when the end result is still more than sufficient to match the display refresh. With the following instrumentation: diff --git a/src/xfaces.c b/src/xfaces.c index 88d3a79f8c0..0eced7b7be5 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -6089,8 +6089,15 @@ realize_gui_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE] } if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX])) { + unsigned long long t1, t2; + struct timespec timespec; + spec = copy_font_spec (attrs[LFACE_FONT_INDEX]); + clock_gettime (CLOCK_THREAD_CPUTIME_ID, ×pec); + t1 = (timespec.tv_sec * 1000000 + + timespec.tv_nsec / 1000); + /* Unset several values in SPEC, usually the width, slant, and weight. The best possible values for these attributes is determined in font_find_for_lface, called @@ -6117,6 +6124,11 @@ realize_gui_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE] font_unset_attribute (spec, FONT_SPACING_INDEX, QCspacing); font_unset_attribute (spec, FONT_AVGWIDTH_INDEX, QCavgwidth); + clock_gettime (CLOCK_THREAD_CPUTIME_ID, ×pec); + t2 = (timespec.tv_sec * 1000000 + + timespec.tv_nsec / 1000); + fprintf (stderr, "that was: %ull us\n", t2 - t1); + attrs[LFACE_FONT_INDEX] = font_load_for_lface (f, attrs, spec); } if (FONT_OBJECT_P (attrs[LFACE_FONT_INDEX])) all that code takes somewhere between 2 to 4 microseconds to complete for me, in a build with optimizations enabled. I don't know how many faces you think people have to realize, or what kind of 1950s computer you have in mind, but on any reasonably modern computer it will take somewhere around 500,000 to 250,000 faces for this extra code to make a single seconds' difference. > Once again, that variable isn't supposed to be changed by users. It > is there for one purpose: if a user reports a bug about font > selection, it will be possible to ask them to set that variable to > this-and-that value (most probably 0 and most-positive-fixnum) to > check whether Emacs behaves better. > > Of course, brave souls can also try to change it, if they want. No matter whether or not a variable is supposed to be changed by the user, it must not be a bitmask! And in general, it must not be confusing to users. Users are supposed to debug Emacs. > It is not "searching for a symbol through a list with three elements", > it is 12 function calls, each of which traverses a list of three > elements. And how many microseconds is that? How is it significant, compared to the time it takes to send the glyphs in the resulting font off to the X server and wait for a reply? Or to allocate all the colors in the face? Or to simply search through the color cache for all those colors? > The post to which you are replying explains in every possible detail > why that statement is wrong. That you don't have the patience to read > a 300 posts long bug thread is one thing, that you don't have the > patience to read a 100 lines long explanation, and bluntly declare > that it is "nonsense", is another. Then feel free to write a better doc string, instead of outright reverting the change. The only requirement is that it must describe the variable in terms that users can understand, even if it is somewhat vague. > And the purpose of that variable is precisely that: making it possible > to dynamically control an implementation detail. It is _not_ supposed > to be set by users who do not know about the inner workings of the > face code. If users are not supposed to set the variable, then delete it completely. Otherwise, users will set it, and documentation they cannot understand is just asking for trouble. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 05:51:20 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 10:51:20 +0000 Received: from localhost ([127.0.0.1]:52153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4gP2-00005f-6b for submit@debbugs.gnu.org; Mon, 12 Dec 2022 05:51:20 -0500 Received: from heytings.org ([95.142.160.155]:54584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4gP0-00005Z-MS for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 05:51:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670842277; bh=QpZHPSB0XZIluY/pRaLSPDeDU0ahMac9P0BX+6oxRzM=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=ZiVFgw4hxN3BBq1kg+gQ3Gc0jADxyGk2xHGZY8apHYflKYYYSypCvhKy3VDkCLDOM RhLVoghC86+uMjaWBSKZwQ73ce3sm3IjDLsmBCIUUfkIxh8gdVk98GNSOgTIXpTRW4 r0YGWoDqqz9JRXUmhDpHkfPDUI0RLgNt0GoN/7gqT/13pEnFlEfzViZ55nGUDlSQZP m20/ZA9C4rjLZbZJX/mfToiVLl2SBfds6JjgW7YCqgk4ZnKXbEwMcoMg2oT29O4TGS 5iWe1X5NN1a2S7AJko8Fl7TdfEtc7hliPKzN1aMDgvg70G7LdJ34nLbo3iRKtbWcX5 KrCVExfFDG/aA== Date: Mon, 12 Dec 2022 10:51:17 +0000 From: Gregory Heytings To: Po Lu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <87o7s8j4id.fsf@yahoo.com> Message-ID: References: <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> <87o7s8j4id.fsf@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) > > No matter whether or not a variable is supposed to be changed by the > user, it must not be a bitmask! And in general, it must not be > confusing to users. Users are supposed to debug Emacs. > They are not supposed to debug a (very subtle) part of the code they do not understand. > > Then feel free to write a better doc string, instead of outright > reverting the change. The only requirement is that it must describe the > variable in terms that users can understand, even if it is somewhat > vague. > That's not possible. You would understand that if you had read the post upthread in which I describe in every detail what that variable does and why. But you don't care, apparently. > > If users are not supposed to set the variable, then delete it > completely. Otherwise, users will set it, and documentation they cannot > understand is just asking for trouble. > That variable was added because Eli asked for it, to help debugging future problems in that (very subtle) area on the code. But I already said that three or four times, and you don't care, apparently. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 06:18:39 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 11:18:39 +0000 Received: from localhost ([127.0.0.1]:52301 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4gpT-0000Pb-0j for submit@debbugs.gnu.org; Mon, 12 Dec 2022 06:18:39 -0500 Received: from sonic301-31.consmr.mail.ne1.yahoo.com ([66.163.184.200]:37893) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4gpR-0000PU-Qy for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 06:18:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670843912; bh=S+k3Isy2R7K9vE6sEDt9yC+yO/p99UZueIxlpODNpaQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=kLYJTkMGZUPemFOWafluUNaak40fknaPHa1mD/buoArOLo5Ov1O5ANCt7g3C2weJVllFSZ2Tjg7BzL/46IIBcSy8aht5mhGGnQ79ese72gGnt0dAmcAwgNERt0QSN39f8DT/P7cMbHoE+MTOeqDchMiM1UcRkMeJlP4Ph2To7H2kGNgBjpTCxV/LQYqY7D5Qyjm0lHlJyuxZWA3f/K2BrYzJ9RnqNrd/6B6qvPEoKPqS8sbsUXMTicDB/52YIPPFIfGlqhy0ez7RVnXy9PCCN+pLjEsmBXEnBAFLoJezFxcWhCWa7GhcbCdUHaFQMOH71YpBigotXMwnxXEfk2kgSA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670843912; bh=QeiF6m4w1Fuidrm75fyV2o+Pfy+709xWZ3ZKv75kOSn=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=CJhRBPKd1lzeC4ipeV5z5whwY55qzrOUgL9uwBYpOmHGeXuemVrQsEH/fIzyV2FYMAZNiHRwlyUodNycHuW8BVjVBfKnRbPB4wqux5CdM9DCTegkplYMrWneQXd62LYpJI+kdf1+O2uiiEIDHmxwH+p0C4MQ5UAA/ndloFfsK0jtdK9v6d6LWKzio1RjPARlKYQ8qECfP3x7vJg10a2VJR5TjVG4+TIO/0Iw3krT30Edq33Py5eyJZ5RM4uGSHw8D49JLTVC1/LcRYDPzOlDD/YygVhgP8iJFh9zQYX21i3Y2/CkXAlzvaT7iZgsJELNnu/pPxYHfjrZnwa2y06CqQ== X-YMail-OSG: 8HS5aZgVM1nYRt6dxs5MgWIzcf1tx9ERP6Sbp5lneZfHaXVacHdHJm_19NL8LFU CEzfSw5RJojc7TbV..DOC_KiJG5QNlsDxdQkwQOYdE7Vs0dRTQji.FgpAgA1uxV5bfbfUGXQLh2n jWfQaZtP1TcZ3sw1EJJvF0YX2czKHepYQ3kmPcDKMx31BDnhk3yVGUzo7jit6UJDD1q4y.U237MS xEsbix0GuneBWPpn4VxvsywtQZwXbHx55pSWaq4oRyCfu2k2uuMl0KO0ZA0SBrodUAX_13LsgWk0 tk4VmyopXLlBYVMhqK199GjN5YQiHMEFJrG8ZBRxnMJnIs0k8ZFGLe4T52NvYkWXChx11yKvnL9_ fqDR3e12KfcmXaK7P.732kQrVxD1rAGu8NZbZG8G8Msp81Lw2aHathmMI39fJ0tRhZV.k4n85FrX R2BmCm.Hm4blyRPG9MWuI1Fr4z_BLR.vyIRLLxmD1EeYn0909PNHKHS7rj0bcQEkWL0axY_t3QcU 01fUDO8FuBFkaAoNKF8JfE2baQNeolaaYYQQeWxn3pA44lCCqSFhrd2JPlHhskz8SNbriA8WnXYp 1zSRi8MCDV33hZgVyFH3dJEudIH384.zWnglH_vDUpgoTa4XOENOVVSIFP2QgG0tAyHKhfK9ae1W kyyh.sibJLNUNY9PmJBsiCU_2Iprw2wpYuGg22oLbkCLLCOiU3.RTTGxA3A8QiQ0kAECu5VsfrjX i.BNCLGjbGNxfTfG_Ya7SOwn7Qtx.36GBpAtkC5f72Kk4VIrYxKhdV8_7js9xZK0KcaGPLkOH3Bz ba_WYGYHoIZu1ZbZjdzgnHDtNE.4eJEOL8KnK.DIWH8lU9oSkkiXF17EFQBv.xNci4IJ2XZ5uLLK gHuALqMUBaHTWPMOE2.jSC3h0ty9C9MAM40Zp1OORzpQLV17EYY34_s_m7thyCjhMy7ocP9E0L0B dnTJN795Bz3GU67VGQ.AWPpP1MDfgjpohiMtaSU48B7vES3ILm4pagVitDuMHKcQhkOzw.uR8hz4 I_TreEno6YrhUtGKRKhzREpi2hpIPLoKlSXwLAfsOroZTULKidMaRrv4ltI9GtADeUb1_k465zfp P1F47aq58.fEZe.c_RFoY8.AD8Y2IZTQn6qiKxR3HcKbwGc73PiCvaQ.yCwAMRnv7iNaeRPmiDJM vYnHcxWSpOg4dt9QDpWAymTtiQE0QlirTrLO7rqeij3PRLi82QNrCr3Fx7oQmVPNiw3nQWGaVOZF aP3XKPpol6xCkgUULIIKZK_hCCHXJ7VnJPFcdb47toJPZxfd1aYOkkRQPArf_3rZtODN0iq5fBIw 1VpafdpSQ6_lzdsszFM2cd2ei5PZAAWj5S0mSuBWI149_qrr0OFIqknTDw2SvE1oAmQqDMuR4Zy3 4gQG8WE62kn72lk56spj6i9RiYjF7Fz6OcZ7ZYCG16RC9CicrvL65oW3_JdMjbNvTEptV4O6KfpJ U97lyW_neXKnV24qrjvqVbaFCewzo3B2X7ydbGPZ.VU12WoZfSPhM.vz0nye_8qmgqoJotif2aXk 6nSXw01.N4eYSJxrcRR3TIvgS_SrvXubrA_vjlcABP.6eOWWREPz1rO_QQ0Vl1ZQOrydx9FTvsvQ zByv5waH3a_RlVP7Y1FNDDb.tTdf9JK0wgmapntFvPZ0NlqXARZxnVRe58EJWyD.2A9iiNdFSKUL SLAjV1yHVm6cX8EW3w.9ibZC_kpmRVQgGfyjt0pH8FCLRhrJ8YNo7BXde7V1qIOSxosKLUvYvJyv OQPpEHJTeFNwexjUPE0qwiy.KNW8_H8XUt16C.Y917uhO9kItKAmKBrDhLxMMzQnoepPfVH49tUX Ibwe3lwnSTR9R362DNduWdCceJapoSb7oFZVGMebcHfOlULacj8qKE3WZxMrSNvlLg_Z2XiYNZm2 _lTBR3iqAGNers_vjPVXtNrKPLGo8ZGS4Ae6j4hVlBjXxDsgWoS4NFwgXuB__r3P3daN9PyuXs6m GAvGnDTGQyGL50taDqFJy406dDYuuDJh5jkLD6C_vkwpDrewKwlgZzh8UF7gBsi3QzSxxO1.5qQF VYr4zLzOJahHL5V.0ZYWk1uVfnu1GODNYk.lnRM1O2Wt.O_vm4fOscn.QRNiHQ_jEseYWziPl.xr K1BLYLbV2PEGNREnJx8LSfY1WtLhe7V04orgSpQVMgZphonVO0onUHDRe_mfb4HS3xPevs3gHF38 4pAdSesZShjqWpV58PTVygtFxq4S0joQir8jQXguz9hNz54bRUFb2NXivtYxy0xOYeQZzCic- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.ne1.yahoo.com with HTTP; Mon, 12 Dec 2022 11:18:32 +0000 Received: by hermes--production-sg3-b666c6484-bdtvh (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID c411669fb219085189edcef47cdb8234; Mon, 12 Dec 2022 11:18:29 +0000 (UTC) From: Po Lu To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Gregory Heytings's message of "Mon, 12 Dec 2022 10:51:17 +0000") References: <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> <87o7s8j4id.fsf@yahoo.com> Date: Mon, 12 Dec 2022 19:18:23 +0800 Message-ID: <87zgbshnuo.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20926 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 1482 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) Gregory Heytings writes: > They are not supposed to debug a (very subtle) part of the code they > do not understand. By that logic, I should just delete the entire "If you encounter X protocol errors" section from etc/DEBUG. > That's not possible. You would understand that if you had read the > post upthread in which I describe in every detail what that variable > does and why. But you don't care, apparently. Yes, I don't. The fundamental problem I have with the doc string is that it did not say what it does, or what it is supposed to debug, in a manner users can understand. If someone finds a problem that can be fixed by removing ":medium" from the list, he will type "C-h a font attributes RET" and come across the variable, change it, and find out that it is fixed that way. Then, when the bug is reported, we will immediately know roughly where the problem lies, skipping past a whole week of pain and anguish. A doc string which only talks about realize_gui_face and bits in a bitmask will at most lead to confusion and an immediate bug report. That's assuming the variable can be found at all. Even the following doc string helps more in that situation: "This variable controls some aspects of how Emacs understands font-related face attributes in face specifications. Try removing or adding new elements to this list should you come across problems with Emacs ignoring fonts that do not have certain weights or widths." From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 06:38:34 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 11:38:34 +0000 Received: from localhost ([127.0.0.1]:52398 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4h8k-0000nc-0Q for submit@debbugs.gnu.org; Mon, 12 Dec 2022 06:38:34 -0500 Received: from heytings.org ([95.142.160.155]:54652) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4h8i-0000nW-La for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 06:38:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670845111; bh=7gBu29GaMjUCluwFM2AX0p5qJdyGfdSoHZoCc/vU+fw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=MfSH3U401C59GYVrbHpmS6/XC6/OYn1bOjaHEiKl9VhsgphsoWCAMG7THy85PZekH plHSXix3hj5Vl12YzTskWTrdqDTUNcTdZCtnFseIroSL2b4gGjf28n8P3Z1qJTuQME G4hGKTtLmGgQHLehPIOMKptQ07IguQvqva0lz6HNar/wg0jNwyJjyaR/IPiXT5gbpp u3suM3DaBvgQHYLaPtgckKzjRBwDqLbK7THPOgB8s0UO8loGx50wZ9mtjRw4Mt5bvN i2sLeazLgbv+QrrAiu9KwhEf0BvKVq19bErq1Byx72DoaV/9UGcQ5UfE36mG5a2dQf 2iVNLy2A9XJaw== Date: Mon, 12 Dec 2022 11:38:31 +0000 From: Gregory Heytings To: Po Lu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <87zgbshnuo.fsf@yahoo.com> Message-ID: References: <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> <87o7s8j4id.fsf@yahoo.com> <87zgbshnuo.fsf@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) >> That's not possible. You would understand that if you had read the >> post upthread in which I describe in every detail what that variable >> does and why. But you don't care, apparently. > > Yes, I don't. The fundamental problem I have with the doc string is > that it did not say what it does, or what it is supposed to debug, in a > manner users can understand. > If that was actually your concern, you would have asked a question here, something like "Can we perhaps clarify this-or-that aspect of the docstring". Instead you brutally changed everything to "improve" it according to your own, and only your own, understanding of "improvement". That's not how things are supposed to happen here, sorry. > > If someone finds a problem that can be fixed by removing ":medium" from > the list, he will type "C-h a font attributes RET" and come across the > variable, change it, and find out that it is fixed that way. > C-h a does not search in docstrings. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 07:48:00 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 12:48:00 +0000 Received: from localhost ([127.0.0.1]:52759 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4iDw-0006ML-HI for submit@debbugs.gnu.org; Mon, 12 Dec 2022 07:48:00 -0500 Received: from sonic308-56.consmr.mail.ne1.yahoo.com ([66.163.187.31]:42302) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4iDv-0006Lk-L3 for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 07:48:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670849274; bh=RWUiira5kXFqkHuPKM3T4TiYPHWX4Se6060hO/rOcXQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=fUE6hRsMQ3oR3GzaVKwlWTQEf5ak8wodpUlhEekH0OAcs+DkhTbaUW8HQqKTWBRVDxT4wnF6+1p/Nt/G62FXX3V+7z/FTBVCZMXX2vk5jijld0djBmB8At2nPVX/ry7Ja2U4YIo+RYONE+w+XOo5OZvnn51LTltXZHK8M1Rjpo8+6Vxz+iu5dPQvPHEVYzkAYcbxoLK40hgSHaVhTCtPGWI3mX6wHIeTrR1sK8CaIn0G+e8S/BrXllkN5GNhjjaKHnGtSlY9CIKUFJx4WQNUAG7CQQLGiu+bkusamlqcIq3ElnNXwobRWYTPlWBtZCGF8X7FkE1wS8N5Q0ZDmRV1hQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670849274; bh=tcw0Fvz9j0oV8wSFuUu3l7jkUy2CAGiOzsFis6zWhCE=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=XHkGtiEI9s8mLSgzhvV8Aub/GQko2xNWOJbCP7KURiNS/CubJdGSTPq2fdTCDfuCPTYvrCFj171jUnBUYgsdcEPKvyPL8PnX2uYMilEUKFO1MYaXIRFvtQuq5ayjmvty/Qxnr8oniDokTsXEnKzgUcPnYJJTYJmJwZiiHth/HquwEFsiT8FDYOCP3PWOrLrpIpHED9jQipLl8UxpuTRXjHH42WfIc1w99QTh4Pbq9/FdWn0n7IRXz1Ld0+2QTRUq6bgvILuCPILqwwSUpqOTGSfLfr37Znb9ky6szRQTFwmZz44CPQFSACQsRcAx+S6P9cZJJ2HN/cO/eMwD0X8kxQ== X-YMail-OSG: XHQVlmgVM1nvsHgS19ZDpAuvhrR.6nVwnfrry0Sh7WvyMfgR7hZjlF.Vz1UB9T0 .JxO.iLIjwrU2jF974RzESGDYvSOAjVEVFi32jL_sQnT8jOb2g01Vlp5oggoTIIONtNQoEiHD0c1 9TeXp7xpcDkEeA3CDilyRIjBqwwjpYqoMgJxxV1IHfg.W5D_rxb6_9bRO0wmyYgzuuFmneb9S3I1 _0VlizVPAacO6l5VpyUzXjYLy9aUPiYqWhyLMEeuQzDtQSfuPOfOxgcfDaf0YZ.KYAXWS1Ml_JP3 Ueh52uDYPFSKOZ3osBIzSMBFl7..AA5AYnHfVTnOqI.sgXCJ.zbDB7w9f9YBuiEvGm9QnmzyI9wI FOOxobGQ38WJc1OcuMeJ7T._Vj6fyCqP_x1xU9s24kIGYt2h8kfVaoc52MG6gXqANEPr4UD2rqu0 f88WFcE.cDV3vVYxeLZI40Vyw7L7zadzpY79KYPxki53EBAIppTL5bpM5mCgS1zqeBrC.Ap8Jhf7 _qi.81qIcSqGlP1bwOHmlalCfAH.gFWGkXBIHcvXU6f4U3l4oNnLV7t984x5zpkib2kEexuRX3Nl .FeNihKeHnQdURWf_SlZfV.hDDxJa.OFNOWP88XGXVl3OlBIUFbfvM0_PXJFUAuDZXgyy3Pnzrml H8ulKPKAxPZlsu_ixO8ja3.VimZ4LE7K.aiR69Ekv.SN5_SLNKF3N94zh6k3JnKGv5ItDBn.BD5z jnNu4QgT3joRYW0BeR6_SkPZZtV8CHYhU8lumLn9Fj.GetHbmxz9ypoJRVfr4A9p4Aaq5FDQZzwp a723QbWzB_XA1f.KjY1BeMi.Jr.FoUyRlTF4Oy3kNn1oyQFNWnodeOY7EqdqYt6b0wqMOPV9I.iG dhiDU_PHqRoIVKyXcUZizoHT1r9PGvwixBYwyAWIqhbdUifXfK7xd_eq4JbaHzmurwv_cASpdsNk a.bgzZV23jFmbizebe_Wu24Yaec8YrIc0YnMuDsatPjc5Vh09LZhH4VsJf.JeL7yERk35GhztECK HOW584efQhSlKO_ihCp12VZiI8LixiWkrwOCHMWPNA836LD0Jk9c_7m3MQNskVOsFhY22wBg9VIU PRt.87Q0Jmwqy4rXLQibZ8rQykmc.uuK6mCE8i.ZWNAB9lTkznffrGUigxdhnw3GRE5ZIjCAsGEn tJ_a_9gzmXg32TMbv7.KSADMslbqInSco2H0gN4Al.9j5_NWq.VfbI8v1CKjnrwZ_6LupnWViwNT m6Uv7zONL5V3ZtRv6PWtKPD3CYNebjHH7PNvvNV0sQ7R87m8uBwCMnuoFmeDGu4hbGo9SSrMbCKg _A0_G3.0Fbt6EWVmQyAawJeMAXQQdyewsVX7F03U9oH0F5sm.bKYndevRNbtcin1.9zo_0wtJhfb MzB4DMitvYgP8hh1YVifFBJi7OjjaYmO.pjp3KN.l8p5ChunBZ7YPRlVHWj6gY5zdiTxaq4AGmv9 8pIPeMhE1V6Lln7vovNdlZXCNvoPjAqn2xFBnz1Pm.HvTif5GywtJiaSzv9lrUW7tWDFbqacMdYg crY4snO.4KLhxSb28d62dcRaZ_3xcgj9GDJM64Wwtolp1KLC6vhON6ur23zTk4V70VKF5Y.seSI3 8oQ5kXRHJ67IhuydPCD5Iz3POAv6HzGC0.xqs2myMQM.qoV12PkY6tfm6H_75MXLwsFmIEW09tGm cfpILzIoYZ2D0XbaTeGahezElFwtrvSKM2LmlzsqthuFGRdGWVFG00pm1mvvSg541Ys03SlWPEMf dFg.h40bsz2XMY1810MBHIw0LL0pi4bp.Vys_JJ51dwf8V3a3KCZ.0SsEv3wHf_eTU4XJOzmiwrV j..7opS6L82MbYGApMISTUyxXmsXBC32Y42.a23.Hb4hLsYzsoz25RA6SWMf6.F6BTCc_yJujtTW HPuY3Gb6DguY9rUE8.Un4Y_HursyD1ZLlzCm5JrqrRk_IgKOqexrqPu0hWn0Pk8csh.vAW96OfWn DlNp3htoky8fmVTNHeIJg3Vrz_zeYHn6x9NlUXixxKAK8rXOkIYGKJWv.BYWtuV95pUgRATmYww. KakvpmfuetDzIXxQNcckO3xQcR3HtSU9kpZLheYo7q8K7eM3wHXEAM2lbs3.Tqi9gjccW50Ut3mp 4UPRq4XXhxqWpTRi8hksUh3tTGBuc8tLz1BY.N4UFiegqeUGtLAbH5ikrH9PD9Qkhvf2PIAQvnnc gTwPiF0cBFbePu.WYf2Bsao5LPsXGcP.BXcB00BqLg6lhAKIj8VWnRWVkZSyjscvRtQU4_okq X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.ne1.yahoo.com with HTTP; Mon, 12 Dec 2022 12:47:54 +0000 Received: by hermes--production-sg3-b666c6484-prndz (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 333e032bf1b954ea8202a31c56f4a702; Mon, 12 Dec 2022 12:47:47 +0000 (UTC) From: Po Lu To: Gregory Heytings Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: (Gregory Heytings's message of "Mon, 12 Dec 2022 11:38:31 +0000") References: <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> <87o7s8j4id.fsf@yahoo.com> <87zgbshnuo.fsf@yahoo.com> Date: Mon, 12 Dec 2022 20:47:40 +0800 Message-ID: <87v8mghjpv.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20926 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 969 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Eli Zaretskii , monnier@iro.umontreal.ca, 59347@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 (-) Gregory Heytings writes: > If that was actually your concern, you would have asked a question > here, something like "Can we perhaps clarify this-or-that aspect of > the docstring". Instead you brutally changed everything to "improve" > it according to your own, and only your own, understanding of > "improvement". > > That's not how things are supposed to happen here, sorry. The way it works here, AFAICT, is that someone who sees a problem with a recently installed change will correct it first. If you wanted to make further adjustments to the doc string after that (Eli already did), you could have gone ahead and avoided the entire discussion, but instead you chose to revert the change and go back to using a bitmask and the old doc string. > C-h a does not search in docstrings. Then maybe the _new_ variable names (both mine and Eli's) match. The conclusion is the same, because the doc string is printed in the Apropros buffer. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 10:07:16 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 15:07:16 +0000 Received: from localhost ([127.0.0.1]:53537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4kOh-00080G-VD for submit@debbugs.gnu.org; Mon, 12 Dec 2022 10:07:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43440) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4kOg-000809-7l for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 10:07:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4kOa-0005oG-UB; Mon, 12 Dec 2022 10:07:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=uNYhxDWeX+N/NaVX8DGXoPKZs4Eb9YnLzjy5B2NAwBA=; b=GUlfIF0LQprR JZKt46HAV5Byiy4ysVIoY9lclzo7XxDu5H0HjRNgoDtdzPIRGZwfr4xMi2tsMOd+jP/o8thfwWIgy VbxCvCbrrbs+A1eQ32XzJ1QofkbPoGG3oCDZXiVwEkb0o9fF9ytJ6LLCOS8Cilg3W6CY8n5Jsi7Si GWGKAl1+ynzJH74L4pJ9RCekz9PIb+ylGYwOpWYNo+DfB9dFgbVcMDAqxUDCxgb/1EDwYx+VHDldU TA20QxlxkOiX+m2XUfcOC/8ff5Brzgj4TKTU3tdwqyhUY+iVpa/ehg4DUUTmpmjP/5+noKsd/zVdY c37h29kJMoUA3q5x23f8zQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4kOY-00009i-6I; Mon, 12 Dec 2022 10:07:08 -0500 Date: Mon, 12 Dec 2022 17:07:07 +0200 Message-Id: <831qp4slt0.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 12 Dec 2022 00:57:49 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83zgcl4jra.fsf@gnu.org> <7cc9e03786c281cffdd4@heytings.org> <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > From: Gregory Heytings > cc: monnier@iro.umontreal.ca, Po Lu , > 59347@debbugs.gnu.org > > > Amazing. I thought this exhausting discussion was over, but no, Po Lu > came and "improved" the code that was agreed upon only a couple of hours > after it was pushed, disregarding this entire discussion, the docstring of > the variable that the commit introduced, the commit message, and without > asking any questions. How can that be right, how can that be acceptable? This discussion went overboard, IMO. I indeed think that Po Lu should have discussed his changes before doing them, but your reaction, in particular the revert, is also overreaction. > The name of the variable was changed, and the docstring was "improved", > and became completely wrong. It is simply untrue that this is a list of > attributes that Emacs will "ignore when realizing a face", or in fact that > this changes anything fundamental in the way Emacs realizes faces. If this is the doc string you saw, you were not looking at an up-to-date tree. I renamed the variable and rewrote the doc string soon after Po Lu made his changes; the word "ignore" (which I agree is inaccurate) is no longer there. If you still have comments on the current doc string, please speak up. > Here is again, in every possible detail, but this time in a single post, > the analysis of this subtle bug, and the rationale of the patch that was > agreed upon. I explain this bug with an concrete example, with the > 'variable-pitch' face and a font with a 'medium' weight. That example is > only meant to illustrate the bug: the same reasoning applies for other > faces and other font attributes (slant or width). Thanks. This is a good description, and it is good to have it in the bug discussion, for posterity. > From: Po Lu > Cc: Gregory Heytings > > - unsetting the "extra" attribute is not safe on the Haiku port. If this is so, why not disable that only for Haiku? > - the bitmask variable is a real nusiance for anyone trying to > debug Emacs or change the layout of the font attribute index > enumerator. "Nuisance" is an exaggeration. But I agree that using more descriptive values is more convenient, if and when someone needs to change the default value. And I have a proposal for how to do this without sacrificing performance; read on. > Just because a bug has been closed does NOT mean the change in it is no > longer subject to scrutiny. But, after such a long and painful discussion, it would have been prudent to talk first and cut the metal later. And, btw, your change had two copy/paste typos, which would have probably be avoided if you posted the patch first. > all that code takes somewhere between 2 to 4 microseconds to complete > for me, in a build with optimizations enabled. I don't know how many People are reportedly running Emacs sessions with several thousands of faces, in which case 2 to 4 usec per face could add up to a significant number. So it cannot do any harm to try to make the "usual" case faster. > From: Gregory Heytings > To: Po Lu > cc: emacs-devel@gnu.org > > >> Of course I did. That you did not read it is another thing. > > > > You did not. The only real technical argument you put forth was some > > nonsense about FOR_EACH_TAIL being slow. > > > > "Nonsense", again? Thank you! Yes, let's please avoid nasty unfriendly language. > From: Po Lu > To: Gregory Heytings > Cc: Eli Zaretskii , monnier@iro.umontreal.ca, > 59347@debbugs.gnu.org > > The fundamental problem I have with the doc string is > that it did not say what it does, or what it is supposed to debug, in a > manner users can understand. Does the current doc string have any such problems you can spot? Anyway, here's my proposal: . we change the default value of the variable to be t, and document that this stands for (:weight :width :slant) . we change the code to reset only those 3 attributes when the value is t, and to reset nothing when the value is nil . the (slower) code which loops over the list will only run if the value of the variable is neither nil nor t . we avoid resetting the :extra attribute on Haiku Is this okay with you both? I volunteer to make these changes if you agree. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 10:30:22 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 15:30:22 +0000 Received: from localhost ([127.0.0.1]:53633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4kl4-0008FY-Jx for submit@debbugs.gnu.org; Mon, 12 Dec 2022 10:30:22 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:26260) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4kl2-0008FQ-Eu for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 10:30:21 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 7233A44160A; Mon, 12 Dec 2022 10:30:13 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 19F25440C66; Mon, 12 Dec 2022 10:30:12 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1670859012; bh=zPKH8ANrS1ByGI+maIxx385uLiyLaWLpv5jMgkKCVnk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=RapQ96hsBvmIyYLDxNnk9jFpn4I0kWSHi2DX+YCbsyAmQZCMx68lyOge8iow75OYe 6RQc8BXwE7RKnm54ya4UGTgsdQGFgYQxodrHBGET3+u7IvQxEdGKY5zvmU53FxcgI0 VKS7RwglfjZ5Zp+hNDGHnTkribxlbBgKkE8jSgBRiDLF0hh3NVpwOW1RB1QjbEzKmf zJNWN3eRFM9xRg3wimh8VIq6HCCjl7pxMdEV/Ik/AW8QwM0QL6MdIw4DGkxoF66orf xCxBAClmhI9G2xvvk3I9l41a3EyOQsIbKh0vlhGIPeCT4FFIoFcRvSiJD7GTiENm9Y awEkAudT4ijVg== Received: from pastel (unknown [45.72.193.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D393312020D; Mon, 12 Dec 2022 10:30:11 -0500 (EST) From: Stefan Monnier To: Po Lu Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <87ilihjsrb.fsf@yahoo.com> (Po Lu's message of "Mon, 12 Dec 2022 09:49:28 +0800") Message-ID: References: <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> Date: Mon, 12 Dec 2022 10:30:10 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.344 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , Eli Zaretskii , 59347@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: -3.3 (---) > And what was the problem with a list? How many cycles is traversing a > list? How many time will it take for your CPU to perform everything? > Premature optimization is the root of all evil. It was not premature optimization. It was the simpler way to write the code. Your patch made the C code more complex (not just slower) for the benefit of a cleaner ELisp-level interface. A better way to get that same result would be to write an ELisp function on top of Gregory's bitmask variable. This way, you'd get a clean&simple&efficient C code still with a convenient ELisp API. Any chance someone could do that so we can move on? Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 10:45:52 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 15:45:52 +0000 Received: from localhost ([127.0.0.1]:53729 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4l04-0008Qa-2t for submit@debbugs.gnu.org; Mon, 12 Dec 2022 10:45:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38474) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4l02-0008QU-QO for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 10:45:51 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4kzw-0000Cg-91; Mon, 12 Dec 2022 10:45:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=KDmU7ScW1a5lHmPfvA11WIZahq4t4tCU1MF6LuHM5qs=; b=ajjbR/PQzuKY sXh4NSwrmZB8i1umEQD9x80c+jzz3jmvD4+Ng+3NIpkQvnAz7S2eui6ESa94BQrgIujQckASUo0/o VN6ZeyA9DNc+g+u3iwygsk3040dEbhGFlrwr4wlrIO3pmXztHlwNekuM+yfWr8OxHMnOBcdQSIAvT l+DpzPnVHuUyWdlCllouewqQCPyafJDuoslPZpwd3z/tUimD9TDNp7DU9MuZcZPr/495Ka+KbK5xa eFsRFeFA7zFV4MWGjkzXFSV5MyyaNiBzii8FjWjXsojW8Z0tu9FHwYdtKtSUwRdgGQJmaKXcNWiZ/ vTcFWnur8Y/xjZn/+OQCQg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4kzv-0000As-Py; Mon, 12 Dec 2022 10:45:44 -0500 Date: Mon, 12 Dec 2022 17:45:44 +0200 Message-Id: <83v8mgr5g7.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Mon, 12 Dec 2022 10:30:10 -0500) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <87ilihjsrb.fsf@yahoo.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: luangruo@yahoo.com, gregory@heytings.org, 59347@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: -3.3 (---) > From: Stefan Monnier > Cc: Gregory Heytings , Eli Zaretskii , > 59347@debbugs.gnu.org > Date: Mon, 12 Dec 2022 10:30:10 -0500 > > Your patch made the C code more complex (not just slower) for the > benefit of a cleaner ELisp-level interface. A better way to get that > same result would be to write an ELisp function on top of Gregory's > bitmask variable. > This way, you'd get a clean&simple&efficient C code still with > a convenient ELisp API. > > Any chance someone could do that so we can move on? I suggested a simple way out of this, I hope you like it. If there are no objections, I will implement it soon. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 11:12:26 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 16:12:26 +0000 Received: from localhost ([127.0.0.1]:53855 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4lPm-0000Ir-3O for submit@debbugs.gnu.org; Mon, 12 Dec 2022 11:12:26 -0500 Received: from heytings.org ([95.142.160.155]:55012) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4lPk-0000Il-9b for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 11:12:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670861542; bh=/r/1rm35iOhA7z52AZ+vV+LdBcrZjt0X7EMGHXLMAmA=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=oLtWWTFC5tQUvK/i8W/eBjahIUfCPED7F+Rj0M+vwR1lbk32VAkxrU97/i5GCis+A vNOWsSY62mHtc+1LkbddcHRwO+F+QbVW6CWXFaJOPvnAlIWjfAy0C4EAO4652rzAgy jRB+Obot+2IIctW/Ozu5ETqJNaRb1/5MOeAvyfH1sU03TWZ9qWFqglicqJ2nQlsDYL Fp6gXaVxEFR7edowk90vDny+ScK5d3mD5nM9SDrnSKmXStZ1jqxPVFJqgJe3vbaDom +cKC9QSo1L1ZbQlg7LHzClixVNFH5/vOkKCLQlVnkdblLkAmpggfBvW9ucDwljXlo7 JFMKAv5SzofEQ== Date: Mon, 12 Dec 2022 16:12:22 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <831qp4slt0.fsf@gnu.org> Message-ID: References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <831qp4slt0.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@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 (-) > > your reaction, in particular the revert, is also overreaction. > Okay. But note that it wasn't a blunt revert, it was accompanied with a long, precise, detailed rationale. Unlike the commit it reverted, and the revert revert. >> The fundamental problem I have with the doc string is that it did not >> say what it does, or what it is supposed to debug, in a manner users >> can understand. > > Does the current doc string have any such problems you can spot? > Yes. The gist of the original docstring, which was correct (and I think understandable even by non-experts), is this: "When the font chosen for the default face has a weight, slant or width that is not supported by other available fonts on the system, such as 'medium', Emacs may select suboptimal fonts for other faces." As I explained, the root of this bug is an undesirable interaction with the weight/slant/widht (and possibly other attributes, time will tell us) of the _default_ face, when they are set to unusual/less common values, with the fonts that are selected for _other faces_ in which these attributes are _unspecified_. That is a very specific corner case, and the current variable name and docstring does not reflect this (namely, that it's a very specific corner case, in a very specific area of code). The current docstring means something completely different. Saying for example that "face attributes will be treated as "soft" constraints when looking for suitable fonts: if an exact match is not possible, a font can be selected that is a close, but not an exact, match" means that when an attribute is _specified_ Emacs will treat that attribute value in a lax manner, which is already (and has always been) the case, and when the purpose of that variable is to affect font selection for faces whose attributes are _unspecified_. This was also important: "There is no reason to change that value except for debugging purposes." Of course users are free to ignore that warning, but at least they have been warned. > > Anyway, here's my proposal: > > . we change the default value of the variable to be t, and document that > this stands for (:weight :width :slant) > > . we change the code to reset only those 3 attributes when the value is > t, and to reset nothing when the value is nil > > . the (slower) code which loops over the list will only run if the value > of the variable is neither nil nor t > > . we avoid resetting the :extra attribute on Haiku > As long as we don't traverse a Lisp list each time a face is realized in the default case, I'm fine with this. I think Stefan's proposal (write an Elisp-level interface) is slightly better, though, because if we find out in Emacs 30 or 31 that some other attribute must also be unset, the meaning of 't' would have to change. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 12:11:03 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 17:11:03 +0000 Received: from localhost ([127.0.0.1]:54166 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4mKV-000144-CM for submit@debbugs.gnu.org; Mon, 12 Dec 2022 12:11:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53596) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4mKT-00013d-AX for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 12:11:02 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4mKN-0007MB-7K; Mon, 12 Dec 2022 12:10:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=D3LAd1AY1wc/fe0tUDnlAf5dejzCX96jXU5dOTDCUig=; b=KShbXNaJbnQ9 5KIh5+VUyYBeNtIe+LZGqHr9tpZm9KG66GleKy7GYKg62Xfx0wWuQ3xKdzFxZ4TmVX2zsdGJqRBxP o1UZ2GSj3hZ3omscxWSqACblpouZe4v4A77VnznrVFZj1Looz1njmiEJSR/1CoGnVaN0unCVjPPo3 H9m8w3wsJJzv64c6KVL7TvHqlRfdaKFGDNDCHDHQcdWYuxYKXruiMnpUF0AyvYMp/toWsPE+5PI3m m6jPbEHiqG+vK3iCtn2OYKZ+r0XdbNmaUaD9SCrgh8KEoCYIO1oWI5770T5+MLNIV5jW0sLb/b8s6 vCxDYAP4f7IK0NumcQQ7LQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4mKM-0007ga-HW; Mon, 12 Dec 2022 12:10:54 -0500 Date: Mon, 12 Dec 2022 19:10:56 +0200 Message-Id: <83o7s8r1i7.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 12 Dec 2022 16:12:22 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83tu2t4ie9.fsf@gnu.org> <7cc9e03786e324ff82ef@heytings.org> <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <831qp4slt0.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Mon, 12 Dec 2022 16:12:22 +0000 > From: Gregory Heytings > cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > Yes. The gist of the original docstring, which was correct (and I think > understandable even by non-experts), is this: > > "When the font chosen for the default face has a weight, slant or width > that is not supported by other available fonts on the system, such as > 'medium', Emacs may select suboptimal fonts for other faces." This was important when the default value was hard to understand. It is less important when the default value is easily understood and interpreted. I will add something along these lines when I will change the default to t, because then the effect will again be less clear. > As I explained, the root of this bug is an undesirable interaction with > the weight/slant/widht (and possibly other attributes, time will tell us) > of the _default_ face, when they are set to unusual/less common values, > with the fonts that are selected for _other faces_ in which these > attributes are _unspecified_. That is the case that was in your mind, but that is not the only case where realize_gui_face is called. It is also called when faces are merged (which happens a lot in Emacs), and in a few other cases. In those cases I think the situation is less black-and-white, since each attribute can come from a different face, or be inherited. > That is a very specific corner case, and the current variable name and > docstring does not reflect this (namely, that it's a very specific corner > case, in a very specific area of code). The current docstring means > something completely different. Saying for example that "face attributes > will be treated as "soft" constraints when looking for suitable fonts: if > an exact match is not possible, a font can be selected that is a close, > but not an exact, match" means that when an attribute is _specified_ Emacs > will treat that attribute value in a lax manner, which is already (and has > always been) the case, and when the purpose of that variable is to affect > font selection for faces whose attributes are _unspecified_. When you say that it "is already (and has always been) the case", AFAIU you are talking about the lower-level code, not about the level on which this new variable makes a difference. On this level, the match is required to be exact, and clearing some attributes allows it to be "lax". Otherwise, why did we make this change, if the constraints were already not "hard"? > This was also important: > > "There is no reason to change that value except for debugging purposes." I will add something like that. > > Anyway, here's my proposal: > > > > . we change the default value of the variable to be t, and document that > > this stands for (:weight :width :slant) > > > > . we change the code to reset only those 3 attributes when the value is > > t, and to reset nothing when the value is nil > > > > . the (slower) code which loops over the list will only run if the value > > of the variable is neither nil nor t > > > > . we avoid resetting the :extra attribute on Haiku > > > > As long as we don't traverse a Lisp list each time a face is realized in > the default case, I'm fine with this. OK, thanks. > I think Stefan's proposal (write an Elisp-level interface) is > slightly better, though, because if we find out in Emacs 30 or 31 > that some other attribute must also be unset, the meaning of 't' > would have to change. I wouldn't invest more energy in this at this point, since we don't yet know whether it is needed and how badly. Our hope, after all, is that no one will ever need to change the default value of this variable. From that perspective, inventing fancy functions to make it easier to customize a bitmap is overkill. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 16:29:02 2022 Received: (at 59347) by debbugs.gnu.org; 12 Dec 2022 21:29:02 +0000 Received: from localhost ([127.0.0.1]:55520 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4qM9-0004K4-PH for submit@debbugs.gnu.org; Mon, 12 Dec 2022 16:29:02 -0500 Received: from heytings.org ([95.142.160.155]:55394) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4qM8-0004Jv-KH for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 16:29:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1670880539; bh=Idd6iJVVCinbaYgavYHV1+dsma3Qv5BZ2UrPA9AUgXc=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=tSNS4rySFdXV37ZAi1NyzmcpVhM3V0tGKoHPtfhK2Sc8CzBdfQ26NZQ7FG9Mq7N4Q DCiwE12efmAc3QcH99Mvs4DDSfUL9NTlAiKO+pKnBtLscyUnMnvrIQx1PGPMbbZ4dp QNA18lcezK8+I/4euOQlvRxymeXJCMvcs9FldJXCpocWUAE+wWCFLB2uBgZzd1QkRb VZYX55pe3IdEQ92VYUBNsKaVKI3cgjaFQSzBIy0+pvq9om4z6JVNOvrzsHjgrl510z x6+muvF3UejwTj82ce0Ce3wDMf7pr5rMnVRJdUqeC9U/+CWDqev/l4xCwC9D5gtXVA 3O67BBxBayp0A== Date: Mon, 12 Dec 2022 21:28:58 +0000 From: Gregory Heytings To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <83o7s8r1i7.fsf@gnu.org> Message-ID: References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <831qp4slt0.fsf@gnu.org> <83o7s8r1i7.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@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 (-) >> Yes. The gist of the original docstring, which was correct (and I >> think understandable even by non-experts), is this: >> >> "When the font chosen for the default face has a weight, slant or width >> that is not supported by other available fonts on the system, such as >> 'medium', Emacs may select suboptimal fonts for other faces." > > This was important when the default value was hard to understand. It is > less important when the default value is easily understood and > interpreted. I will add something along these lines when I will change > the default to t, because then the effect will again be less clear. > Indeed, but what I meant is that the conditions in which that variable is useful / has an effect, and the intended effect, were indicated in the original docstring: If the font chosen for the _default_ face has an attribute value that is not supported by other available fonts on the system, then the font chosen for _other_ faces [in which that attribute is unspecified] may be suboptimal. The part between brackets was missing from the original docstring. >> As I explained, the root of this bug is an undesirable interaction with >> the weight/slant/widht (and possibly other attributes, time will tell >> us) of the _default_ face, when they are set to unusual/less common >> values, with the fonts that are selected for _other faces_ in which >> these attributes are _unspecified_. > > That is the case that was in your mind, but that is not the only case > where realize_gui_face is called. It is also called when faces are > merged (which happens a lot in Emacs), and in a few other cases. In > those cases I think the situation is less black-and-white, since each > attribute can come from a different face, or be inherited. > Would you mind giving a few more details? I don't really understand what you mean here. >> That is a very specific corner case, and the current variable name and >> docstring does not reflect this (namely, that it's a very specific >> corner case, in a very specific area of code). The current docstring >> means something completely different. Saying for example that "face >> attributes will be treated as "soft" constraints when looking for >> suitable fonts: if an exact match is not possible, a font can be >> selected that is a close, but not an exact, match" means that when an >> attribute is _specified_ Emacs will treat that attribute value in a lax >> manner, which is already (and has always been) the case, and when the >> purpose of that variable is to affect font selection for faces whose >> attributes are _unspecified_. > > When you say that it "is already (and has always been) the case", AFAIU > you are talking about the lower-level code, not about the level on which > this new variable makes a difference. On this level, the match is > required to be exact, and clearing some attributes allows it to be > "lax". Otherwise, why did we make this change, if the constraints were > already not "hard"? > Again I'm not sure I understand what you mean. What I meant is that Emacs treats the attribute values of faces in a lax way, and always did. After (set-face-attribute 'variable-pitch nil :weight 'medium) there is no guarantee that the font used for the variable-pitch face has a medium weight, IOW, that weight is not a hard constraint. The only guarantee is that, after this call, Emacs will prefer, for that face, a regular font to a light one, or a semi-bold font to a bold one. The fact that, after 6b1ed2f2c9, the attribute values of the default face became hard constraints for other faces in which these attributes are unspecified is a bug, that this change fixes. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 12 20:17:10 2022 Received: (at 59347) by debbugs.gnu.org; 13 Dec 2022 01:17:10 +0000 Received: from localhost ([127.0.0.1]:56817 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4tuw-00066w-3q for submit@debbugs.gnu.org; Mon, 12 Dec 2022 20:17:10 -0500 Received: from sonic302-20.consmr.mail.ne1.yahoo.com ([66.163.186.146]:39057) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p4tuu-00066m-Cf for 59347@debbugs.gnu.org; Mon, 12 Dec 2022 20:17:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670894222; bh=r/cz/p1GfKSADMMEbkS40FPzKGjyL6nvvWIIfWA7WD0=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To; b=D2J5uHLYGVZJBBpvp227tURdFDD2ZPQHluIkwA8zXORQDkA68LV+WwfP0jgyJrbTfMuN3wQfBCimQJveyE0DlE6fMTfwDXsbH9tGpwKDybvuIh9c4KVSUXtT90+Bp5KtntoD4NRu+gdyxo2dyy24Y39f/uwSHDUC/UGIeX0uGrqbYUCJlQDOWit4VNP2PkZE9CWY/t4HJquPaT++ZjaQErFNFPz9S7ocL7WnSWdS9TkPinrb82F/zbQt/1ezi1TUHJ/oeFiwAhcCjD3CjsFW/lJDhevQD8Fz4wLlViZeYQYNjqAKczDk44Or2B8MjRzg0g/x+htm2VJKGwAAQ830eA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1670894222; bh=G5qRLmktxopG/u7/IAS9xir/rTGNhKCVoqiqCKUICM3=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=mL+ic5g9QvPAuGP6YN73QrWYfg+peEbWPXVC8Q8eltt80Zo+kWk0Ex8AjGcdYe+OMrsspkeP90KtiGRdy1I/zjq6UNxYaGmB9tTyN6tCrPtAfgBYElYEoq1ZX4JDBB6WmQ1fVWu24GeQviRoeIncDTfKtqopJHsOpRe/AepQBM5lPWNLI5EM1IhQpDAd4JAKRuwhp3dd8WLFusxgHJlEkNOmOlhfvjiLtu0QNE8UD93DMF699r34fhth0kv+JkdrO9h/oIHepxhtY/yAUYOaS2I2DYJcUnBnf+Mop1wGQk2wyPiPuykJRv7BsMzRilmqb00WK1Ik6awku/eBu1AetQ== X-YMail-OSG: D.P1qwUVM1nTbmCtqDGttLo3Cax6XJq7P.iCbQ9XNKtNna9zvsPd9nN9BaZ8k5j s.xYjlwDo.6GeDZwAtnklOcPCQ9KasqCTGG4tTJ_zfihc_4od9reqBE2JuCoA2lb261ifFIyzOMp U.nLinr2fEzdcMb6ow81W0wWcIRvmzZMwefKhgElSXiuqLJdcrT5xxrBASYbvxTHzx1b4i.bRlW7 _KwXicnATXE3pOZ2zj2kkStKG1OqsoUI8SaUe_pcMbzoDiDqmKk5jkFblgUQKxDXHmc2L9LLwDCC Y0WVfUI7Ok4THwcjH6aofonw2lCIk4zf_QROty55.IH3a2.LAQGL.JYwQgKhwYmcyr3QqvDTOimf GtuabfagB7.eKSMIw9ngC.UilvfMW129al93y2SH9IgPR4dCtxDBWMsVrc9EznryNVGAJGTTAoRY W8FGeT_MU_qNKGVowoE3R7314tOVy8RKlJHHXZg.aqfPDfjBfreCLRNs7rLMwvirBbrZlVYXtMDf yTcag7ry7fNcTUJAAIV5P1G5hyWyjLsOncSSnkwZpF9cQhyW0r7ZkFuqFd_Zbv5lk9xWGevO0zse dOyAZ5X6xzTN1kzzjo9tFnsqRvxuJiqfOOI5SXpQt_WkF6Tf2fJk5Me7vJPN5WhkzBips4ECiNhs Gn72eroDrYAkyzMoayi_miUfVF85tuIHTPpBBZMqcpsQxU38zi5cuU8QjK5lKuaC1t_WxiV50psa zoN7mvxpTs_dR1Xv39acW6AsDaUwWU.QRz.h2DPnXzcVH_IB2oxVFF.zBFfvcre249LdVoULe0uD qZsOMah9TcUK.oyzgjlkpyzkXnlysV4buCiYB5EfsO8tkONF_w4UyOyWH58bU71X18FBhf3igV8d WQCYIxKcuDtfj0FUl55GQTATL2noUKi6NtHjmrZBopp158GHXY0dOUq7G3Agfc3HmTmm96gkmqGv L1wujecdudYM0b9VE8B5wacL82TSAXpdsI36wNrenxuySjG85UuryiufRrWK4QCwQ6hS5zEPJcLx Csvk93qpNd9qwTJe88KlZGLYz3hU7t2mM8izQsuhd6X_b9LTSg6gd17mXnPkAOCgVCnFEmeeHye0 wVKEiteb5cRlt2N0DCPjiAnpDNAq105V99gKor4N7lsk9gOm0LgWOr3VlwDnhMfWaC9za4hiMHgw bX4lTurlGpQoGILpxnlswGvr_M4sniEcBwfMzJ4xleHCgDSH7nvecgO8.ONWZOe4dUbkXdjn.tEJ PAvHpbLAw8x1mbUrkAmLX5uPuvM5e_tiel2JkHdFACZApLO91TzUaoGO_XCn8qIf31CL9RA.BwDX h4StcSlo0dMP2bfn8OCYftIh2omTq.KnoVNHh1XO7DKkmy_yc5U6BXRy.f5C2KysQztJQZ0Gv.wr iffguuCP1g8KZtwKv9uxclIxjlu0Qhco500YIEhUdY.HUB0_9IX6HmQEoopBKK11FyUj9X8B0Ykk 0imRqvO6LLNlezlovqfbrVuNYW_YpnbK6ZO1deQ3FSo_JHJQC8ZAR2gIx1Lxl80p1fF5eJdnMe9B CO.wp4r5AdeRlBM2IzU7_jI53UguOgQk4MQVS90vXrahwMd9joJuP5gZLkO1yLPUBAHQD9Cg67U. qG0GFHd8N53nucQuKjSXGo1ejoC.fsZspJ9U.8LcqxARcUCCDP1PtRMMl597Jg9OQgyNas1sWCVi Xt_uOApARRVwtg9qlwU3tx2m5cL14s5hx32mifcySEpddpdnNg4URjIe0CZ2vRmcnWuGQGjScIKE 773qbLgt.DC6SGkQEjPlj_o01_5faGU9HuCh4q1NdZ7PjlL3c8Ehp3VF2BnyRPUL09bbiGyDGgbO QmsR6ewi_4DaNwNqTf9QkmNVVUxbXhaQds2e6AHkqIs880mClwW30aVj_fkjTobkDVudIgR8G_yD cbgiisUrDA953xrDtVRPMEk4cJoLYfjpNYwBK_7f8iyZ2xaKTWP_ZumWTvCXSKeSY4euu1baSDg3 PX1FSELcQ6N2n_KEEZFPGiMlm7uiFQAqnkigJkRe7jYK1MhjOSTQOGl4ud7idCOeNQM0tVVIEh97 nXSoPdfV4XDsoOJxiWoDncH61Kd5w2TpWTC.Gs7utA1wfIsf35u6VpCBlA56QwaEJCBfdBjTtIxM kbyhHbZ40yFveFV4_YK3nmiAMsL3Ztpm1_7MLtJ37vKUYX5YRDJ0jXQ1AkD11LwE9hQpud5Xy_2X 1eVfiULq.1w.AoP2hBHMSOx.aGGnJzRpYi9marx3rX_3ctAovjpMFVgz9dTWuD4y497s- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ne1.yahoo.com with HTTP; Tue, 13 Dec 2022 01:17:02 +0000 Received: by hermes--production-sg3-b666c6484-s6ncm (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 707e7f3e38758a796ee27809b947077a; Tue, 13 Dec 2022 01:16:55 +0000 (UTC) From: Po Lu To: Eli Zaretskii Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored In-Reply-To: <831qp4slt0.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 12 Dec 2022 17:07:07 +0200") References: <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <831qp4slt0.fsf@gnu.org> Date: Tue, 13 Dec 2022 09:16:48 +0800 Message-ID: <87mt7sgl1b.fsf@yahoo.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20926 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 1471 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59347 Cc: Gregory Heytings , monnier@iro.umontreal.ca, 59347@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 (-) Eli Zaretskii writes: > If this is so, why not disable that only for Haiku? It's also rather pointless to disable just :extra, as it's a property list of extra properties, which should have their individual options. > "Nuisance" is an exaggeration. But I agree that using more > descriptive values is more convenient, if and when someone needs to > change the default value. And I have a proposal for how to do this > without sacrificing performance; read on. > People are reportedly running Emacs sessions with several thousands of > faces, in which case 2 to 4 usec per face could add up to a > significant number. So it cannot do any harm to try to make the > "usual" case faster. I agree it can't do harm, but 2 to 4 usec times a few thousand faces is still probably going to be less than 50 msec, so that still won't hurt. And that's assuming all the faces are realized at once. > Anyway, here's my proposal: > > . we change the default value of the variable to be t, and document > that this stands for (:weight :width :slant) > . we change the code to reset only those 3 attributes when the > value is t, and to reset nothing when the value is nil > . the (slower) code which loops over the list will only run if the > value of the variable is neither nil nor t > . we avoid resetting the :extra attribute on Haiku > > Is this okay with you both? I volunteer to make these changes if you > agree. I'm fine with that, thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 13 06:58:37 2022 Received: (at 59347) by debbugs.gnu.org; 13 Dec 2022 11:58:37 +0000 Received: from localhost ([127.0.0.1]:59879 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p53vg-00042o-KD for submit@debbugs.gnu.org; Tue, 13 Dec 2022 06:58:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p53vf-00042h-5s for 59347@debbugs.gnu.org; Tue, 13 Dec 2022 06:58:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p53vZ-00089b-9O; Tue, 13 Dec 2022 06:58:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=zJWHE4L2vkzuIYUYWG0/x/CTF5uX6d1RwxbUr0fWo+w=; b=HO2oG9LLWfEk zwWAknkCkw6t7ZxdDb0AhZw36MO48sj6gBn7McgxfLHMaji2nZ6Ua+7zT1XItUjYU/oobR6NhYt/3 QkBy81xyaEd00hAzDZNT0yN1FRZZXzLkKuwe1j44ns/yjsVcOhdnSLsh4DstwGrmb3FDubnZF5hsp FTsxkVrZRO0nQXkm+iEfAxuprCMmJQolZbGK9sctqtZH5Z57TDA0RYePnM5mk9u65y3A3mRM/h1jf RW2Oo8TUXmHZ6NIrlcgC9xBxN/jZP91Yiw++VJH2vN4kJjipEeYDUAsFZX234sNCoqPskRGCa2I9W ILiZuA5VRRAUZgIxWHdLEA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p53vY-0002Ax-NR; Tue, 13 Dec 2022 06:58:29 -0500 Date: Tue, 13 Dec 2022 13:58:32 +0200 Message-Id: <831qp3qzvb.fsf@gnu.org> From: Eli Zaretskii To: Gregory Heytings In-Reply-To: (message from Gregory Heytings on Mon, 12 Dec 2022 21:28:58 +0000) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83bkp04gjl.fsf@gnu.org> <83leo42vm9.fsf@gnu.org> <0d1ea3007fd94b7ae0b1@heytings.org> <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <831qp4slt0.fsf@gnu.org> <83o7s8r1i7.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > Date: Mon, 12 Dec 2022 21:28:58 +0000 > From: Gregory Heytings > cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, 59347@debbugs.gnu.org > > > >> "When the font chosen for the default face has a weight, slant or width > >> that is not supported by other available fonts on the system, such as > >> 'medium', Emacs may select suboptimal fonts for other faces." > > > > This was important when the default value was hard to understand. It is > > less important when the default value is easily understood and > > interpreted. I will add something along these lines when I will change > > the default to t, because then the effect will again be less clear. > > > > Indeed, but what I meant is that the conditions in which that variable is > useful / has an effect, and the intended effect, were indicated in the > original docstring: > > If the font chosen for the _default_ face has an attribute value that is > not supported by other available fonts on the system, > > then the font chosen for _other_ faces [in which that attribute is > unspecified] may be suboptimal. > > The part between brackets was missing from the original docstring. I don't see it as an important part of the doc string. The purpose of the doc string is not to explain how Emacs finds fonts, it is to explain what's this variable's effect on that. > >> As I explained, the root of this bug is an undesirable interaction with > >> the weight/slant/widht (and possibly other attributes, time will tell > >> us) of the _default_ face, when they are set to unusual/less common > >> values, with the fonts that are selected for _other faces_ in which > >> these attributes are _unspecified_. > > > > That is the case that was in your mind, but that is not the only case > > where realize_gui_face is called. It is also called when faces are > > merged (which happens a lot in Emacs), and in a few other cases. In > > those cases I think the situation is less black-and-white, since each > > attribute can come from a different face, or be inherited. > > > > Would you mind giving a few more details? I don't really understand what > you mean here. I don't really see what more could I say. I'm talking about face merging, when none of the faces is 'default'. If this is still not enough, please look at the callers of realize_gui_face, and I hope you will see what I mean. > >> That is a very specific corner case, and the current variable name and > >> docstring does not reflect this (namely, that it's a very specific > >> corner case, in a very specific area of code). The current docstring > >> means something completely different. Saying for example that "face > >> attributes will be treated as "soft" constraints when looking for > >> suitable fonts: if an exact match is not possible, a font can be > >> selected that is a close, but not an exact, match" means that when an > >> attribute is _specified_ Emacs will treat that attribute value in a lax > >> manner, which is already (and has always been) the case, and when the > >> purpose of that variable is to affect font selection for faces whose > >> attributes are _unspecified_. > > > > When you say that it "is already (and has always been) the case", AFAIU > > you are talking about the lower-level code, not about the level on which > > this new variable makes a difference. On this level, the match is > > required to be exact, and clearing some attributes allows it to be > > "lax". Otherwise, why did we make this change, if the constraints were > > already not "hard"? > > Again I'm not sure I understand what you mean. What I meant is that Emacs > treats the attribute values of faces in a lax way, and always did. After > > (set-face-attribute 'variable-pitch nil :weight 'medium) > > there is no guarantee that the font used for the variable-pitch face has a > medium weight, IOW, that weight is not a hard constraint. The only > guarantee is that, after this call, Emacs will prefer, for that face, a > regular font to a light one, or a semi-bold font to a bold one. > > The fact that, after 6b1ed2f2c9, the attribute values of the default face > became hard constraints for other faces in which these attributes are > unspecified is a bug, that this change fixes. Look farther back in history than just 6b1ed2f2c9, and you will see that 6b1ed2f2c9 simply restored the situation which existed until not-so-long before that. It is NOT the change which introduced this issue, it is a change that fixed another issue. So yes, these attributes were "hard" constraints for most of the history of the current display engine. And for good reasons, I might add. From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 13 10:40:14 2022 Received: (at 59347) by debbugs.gnu.org; 13 Dec 2022 15:40:14 +0000 Received: from localhost ([127.0.0.1]:32907 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p57O9-0005ON-LF for submit@debbugs.gnu.org; Tue, 13 Dec 2022 10:40:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47672) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p57O7-0005OF-Je for 59347@debbugs.gnu.org; Tue, 13 Dec 2022 10:40:12 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p57O1-0003fw-WE; Tue, 13 Dec 2022 10:40:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=z6NF8MuB/GM6f8UZ36sHKm/kidicYCKG3qUPodyUBNQ=; b=CKFF9I10QDbK yVCVK3IbHIQ3O26Rru1t/7DksqU6St7sNpoZUvBHEuoEFe4uAtgFsaJbc/8nJ3kgSBTjQKb5usoBE UQ/Gyuw1mzVNqzb23Qva+++6CX7CzzwElkjQZ1jkQM+ojH4BkjCoyu+H/2Da2kdqWfEmP/nx/gzbZ NaM5+Xiwmu47nmBljiWbedN6VHd7+nHQf0uy0HsBy0s/z0HHvSCF50gr+T5x/5aR4mxe9v6zIvSBq EVgOOINqA1f//BKSb46FgKWr4Tsu5a2evdR06PR7Z2sbJS9pbarWRzk4SWqkB+Cks9qI1tocaq8xK yYfZoSs+UaLYtcV8lb8xbA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p57Nz-0001JC-CL; Tue, 13 Dec 2022 10:40:04 -0500 Date: Tue, 13 Dec 2022 17:40:07 +0200 Message-Id: <831qp3pb1k.fsf@gnu.org> From: Eli Zaretskii To: Po Lu In-Reply-To: <87mt7sgl1b.fsf@yahoo.com> (message from Po Lu on Tue, 13 Dec 2022 09:16:48 +0800) Subject: Re: bug#59347: 29.0.50; `:family` face setting ignored References: <83r0xv1649.fsf@gnu.org> <0d1ea3007f532a493429@heytings.org> <83cz9f12bh.fsf@gnu.org> <835yewleyn.fsf@gnu.org> <83tu2b9rlx.fsf@gnu.org> <83k0347gtu.fsf@gnu.org> <83v8mm2ug7.fsf@gnu.org> <83cz8u2d6u.fsf@gnu.org> <831qp93nsc.fsf@gnu.org> <1a7e3acf3578520feda7@heytings.org> <831qp4slt0.fsf@gnu.org> <87mt7sgl1b.fsf@yahoo.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59347 Cc: gregory@heytings.org, monnier@iro.umontreal.ca, 59347@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: -3.3 (---) > From: Po Lu > Cc: Gregory Heytings , monnier@iro.umontreal.ca, > 59347@debbugs.gnu.org > Date: Tue, 13 Dec 2022 09:16:48 +0800 > > Eli Zaretskii writes: > > > If this is so, why not disable that only for Haiku? > > It's also rather pointless to disable just :extra, as it's a property > list of extra properties, which should have their individual options. I eventually came to the conclusion that there's no such attribute as :extra, it is just our internal implementation detail. So I removed it from this stuff. > > Is this okay with you both? I volunteer to make these changes if you > > agree. > > I'm fine with that, thanks. OK, so I've now made those changes on the emacs-29 branch. From unknown Thu Jun 19 14:11:30 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 11 Jan 2023 12:24:04 +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