1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
// Copyright 2020 The Druid Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! Font attributes
use crate::{Data, FontFamily, FontStyle, FontWeight};
/// A collection of attributes that describe a font.
///
/// This is provided as a convenience; library consumers may wish to have
/// a single type that represents a specific font face at a specific size.
#[derive(Debug, Data, Clone, PartialEq)]
pub struct FontDescriptor {
/// The font's [`FontFamily`].
pub family: FontFamily,
/// The font's size.
pub size: f64,
/// The font's [`FontWeight`].
pub weight: FontWeight,
/// The font's [`FontStyle`].
pub style: FontStyle,
}
impl FontDescriptor {
/// Create a new descriptor with the provided [`FontFamily`].
pub const fn new(family: FontFamily) -> Self {
FontDescriptor {
family,
size: crate::piet::util::DEFAULT_FONT_SIZE,
weight: FontWeight::REGULAR,
style: FontStyle::Regular,
}
}
/// Buider-style method to set the descriptor's font size.
pub const fn with_size(mut self, size: f64) -> Self {
self.size = size;
self
}
/// Buider-style method to set the descriptor's [`FontWeight`].
pub const fn with_weight(mut self, weight: FontWeight) -> Self {
self.weight = weight;
self
}
/// Buider-style method to set the descriptor's [`FontStyle`].
pub const fn with_style(mut self, style: FontStyle) -> Self {
self.style = style;
self
}
}
impl Default for FontDescriptor {
fn default() -> Self {
FontDescriptor {
family: Default::default(),
weight: Default::default(),
style: Default::default(),
size: crate::piet::util::DEFAULT_FONT_SIZE,
}
}
}