mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-29 21:49:33 +00:00
62 lines
1.6 KiB
Rust
62 lines
1.6 KiB
Rust
use crate::json::json;
|
|
pub use font_kit::metrics::Metrics;
|
|
pub use font_kit::properties::{Properties, Stretch, Style, Weight};
|
|
|
|
use crate::json::ToJson;
|
|
|
|
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
|
pub struct FontId(pub usize);
|
|
|
|
pub type GlyphId = u32;
|
|
|
|
impl ToJson for Properties {
|
|
fn to_json(&self) -> crate::json::Value {
|
|
json!({
|
|
"style": self.style.to_json(),
|
|
"weight": self.weight.to_json(),
|
|
"stretch": self.stretch.to_json(),
|
|
})
|
|
}
|
|
}
|
|
|
|
impl ToJson for Style {
|
|
fn to_json(&self) -> crate::json::Value {
|
|
match self {
|
|
Style::Normal => json!("normal"),
|
|
Style::Italic => json!("italic"),
|
|
Style::Oblique => json!("oblique"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ToJson for Weight {
|
|
fn to_json(&self) -> crate::json::Value {
|
|
if self.0 == Weight::THIN.0 {
|
|
json!("thin")
|
|
} else if self.0 == Weight::EXTRA_LIGHT.0 {
|
|
json!("extra light")
|
|
} else if self.0 == Weight::LIGHT.0 {
|
|
json!("light")
|
|
} else if self.0 == Weight::NORMAL.0 {
|
|
json!("normal")
|
|
} else if self.0 == Weight::MEDIUM.0 {
|
|
json!("medium")
|
|
} else if self.0 == Weight::SEMIBOLD.0 {
|
|
json!("semibold")
|
|
} else if self.0 == Weight::BOLD.0 {
|
|
json!("bold")
|
|
} else if self.0 == Weight::EXTRA_BOLD.0 {
|
|
json!("extra bold")
|
|
} else if self.0 == Weight::BLACK.0 {
|
|
json!("black")
|
|
} else {
|
|
json!(self.0)
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ToJson for Stretch {
|
|
fn to_json(&self) -> serde_json::Value {
|
|
json!(self.0)
|
|
}
|
|
}
|