-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spec for font features and axes of variation #10457
Conversation
@check-spelling-bot ReportUnrecognized words, please review:
Previously acknowledged words that are now absentADDB hpcon serializers testnetv Tlg XpathTo accept these unrecognized words as correct (and remove the previously acknowledged and now absent words), run the following commands... in a clone of the [email protected]:microsoft/terminal.git repository
✏️ Contributor please read thisBy default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
If the listed items are:
See the 🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉 🗜️ If you see a bunch of garbageIf it relates to a ... well-formed patternSee if there's a pattern that would match it. If not, try writing one and adding it to a Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines. Note that patterns can't match multiline strings. binary-ish stringPlease add a file path to the File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exactly what I was hoping for!
Impressive spec! This makes me realize DxFontInfo is more important than I think, as it also opens up the opportunity for all the other font features. |
nit: put the epic number in the filename! |
and link it in the body (in the yaml front matter) |
``` | ||
"font": { | ||
"face": "Cascadia Code", | ||
"size": 12, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: we should include weight here, and not force people to set "axes: wght: 350". However: we need the spec to clarify what happens when there are multiple values and they do not agree.
What is the order in which these are processed:?
fontWeight
font.weight
font.axes[wght]
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh dang, this is actually part of the other spec isn't it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Between font.weight
and fontWeight
, we will only process font.weight
and ignore fontWeight
.
Between font.weight
and font.axes[wght]
... I'm inclined to say we should ignore font.weight
and use font.axes[wght]
, thoughts?
EDIT: The reason for picking font.axes[wght]
would be because its the more precise one (a specific number rather than Light
etc)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd agree with @PankajBhojwani here. My reasoning is that if someone went through the trouble of defining font.axes[wght]
, then they know what they are doing. I don't, so I'm probably gonna stick with fontWeight
, but hey, that's the whole point of layering.
Stick this example in "Potential Issues", and call it answered
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor things
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea I dig this spec. Sounds like you'll be able to close out almost all of #1790 in one fell swoop then. Add the comment about the order of fontWeight
, font.weight
, and font.axes[wght]
, and this is good2go
Hello @PankajBhojwani! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (
|
🎉 Handy links: |
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]: https://github.com/fdwr/TextLayoutSampler/blob/ac5aef67d1cc0cb67c5e3be29b30bda5a90c3e2b/DrawableObject.ixx#L802 Specified in #10457 Related to #1790 Closes #759 Closes #5828
Add a spec for how we could allow users to define font features and axes of variation.
References #1790