mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Use FamilyName instead of FontFamily in @font-face
… to exclude generic families, per spec: https://drafts.csswg.org/css-fonts/#font-family-desc
This commit is contained in:
parent
52aa2431a9
commit
5405fb0d73
3 changed files with 12 additions and 12 deletions
|
@ -25,7 +25,7 @@ use std::sync::{Arc, Mutex};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use std::u32;
|
use std::u32;
|
||||||
use style::font_face::{EffectiveSources, Source};
|
use style::font_face::{EffectiveSources, Source};
|
||||||
use style::properties::longhands::font_family::computed_value::FontFamily;
|
use style::properties::longhands::font_family::computed_value::{FontFamily, FamilyName};
|
||||||
use webrender_traits;
|
use webrender_traits;
|
||||||
|
|
||||||
/// A list of font templates that make up a given font family.
|
/// A list of font templates that make up a given font family.
|
||||||
|
@ -269,7 +269,7 @@ impl FontCache {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Source::Local(ref font) => {
|
Source::Local(ref font) => {
|
||||||
let font_face_name = LowercaseString::new(font.name());
|
let font_face_name = LowercaseString::new(&font.0);
|
||||||
let templates = &mut self.web_families.get_mut(&family_name).unwrap();
|
let templates = &mut self.web_families.get_mut(&family_name).unwrap();
|
||||||
let mut found = false;
|
let mut found = false;
|
||||||
for_each_variation(&font_face_name, |path| {
|
for_each_variation(&font_face_name, |path| {
|
||||||
|
@ -461,8 +461,8 @@ impl FontCacheThread {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_web_font(&self, family: FontFamily, sources: EffectiveSources, sender: IpcSender<()>) {
|
pub fn add_web_font(&self, family: FamilyName, sources: EffectiveSources, sender: IpcSender<()>) {
|
||||||
self.chan.send(Command::AddWebFont(LowercaseString::new(family.name()), sources, sender)).unwrap();
|
self.chan.send(Command::AddWebFont(LowercaseString::new(&family.0), sources, sender)).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn exit(&self) {
|
pub fn exit(&self) {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
|
|
||||||
use computed_values::font_family::FontFamily;
|
use computed_values::font_family::FamilyName;
|
||||||
use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser, Parser};
|
use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser, Parser};
|
||||||
use parser::{ParserContext, log_css_error, Parse};
|
use parser::{ParserContext, log_css_error, Parse};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
@ -23,7 +23,7 @@ pub enum Source {
|
||||||
/// A `url()` source.
|
/// A `url()` source.
|
||||||
Url(UrlSource),
|
Url(UrlSource),
|
||||||
/// A `local()` source.
|
/// A `local()` source.
|
||||||
Local(FontFamily),
|
Local(FamilyName),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToCss for Source {
|
impl ToCss for Source {
|
||||||
|
@ -150,7 +150,7 @@ impl Parse for Source {
|
||||||
fn parse(context: &ParserContext, input: &mut Parser) -> Result<Source, ()> {
|
fn parse(context: &ParserContext, input: &mut Parser) -> Result<Source, ()> {
|
||||||
if input.try(|input| input.expect_function_matching("local")).is_ok() {
|
if input.try(|input| input.expect_function_matching("local")).is_ok() {
|
||||||
return input.parse_nested_block(|input| {
|
return input.parse_nested_block(|input| {
|
||||||
FontFamily::parse(context, input)
|
FamilyName::parse(context, input)
|
||||||
}).map(Source::Local)
|
}).map(Source::Local)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,10 +177,10 @@ impl Parse for Source {
|
||||||
macro_rules! font_face_descriptors {
|
macro_rules! font_face_descriptors {
|
||||||
(
|
(
|
||||||
mandatory descriptors = [
|
mandatory descriptors = [
|
||||||
$( #[$m_doc: meta] $m_name: tt $m_ident: ident : $m_ty: ty = $m_initial: expr, )*
|
$( #[$m_doc: meta] $m_name: tt $m_ident: ident: $m_ty: ty = $m_initial: expr, )*
|
||||||
]
|
]
|
||||||
optional descriptors = [
|
optional descriptors = [
|
||||||
$( #[$o_doc: meta] $o_name: tt $o_ident: ident : $o_ty: ty = $o_initial: expr, )*
|
$( #[$o_doc: meta] $o_name: tt $o_ident: ident: $o_ty: ty = $o_initial: expr, )*
|
||||||
]
|
]
|
||||||
) => {
|
) => {
|
||||||
/// A `@font-face` rule.
|
/// A `@font-face` rule.
|
||||||
|
@ -285,7 +285,7 @@ macro_rules! font_face_descriptors {
|
||||||
font_face_descriptors! {
|
font_face_descriptors! {
|
||||||
mandatory descriptors = [
|
mandatory descriptors = [
|
||||||
/// The specified url.
|
/// The specified url.
|
||||||
"font-family" family: FontFamily = FontFamily::Generic(atom!("")),
|
"font-family" family: FamilyName = FamilyName(atom!("")),
|
||||||
|
|
||||||
/// The format hints specified with the `format()` function.
|
/// The format hints specified with the `format()` function.
|
||||||
"src" sources: Vec<Source> = Vec::new(),
|
"src" sources: Vec<Source> = Vec::new(),
|
||||||
|
|
|
@ -12,8 +12,8 @@ fn test_local_web_font() {
|
||||||
let (inp_chan, _) = ipc::channel().unwrap();
|
let (inp_chan, _) = ipc::channel().unwrap();
|
||||||
let (out_chan, out_receiver) = ipc::channel().unwrap();
|
let (out_chan, out_receiver) = ipc::channel().unwrap();
|
||||||
let font_cache_thread = FontCacheThread::new(inp_chan, None);
|
let font_cache_thread = FontCacheThread::new(inp_chan, None);
|
||||||
let family_name = FontFamily::FamilyName(FamilyName(From::from("test family")));
|
let family_name = FamilyName(From::from("test family"));
|
||||||
let variant_name = FontFamily::FamilyName(FamilyName(From::from("test font face")));
|
let variant_name = FamilyName(From::from("test font face"));
|
||||||
let font_face_rule = FontFaceRule {
|
let font_face_rule = FontFaceRule {
|
||||||
family: family_name.clone(),
|
family: family_name.clone(),
|
||||||
sources: vec![Source::Local(variant_name)],
|
sources: vec![Source::Local(variant_name)],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue