BREAKING: Disable mixed fonts by default

This fixes issue 196, as reported by Johannes Grødem:
<https://gitlab.com/protesilaos/modus-themes/-/issues/196>.

The problem is also apparent elsewhere:

1. <https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg00098.html>.
2. <https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-10/msg00095.html>.
This commit is contained in:
Protesilaos Stavrou 2021-10-02 09:13:45 +03:00
parent 392ebb115b
commit 9b4900ee2f
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA
3 changed files with 182 additions and 153 deletions

View file

@ -95,7 +95,7 @@ Customization Options
* Bold constructs:: Toggle bold constructs in code
* Italic constructs:: Toggle italic font constructs in code
* Syntax styles:: Choose the overall aesthetic of code syntax
* No mixed fonts:: Toggle mixing of font families
* Mixed fonts:: Toggle mixing of font families
* Link styles:: Choose among several styles, with or without underline
* Command prompts:: Choose among plain, subtle, or intense prompts
* Mode line:: Choose among several styles, with or without borders
@ -520,7 +520,7 @@ of this manual.
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs nil
modus-themes-no-mixed-fonts nil
modus-themes-mixed-fonts nil
modus-themes-subtle-line-numbers nil
modus-themes-success-deuteranopia t
modus-themes-tabs-accented t
@ -608,7 +608,7 @@ of this manual.
* Bold constructs:: Toggle bold constructs in code
* Italic constructs:: Toggle italic font constructs in code
* Syntax styles:: Choose the overall aesthetic of code syntax
* No mixed fonts:: Toggle mixing of font families
* Mixed fonts:: Toggle mixing of font families
* Link styles:: Choose among several styles, with or without underline
* Command prompts:: Choose among plain, subtle, or intense prompts
* Mode line:: Choose among several styles, with or without borders
@ -729,7 +729,7 @@ This typically affects documentation strings and code comments.
faces (DIY).

File: modus-themes.info, Node: Syntax styles, Next: No mixed fonts, Prev: Italic constructs, Up: Customization Options
File: modus-themes.info, Node: Syntax styles, Next: Mixed fonts, Prev: Italic constructs, Up: Customization Options
4.5 Option for syntax highlighting
==================================
@ -786,36 +786,40 @@ bold weight or italic text: modus-themes-bold-constructs and
*note Option for more italic constructs: Italic constructs.

File: modus-themes.info, Node: No mixed fonts, Next: Link styles, Prev: Syntax styles, Up: Customization Options
File: modus-themes.info, Node: Mixed fonts, Next: Link styles, Prev: Syntax styles, Up: Customization Options
4.6 Option for no font mixing
=============================
4.6 Option for font mixing
==========================
Symbol: modus-themes-no-mixed-fonts
[ Revised as part of 1.7.0-dev ]
Symbol: modus-themes-mixed-fonts
Possible values:
1. nil (default)
2. t
By default, the themes configure some spacing-sensitive faces like
Org tables and code blocks to always inherit from the fixed-pitch
face. This is to ensure that those constructs remain monospaced even
when users opt for a mode that remaps typeface families, such as the
built-in M-x variable-pitch-mode. Otherwise the layout would appear
broken, due to how spacing is done. To disable this behaviour, set the
option to t.
When set to non-nil (t), configure some spacing-sensitive faces
like Org tables and code blocks to always inherit from the fixed-pitch
face. This is to ensure that certain constructs like code blocks and
tables remain monospaced even when users opt for a mode that remaps
typeface families, such as the built-in M-x variable-pitch-mode.
Otherwise the layout would appear broken, due to how spacing is done.
Users may prefer to use another package for handling mixed typeface
configurations, rather than letting the theme do it, perhaps because a
purpose-specific package has extra functionality. Two possible options
are org-variable-pitch and mixed-pitch.
For a consistent experience, user may need to specify the font family
of the fixed-pitch face.
*note Font configurations for Org and others: Font configurations for
Org and others (DIY).
Furthermore, users may prefer to use another package for handling
mixed typeface configurations, rather than letting the theme do it,
perhaps because a purpose-specific package has extra functionality. Two
possible options are org-variable-pitch and mixed-pitch.

