フォントサイズの相対的な変化に問題がなければ、:root 要素で異なるフォントサイズを設定するだけで、em が自動的にそれに合わせてスケーリングされます。
何か見落としているのでしょうか、それとも単にテーマやプラグインに誤用を招くリスクを与えたくないという事情でしょうか?これらすべての変数を !default で宣言する(https://github.com/discourse/discourse/pull/12741)のは、これらをオーバーライドできるようにするための簡単な方法のように思えます。
以前は機能しなかったのは、コアスタイルがテーマによる上書きよりも先にコンパイルされていたからではないでしょうか?少なくとも色の面ではそうでした。SCSS のコンパイル方法についていくつか変更があったと聞いていますので、もしかしたらその問題はもう存在しないかもしれません。
また、!default では不十分な場合、色の場合と同様にこれらを CSS カスタムプロパティに切り替えることも可能です。
Derp、その通りですね。カスタムプロパティが結局は正解のようです!![]()
ご確認用のリファクタリング案です。これにより、任意のスタイルシートが変数を使用または更新できるようになる可能性があります:
少し理解が深まりました。現在、ここで定義されているすべての変数は、テーマやプラグインから読み取りは可能ですが、新しい値を書き込むことはできません。これは、各スタイルシートが個別にコンパイルされるためです。CSS カスタムプロパティを追加することで、テーマやプラグインが変数を動的に上書きできるようになり、依存するすべてのスタイルシートが新しい値を取得できるようになります。![]()
@bekircem さん、上記のマージが完了しましたので、今度は (クライアント側の) CSS プロパティを再定義することで、ベースのフォント変数をオーバーライドするテーマを追加できるようになりました:
// これらの値を使用する必要はありませんが、イメージはつかめるはずです:
:root {
--font-down-1: 0.8em;
--font-0: 2em;
--font-up-1: 3em;
--font-up-2: 4em;
}