windows: Support all OpenType font features (#10756)

Release Notes:

- Added support for all `OpenType` font features to DirectWrite.



https://github.com/zed-industries/zed/assets/14981363/cb2848cd-9178-4d87-881a-54dc646b2b61

---------

Co-authored-by: Mikayla Maki <mikayla@zed.dev>
This commit is contained in:
张小白 2024-04-27 04:58:12 +08:00 committed by GitHub
parent 268cb948a7
commit 11dc3c2582
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 114 additions and 25 deletions

View file

@ -123,12 +123,12 @@ impl PlatformTextSystem for MacTextSystem {
let mut lock = RwLockUpgradableReadGuard::upgrade(lock);
let font_key = FontKey {
font_family: font.family.clone(),
font_features: font.features,
font_features: font.features.clone(),
};
let candidates = if let Some(font_ids) = lock.font_ids_by_font_key.get(&font_key) {
font_ids.as_slice()
} else {
let font_ids = lock.load_family(&font.family, font.features)?;
let font_ids = lock.load_family(&font.family, &font.features)?;
lock.font_ids_by_font_key.insert(font_key.clone(), font_ids);
lock.font_ids_by_font_key[&font_key].as_ref()
};
@ -219,7 +219,11 @@ impl MacTextSystemState {
Ok(())
}
fn load_family(&mut self, name: &str, features: FontFeatures) -> Result<SmallVec<[FontId; 4]>> {
fn load_family(
&mut self,
name: &str,
features: &FontFeatures,
) -> Result<SmallVec<[FontId; 4]>> {
let name = if name == ".SystemUIFont" {
".AppleSystemUIFont"
} else {