Bundle Newsreader serif and apply to hero text
Embeds Newsreader (variable opsz/wght, OFL-licensed) into the ely_app binary via include_bytes!, registers it through GPUI's text_system at startup (chrome::typography::register_serif_fonts), and exposes the SERIF_FAMILY constant for downstream surfaces. Apply the family to every page hero where the design uses ely-serif: home headline, settings/appearance headline, plugin marketplace headline, sync headline, plugin detail name, and the home reading-list cover headline. The OFL license file ships alongside the .ttf assets to satisfy the font's redistribution clause.
This commit is contained in:
@@ -9,6 +9,7 @@ use gpui::{
|
||||
use gpui_component::{IconName, scroll::ScrollableElement};
|
||||
|
||||
use crate::shell::ElyShell;
|
||||
use crate::shell::chrome::SERIF_FAMILY;
|
||||
|
||||
pub(crate) fn render_appearance_form(
|
||||
snapshot: &BrowserSnapshot,
|
||||
@@ -48,6 +49,7 @@ fn render_header() -> AnyElement {
|
||||
)
|
||||
.child(
|
||||
div()
|
||||
.font_family(SERIF_FAMILY)
|
||||
.text_size(px(34.0))
|
||||
.font_weight(FontWeight(400.0))
|
||||
.text_color(rgb(colors::INK))
|
||||
|
||||
@@ -7,6 +7,8 @@ use gpui_component::IconName;
|
||||
|
||||
use crate::shell::ElyShell;
|
||||
|
||||
use crate::shell::chrome::SERIF_FAMILY;
|
||||
|
||||
use super::style::{
|
||||
ARROW_CHIP_BG, PILL_BG, PILL_BG_HOVER, SEARCH_BG, card_shadow, soft_shadow,
|
||||
};
|
||||
@@ -42,6 +44,7 @@ fn render_greeting_row(text: String) -> AnyElement {
|
||||
|
||||
fn render_serif_headline() -> AnyElement {
|
||||
div()
|
||||
.font_family(SERIF_FAMILY)
|
||||
.text_size(px(64.0))
|
||||
.font_weight(FontWeight(400.0))
|
||||
.text_color(rgb(colors::INK))
|
||||
|
||||
@@ -10,7 +10,7 @@ use gpui::{
|
||||
};
|
||||
|
||||
use crate::shell::ElyShell;
|
||||
use crate::shell::chrome::render_glyph_for;
|
||||
use crate::shell::chrome::{SERIF_FAMILY, render_glyph_for};
|
||||
|
||||
use super::style::{CARD_BG, card_shadow};
|
||||
use super::time::relative_time_label;
|
||||
@@ -217,6 +217,7 @@ fn render_reading_list_cover(
|
||||
.gap_1()
|
||||
.child(
|
||||
div()
|
||||
.font_family(SERIF_FAMILY)
|
||||
.text_size(px(18.0))
|
||||
.font_weight(FontWeight(500.0))
|
||||
.text_color(rgb(0xffffff))
|
||||
|
||||
@@ -8,6 +8,7 @@ pub(crate) mod sidebar;
|
||||
pub(crate) mod sidebar_header;
|
||||
pub(crate) mod split_pane;
|
||||
pub(crate) mod topbar;
|
||||
pub(crate) mod typography;
|
||||
pub(crate) mod wallpaper;
|
||||
|
||||
pub(crate) use appearance_form::render_appearance_form;
|
||||
@@ -22,4 +23,5 @@ pub(crate) use split_pane::{
|
||||
render_split_pane_header,
|
||||
};
|
||||
pub(crate) use topbar::render_topbar;
|
||||
pub(crate) use typography::{SERIF_FAMILY, register_serif_fonts};
|
||||
pub(crate) use wallpaper::render_wallpaper;
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
use std::borrow::Cow;
|
||||
|
||||
use gpui::App;
|
||||
|
||||
const NEWSREADER_REGULAR: &[u8] =
|
||||
include_bytes!("../../../assets/fonts/Newsreader.ttf");
|
||||
const NEWSREADER_ITALIC: &[u8] =
|
||||
include_bytes!("../../../assets/fonts/Newsreader-Italic.ttf");
|
||||
|
||||
pub(crate) const SERIF_FAMILY: &str = "Newsreader";
|
||||
|
||||
pub(crate) fn register_serif_fonts(cx: &App) -> gpui::Result<()> {
|
||||
cx.text_system().add_fonts(vec![
|
||||
Cow::Borrowed(NEWSREADER_REGULAR),
|
||||
Cow::Borrowed(NEWSREADER_ITALIC),
|
||||
])
|
||||
}
|
||||
Reference in New Issue
Block a user