4c16cb278e
Adds support for users to be able to set font features and axes (see the spec for more details!)
## Detailed Description
**CustomTextLayout**
- Asks the `DxFontRenderData` for the font features when getting glyphs
- _If any features have been set/updated, we always skip the "isTextSimple" shortcut_
- Asks the `_formatInUse` for any font axes when mapping characters in `_AnalyzeFontFallback`
**DxFontRenderData**
- Stores a map of font features (initialized to the [standard feature list])
- Stores a map of font axes
- Has methods to add font features/axes to the map or update existing ones
- Has methods to retrieve the font features/axes
- Sets the font axes in the `IDWriteTextFormat` when creating it
## Validation Steps Performed
It works!
[standard feature list]: ac5aef67d1/DrawableObject.ixx (L802)
Specified in #10457
Related to #1790
Closes #759
Closes #5828
26 lines
913 B
Plaintext
26 lines
913 B
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
import "Profile.idl";
|
|
#include "IInheritable.idl.h"
|
|
|
|
#define INHERITABLE_FONT_SETTING(Type, Name) \
|
|
_BASE_INHERITABLE_SETTING(Type, Name); \
|
|
Microsoft.Terminal.Settings.Model.FontConfig Name##OverrideSource { get; }
|
|
|
|
#define COMMA ,
|
|
|
|
namespace Microsoft.Terminal.Settings.Model
|
|
{
|
|
[default_interface] runtimeclass FontConfig {
|
|
Microsoft.Terminal.Settings.Model.Profile SourceProfile { get; };
|
|
|
|
INHERITABLE_FONT_SETTING(String, FontFace);
|
|
INHERITABLE_FONT_SETTING(Int32, FontSize);
|
|
INHERITABLE_FONT_SETTING(Windows.UI.Text.FontWeight, FontWeight);
|
|
|
|
INHERITABLE_FONT_SETTING(Windows.Foundation.Collections.IMap<String COMMA UInt32>, FontFeatures);
|
|
INHERITABLE_FONT_SETTING(Windows.Foundation.Collections.IMap<String COMMA Single>, FontAxes);
|
|
}
|
|
}
|