File: modus-themes.info, Node: Link styles, Next: Command prompts, Prev: No mixed fonts, Up: Customization Options
File: modus-themes.info, Node: Link styles, Next: Command prompts, Prev: Mixed fonts, Up: Customization Options
4.7 Option for links
====================
@ -2548,7 +2552,7 @@ File: modus-themes.info, Node: Font configurations for Org and others (DIY), N
The themes are designed to cope well with mixed font configurations.
*note Option for no font mixing: No mixed fonts.
*note Option for no font mixing: Mixed fonts.
This mostly concerns org-mode and markdown-mode, though expect to
find it elsewhere like in Info-mode.
@ -4439,19 +4443,19 @@ Ideas and user feedback
Santana, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Farasha
Euker, Feng Shu, Gautier Ponsinet, Gerry Agbobada, Gianluca
Recchia, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, Iris
Garcia, Jeremy Friesen, Jerry Zhang, John Haman, Joshua OConnor,
Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg, Manuel
Uberti, Mark Burton, Markus Beppler, Mauro Aranda, Michael
Goldenberg, Morgan Smith, Murilo Pereira, Nicky van Foreest,
Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete Kazmier,
Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Roman Rudakov,
Ryan Phillips, Rudolf Adamkovič, Sam Kleinman, Shreyas Ragavan,
Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas Heartman, Trey
Merkley, Togan Muftuoglu, Toon Claes, Uri Sharf, Utkarsh Singh,
Vincent Foley. As well as users: Ben, CsBigDataHub1, Emacs
Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, TheBlob42,
Trey, bepolymathe, doolio, fleimgruber, iSeeU, jixiuf, okamsn,
pRot0ta1p.
Garcia, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman,
Joshua OConnor, Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev,
Len Trigg, Manuel Uberti, Mark Burton, Markus Beppler, Mauro
Aranda, Michael Goldenberg, Morgan Smith, Murilo Pereira, Nicky van
Foreest, Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete
Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Roman
Rudakov, Ryan Phillips, Rudolf Adamkovič, Sam Kleinman, Shreyas
Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas
Heartman, Trey Merkley, Togan Muftuoglu, Toon Claes, Uri Sharf,
Utkarsh Singh, Vincent Foley. As well as users: Ben,
CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, Fredrik, Moesasji,
Nick, TheBlob42, Trey, bepolymathe, doolio, fleimgruber, iSeeU,
jixiuf, okamsn, pRot0ta1p.
Packaging
Basil L. Contovounesios, Eli Zaretskii, Glenn Morris, Mauro Aranda,
@ -5058,7 +5062,7 @@ B.2 Variable index
* modus-themes-links: Link styles. (line 6)
* modus-themes-mail-citations: Mail citations. (line 6)
* modus-themes-mode-line: Mode line. (line 6)
* modus-themes-no-mixed-fonts: No mixed fonts. (line 6)
* modus-themes-no-mixed-fonts: Mixed fonts. (line 6)
* modus-themes-operandi-color-overrides: Override colors (DIY). (line 6)
* modus-themes-org-agenda: Org agenda. (line 6)
* modus-themes-org-blocks: Org mode blocks. (line 6)
@ -5149,90 +5153,90 @@ Node: Enable and load12533
Node: Sample configuration for use-package15522
Node: Differences between loading and enabling16900
Node: Customization Options18940
Node: Custom reload theme25470
Node: Success' color-code26005
Node: Bold constructs26942
Node: Italic constructs27731
Node: Syntax styles28449
Node: No mixed fonts30482
Node: Link styles31577
Node: Command prompts33948
Node: Mode line35641
Node: Tab style39566
Node: Completion UIs40153
Node: Mail citations42024
Node: Fringes42877
Node: Language checkers43539
Node: Line highlighting45860
Node: Line numbers47375
Node: Matching parentheses48453
Node: Active region49745
Node: Diffs51074
Node: Org mode blocks53013
Node: Org agenda54891
Node: Heading styles61847
Node: Scaled headings64889
Node: Scaled heading sizes65492
Node: UI typeface69039
Node: Headings' typeface69885
Node: Advanced customization (do-it-yourself)70509
Node: Per-theme customization settings (DIY)71914
Node: Case-by-case face specs using the themes' palette (DIY)73260
Node: Face specs at scale using the themes' palette (DIY)77724
Node: Remap face with local value (DIY)82541
Node: Cycle through arbitrary colors (DIY)85066
Node: Override colors (DIY)91632
Node: Override color saturation (DIY)96525
Node: Font configurations for Org and others (DIY)102278
Ref: Font configurations for Org and others (DIY)-Footnote-1104926
Node: Configure bold and italic faces (DIY)105113
Node: Custom Org user faces (DIY)109159
Node: Update Org block delimiter fontification (DIY)112843
Node: Measure color contrast (DIY)114803
Node: Load theme depending on time of day (DIY)117594
Node: Backdrop for pdf-tools (DIY)118634
Node: A theme-agnostic hook for theme loading (DIY)121423
Node: Face coverage123813
Node: Supported packages124282
Node: Indirectly covered packages131246
Node: Notes on individual packages131910
Node: Note on avy hints132968
Node: Note on calendarel weekday and weekend colors134136
Node: Note on underlines in compilation buffers135319
Node: Note on inline Latex in Org buffers136168
Node: Note on dimmerel136778
Node: Note on display-fill-column-indicator-mode138263
Node: Note on highlight-parenthesesel139879
Node: Note on mmm-modeel background colors145885
Node: Note for prism148253
Node: Note for god-mode151460
Node: Note on company-mode overlay pop-up153134
Ref: Note on company-mode overlay pop-up-Footnote-1153824
Ref: Note on company-mode overlay pop-up-Footnote-2153891
Node: Note on ERC escaped color sequences153946
Ref: Note on ERC escaped color sequences-Footnote-1155374
Node: Note on powerline or spaceline155484
Node: Note on SHR colors155898
Node: Note on EWW and Elfeed fonts (SHR fonts)156333
Node: Note on Helm grep157078
Node: Note on vc-annotate-background-mode158565
Node: Note on pdf-tools link hints159450
Node: Frequently Asked Questions (FAQ)161882
Node: Is the contrast ratio about adjacent colors?162456
Node: What does it mean to avoid exaggerations?163969
Node: Why are colors mostly variants of blue magenta cyan?165804
Node: What is the best setup for legibility?170151
Node: Contributing172769
Node: Sources of the themes173172
Node: Issues you can help with173802
Node: Patches require copyright assignment to the FSF175002
Node: Acknowledgements177297
Node: Meta179915
Node: GNU Free Documentation License182061
Node: Indices207413
Node: Function index207592
Node: Variable index208829
Node: Concept index211043
Node: Custom reload theme25467
Node: Success' color-code26002
Node: Bold constructs26939
Node: Italic constructs27728
Node: Syntax styles28446
Node: Mixed fonts30476
Node: Link styles31696
Node: Command prompts34064
Node: Mode line35757
Node: Tab style39682
Node: Completion UIs40269
Node: Mail citations42140
Node: Fringes42993
Node: Language checkers43655
Node: Line highlighting45976
Node: Line numbers47491
Node: Matching parentheses48569
Node: Active region49861
Node: Diffs51190
Node: Org mode blocks53129
Node: Org agenda55007
Node: Heading styles61963
Node: Scaled headings65005
Node: Scaled heading sizes65608
Node: UI typeface69155
Node: Headings' typeface70001
Node: Advanced customization (do-it-yourself)70625
Node: Per-theme customization settings (DIY)72030
Node: Case-by-case face specs using the themes' palette (DIY)73376
Node: Face specs at scale using the themes' palette (DIY)77840
Node: Remap face with local value (DIY)82657
Node: Cycle through arbitrary colors (DIY)85182
Node: Override colors (DIY)91748
Node: Override color saturation (DIY)96641
Node: Font configurations for Org and others (DIY)102394
Ref: Font configurations for Org and others (DIY)-Footnote-1105039
Node: Configure bold and italic faces (DIY)105226
Node: Custom Org user faces (DIY)109272
Node: Update Org block delimiter fontification (DIY)112956
Node: Measure color contrast (DIY)114916
Node: Load theme depending on time of day (DIY)117707
Node: Backdrop for pdf-tools (DIY)118747
Node: A theme-agnostic hook for theme loading (DIY)121536
Node: Face coverage123926
Node: Supported packages124395
Node: Indirectly covered packages131359
Node: Notes on individual packages132023
Node: Note on avy hints133081
Node: Note on calendarel weekday and weekend colors134249
Node: Note on underlines in compilation buffers135432
Node: Note on inline Latex in Org buffers136281
Node: Note on dimmerel136891
Node: Note on display-fill-column-indicator-mode138376
Node: Note on highlight-parenthesesel139992
Node: Note on mmm-modeel background colors145998
Node: Note for prism148366
Node: Note for god-mode151573
Node: Note on company-mode overlay pop-up153247
Ref: Note on company-mode overlay pop-up-Footnote-1153937
Ref: Note on company-mode overlay pop-up-Footnote-2154004
Node: Note on ERC escaped color sequences154059
Ref: Note on ERC escaped color sequences-Footnote-1155487
Node: Note on powerline or spaceline155597
Node: Note on SHR colors156011
Node: Note on EWW and Elfeed fonts (SHR fonts)156446
Node: Note on Helm grep157191
Node: Note on vc-annotate-background-mode158678
Node: Note on pdf-tools link hints159563
Node: Frequently Asked Questions (FAQ)161995
Node: Is the contrast ratio about adjacent colors?162569
Node: What does it mean to avoid exaggerations?164082
Node: Why are colors mostly variants of blue magenta cyan?165917
Node: What is the best setup for legibility?170264
Node: Contributing172882
Node: Sources of the themes173285
Node: Issues you can help with173915
Node: Patches require copyright assignment to the FSF175115
Node: Acknowledgements177410
Node: Meta180046
Node: GNU Free Documentation License182192
Node: Indices207544
Node: Function index207723
Node: Variable index208960
Node: Concept index211174

