これは複雑すぎてその場で把握することができず、すでに時間予算を使い果たしてしまったため、部分的な回答をしなければなりません。
顔はフレーム プロパティです。フレームは同時に複数のバッファを表示できます。モードはバッファ プロパティです。モードごとに顔を変える方法を尋ねます。これらすべてを組み合わせると、この質問には完全に正しい答えが 1 つもないように思えます。
特定のフレームが複数のバッファーを表示しないと仮定すると、目的の答えを概算できます。実際にはこのようなものでそれを達成できますが、特別な表示正規表現と、マークダウンモードのバッファー名に一致する一連の正規表現を使用するように変更されています。
(append special-display-buffer-names
'("*VC-log*"
"*Help*"
("*Completions*"
(height . 25)
(font . "8x13"))))
ただし、これはおそらくあなたが望むものではありません。あなたの質問は、単一のフレームの顔のプロパティを変更することを暗示しているようです。
フレームが一度に複数のバッファーを表示することはないと仮定すると、switch-to-buffer のアドバイスを試すことができます。しかし、それは十分に低いレベルではないかもしれませんし、遅すぎるかもしれません。(未テスト)
(defadvice switch-to-buffer (after switch-to-buffer activate compile)
"change the frame's default face after switch-to-buffer"
(doSomethingToChangePropertiesOfDefaultFace))
そして今、私の実際の(不完全な)答えのために...
より複雑ではありますが、より良いアプローチは、組み込みの顔のいずれかがまだ割り当てられていないすべての領域に新しい顔を使用するようにマークダウンモードに指示します。copy-face で新しい顔を作成し、set-face-* で興味深いプロパティを与えることができます。
font-lock.el の 946 行目付近の「フォント化関数」で始まるコメント ブロックで説明されているように、markdown-mode の font-lock-defaults を変更して、デフォルトの font-lock-fontify-region-function をオーバーライドします。おそらく、非常にわずかに変更された font-lock-default-fontify-region を使用して、実行直後に追加のステップを 1 つだけ実行できます。
(unless font-lock-keywords-only
(font-lock-fontify-syntactically-region beg end loudly))
追加のステップでは、font-lock-fontify-syntaxally-region と同様に領域を解析し、領域を「興味深い」サブ領域に分割します。しかし今回は、デフォルトの面を持つサブ領域を見つけて、それらのサブ領域を以前に作成した新しい面にテキスト プロパティで配置します。
全体として、これは .emacs ファイルの elisp の数行のみである必要があるように感じます。さらに、元のファイルとのわずかな違いしかない font-lock-default-fontify-region のコピーを作成します (新しい関数を 1 つ呼び出します)。さらに、font-lock-fontify-syntaxally-region のコピーを作成し、それを変更して入札を行います (最も難しい部分)。
実際、font-lock-fontify-syntaxally-region を「後」にアドバイスする場合は、おそらく font-lock-defaults または font-lock-default-fontify-region を変更する必要さえありません。