After a bit of style sheet spelunking I believe I have a solution.
One reads in Core.nb
under the FormatType Styles section:
The cells below define styles that are mixed in with the styles of most cells. If a cell's FormatType matches the name of one of the styles defined below, then that style is applied between the cell's style and its own options. This is particularly true of Input and Output.
From this it becomes clear why the styles one creates for Input
and Output
are not respected. That leads me to my proposed method. The template for the private style sheet is as follows:

Key in the options for the top cell, placed above the base definitions cell, is:
FontFamily -> Inherited
However one should start with the original definition from Core.nb
and add/change FontFamily -> Inherited
or important settings such as InputAutoReplacements
will be lost. You can use this code to generate the complete Cell needed:
CellPrint @ Cell[StyleData["StandardForm"], ##] & @@
(CurrentValue[{"StyleDefinitions", "StandardForm"}] /.
(FontFamily -> _) :> (FontFamily -> Inherited))
(Evaluate this in a standard Notebook, then copy and paste the result at the very top of the Style Sheet.)
This changes the way that the "Input"
and "Output"
styles work. Now you create font style cells for both, e.g.:
Cell[StyleData["Input"],
FontFamily -> "Courier"
]
Cell[StyleData["Output"],
FontFamily -> "Trajan Pro"
]
And prestidigitonium!

StandardForm
, but that changes bothInput
andOutput
. Is there no way to change justOutput
? (And what's theOutput
style for if it has no effect on output?) $\endgroup$Core.nb
definesDefaultFormatType -> DefaultOutputFormatType
for the output style and this is theStandardForm
. You can setDefaultFormatType
to some other *Form and change that instead, because modifyingStandardForm
will also change the input sytle. $\endgroup$StandardForm
to effect change in"Output"
(and"Input"
) before; that is what I am dissatisfied with. Sorry for unintentionally disparaging your answer! $\endgroup$