End Tag Table

View file

@ -380,7 +380,7 @@ this manual.
#+begin_src emacs-lisp
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs nil
modus-themes-no-mixed-fonts nil
modus-themes-mixed-fonts nil
modus-themes-subtle-line-numbers nil
modus-themes-success-deuteranopia t
modus-themes-tabs-accented t
@ -629,36 +629,40 @@ weight or italic text: ~modus-themes-bold-constructs~ and
[[#h:977c900d-0d6d-4dbb-82d9-c2aae69543d6][Option for more italic constructs]].
** Option for no font mixing
** Option for font mixing
:properties:
:alt_title: No mixed fonts
:alt_title: Mixed fonts
:description: Toggle mixing of font families
:custom_id: h:115e6c23-ee35-4a16-8cef-e2fcbb08e28b
:end:
#+vindex: modus-themes-no-mixed-fonts
Symbol: ~modus-themes-no-mixed-fonts~
[ Revised as part of {{{development-version}}} ]
Symbol: ~modus-themes-mixed-fonts~
Possible values:
1. ~nil~ (default)
2. ~t~
By default, the themes configure some spacing-sensitive faces like Org
When set to non-nil (~t~), configure some spacing-sensitive faces like Org
tables and code blocks to always inherit from the ~fixed-pitch~ face.
This is to ensure that those constructs remain monospaced even when
users opt for a mode that remaps typeface families, such as the built-in
{{{kbd(M-x variable-pitch-mode)}}}. Otherwise the layout would appear
broken, due to how spacing is done. To disable this behaviour, set the
option to ~t~.
This is to ensure that certain constructs like code blocks and tables
remain monospaced even when users opt for a mode that remaps typeface
families, such as the built-in {{{kbd(M-x variable-pitch-mode)}}}. Otherwise
the layout would appear broken, due to how spacing is done.
Users may prefer to use another package for handling mixed typeface
configurations, rather than letting the theme do it, perhaps because a
purpose-specific package has extra functionality. Two possible options
are ~org-variable-pitch~ and ~mixed-pitch~.
For a consistent experience, user may need to specify the font family of
the ~fixed-pitch~ face.
[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
Furthermore, users may prefer to use another package for handling mixed
typeface configurations, rather than letting the theme do it, perhaps
because a purpose-specific package has extra functionality. Two
possible options are ~org-variable-pitch~ and ~mixed-pitch~.
** Option for links
:properties:
:alt_title: Link styles
@ -4345,18 +4349,18 @@ The Modus themes are a collective effort. Every bit of work matters.
Edmondson, Davor Rotim, Divan Santana, Eliraz Kedmi, Emanuele Michele
Alberto Monterosso, Farasha Euker, Feng Shu, Gautier Ponsinet, Gerry
Agbobada, Gianluca Recchia, Gustavo Barros, Hörmetjan Yiltiz, Ilja
Kocken, Iris Garcia, Jeremy Friesen, Jerry Zhang, John Haman, Joshua
O'Connor, Kevin Fleming, Kévin Le Gouguec, Kostadin Ninev, Len Trigg,
Manuel Uberti, Mark Burton, Markus Beppler, Mauro Aranda, Michael
Goldenberg, Morgan Smith, Murilo Pereira, Nicky van Foreest, Nicolas
De Jaeghere, Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu,
Philip Kaludercic, Pierre Téchoueyres, Roman Rudakov, Ryan Phillips,
Rudolf Adamkovič, Sam Kleinman, Shreyas Ragavan, Simon Pugnet, Tassilo
Horn, Thibaut Verron, Thomas Heartman, Trey Merkley, Togan Muftuoglu,
Toon Claes, Uri Sharf, Utkarsh Singh, Vincent Foley. As well as
users: Ben, CsBigDataHub1, Emacs Contrib, Eugene, Fourchaux, Fredrik,
Moesasji, Nick, TheBlob42, Trey, bepolymathe, doolio, fleimgruber,
iSeeU, jixiuf, okamsn, pRot0ta1p.
Kocken, Iris Garcia, Jeremy Friesen, Jerry Zhang, Johannes Grødem,
John Haman, Joshua O'Connor, Kevin Fleming, Kévin Le Gouguec, Kostadin
Ninev, Len Trigg, Manuel Uberti, Mark Burton, Markus Beppler, Mauro
Aranda, Michael Goldenberg, Morgan Smith, Murilo Pereira, Nicky van
Foreest, Nicolas De Jaeghere, Paul Poloskov, Pengji Zhang, Pete
Kazmier, Peter Wu, Philip Kaludercic, Pierre Téchoueyres, Roman
Rudakov, Ryan Phillips, Rudolf Adamkovič, Sam Kleinman, Shreyas
Ragavan, Simon Pugnet, Tassilo Horn, Thibaut Verron, Thomas Heartman,
Trey Merkley, Togan Muftuoglu, Toon Claes, Uri Sharf, Utkarsh Singh,
Vincent Foley. As well as users: Ben, CsBigDataHub1, Emacs Contrib,
Eugene, Fourchaux, Fredrik, Moesasji, Nick, TheBlob42, Trey,
bepolymathe, doolio, fleimgruber, iSeeU, jixiuf, okamsn, pRot0ta1p.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, Glenn
Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core Emacs),

View file

@ -5,7 +5,7 @@
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; URL: https://gitlab.com/protesilaos/modus-themes
;; Version: 1.6.0
;; Last-Modified: <2021-09-30 19:53:44 +0300>
;; Last-Modified: <2021-10-02 09:12:26 +0300>
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
@ -40,7 +40,7 @@
;; modus-themes-bold-constructs (boolean)
;; modus-themes-inhibit-reload (boolean)
;; modus-themes-italic-constructs (boolean)
;; modus-themes-no-mixed-fonts (boolean)
;; modus-themes-mixed-fonts (boolean)
;; modus-themes-scale-headings (boolean)
;; modus-themes-subtle-line-numbers (boolean)
;; modus-themes-success-deuteranopia (boolean)
@ -1475,7 +1475,7 @@ The actual styling of the face is done by `modus-themes-faces'."
(defface modus-themes-variable-pitch nil
"Generic face for applying a conditional `variable-pitch'.
This behaves in accordance with `modus-themes-no-mixed-fonts',
This behaves in accordance with `modus-themes-mixed-fonts',
`modus-themes-variable-pitch-headings' for all heading levels,
and `modus-themes-variable-pitch-ui'.
@ -1484,7 +1484,7 @@ The actual styling of the face is done by `modus-themes-faces'."
(defface modus-themes-fixed-pitch nil
"Generic face for applying a conditional `fixed-pitch'.
This behaves in accordance with `modus-themes-no-mixed-fonts'.
This behaves in accordance with `modus-themes-mixed-fonts'.
The actual styling of the face is done by `modus-themes-faces'."
:group 'modus-theme-faces)
@ -1801,6 +1801,27 @@ mixing fonts."
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) No mixed fonts"))
(define-obsolete-variable-alias
'modus-themes-no-mixed-fonts
'modus-themes-mixed-fonts "On 2021-10-02 for version 1.7.0")
(defcustom modus-themes-mixed-fonts nil
"Enable inheritance from `fixed-pitch' in some faces.
This is done to allow spacing-sensitive constructs, such as Org
tables and code blocks, to remain monospaced when users opt for
something like the command `variable-pitch-mode'.
Users may need to explicitly configure the font family of
`fixed-pitch' in order to get a consistent experience."
:group 'modus-themes
:package-version '(modus-themes . "1.7.0")
:version "29.1"
:type 'boolean
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Mixed fonts"))
(defconst modus-themes--headings-choice
'(set :tag "Properties" :greedy t
(const :tag "Background color" background)
@ -3030,7 +3051,7 @@ Those are stored in `modus-themes-faces' and
(defun modus-themes--fixed-pitch ()
"Conditional application of `fixed-pitch' inheritance."
(unless modus-themes-no-mixed-fonts
(when modus-themes-mixed-fonts
(list :inherit 'fixed-pitch)))
(defun modus-themes--variable-pitch ()
@ -6655,9 +6676,9 @@ by virtue of calling either of `modus-themes-load-operandi' and
:extend t)))
`(org-column ((,class :background ,bg-alt)))
`(org-column-title ((,class :inherit bold :underline t :background ,bg-alt)))
`(org-date ((,class :inherit ,(if modus-themes-no-mixed-fonts
'button
'(button fixed-pitch))
`(org-date ((,class :inherit ,(if modus-themes-mixed-fonts
'(button fixed-pitch)
'button)
,@(modus-themes--link-color
cyan cyan-faint))))
`(org-date-selected ((,class :inherit bold :foreground ,blue-alt :inverse-video t)))