1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub enum Font {
7 Helvetica,
10 HelveticaBold,
12 HelveticaOblique,
14 HelveticaBoldOblique,
16 TimesRoman,
18 TimesBold,
20 TimesItalic,
22 TimesBoldItalic,
24 Courier,
26 CourierBold,
28 CourierOblique,
30 CourierBoldOblique,
32 Symbol,
34 ZapfDingbats,
36}
37
38impl Font {
39 pub fn pdf_name(&self) -> &'static str {
40 match self {
41 Font::Helvetica => "Helvetica",
42 Font::HelveticaBold => "Helvetica-Bold",
43 Font::HelveticaOblique => "Helvetica-Oblique",
44 Font::HelveticaBoldOblique => "Helvetica-BoldOblique",
45 Font::TimesRoman => "Times-Roman",
46 Font::TimesBold => "Times-Bold",
47 Font::TimesItalic => "Times-Italic",
48 Font::TimesBoldItalic => "Times-BoldItalic",
49 Font::Courier => "Courier",
50 Font::CourierBold => "Courier-Bold",
51 Font::CourierOblique => "Courier-Oblique",
52 Font::CourierBoldOblique => "Courier-BoldOblique",
53 Font::Symbol => "Symbol",
54 Font::ZapfDingbats => "ZapfDingbats",
55 }
56 }
57
58 pub fn is_symbolic(&self) -> bool {
59 matches!(self, Font::Symbol | Font::ZapfDingbats)
60 }
61}
62
63#[derive(Debug, Clone, Copy, PartialEq)]
64pub enum FontFamily {
65 Helvetica,
66 Times,
67 Courier,
68}
69
70impl FontFamily {
71 pub fn regular(self) -> Font {
72 match self {
73 FontFamily::Helvetica => Font::Helvetica,
74 FontFamily::Times => Font::TimesRoman,
75 FontFamily::Courier => Font::Courier,
76 }
77 }
78
79 pub fn bold(self) -> Font {
80 match self {
81 FontFamily::Helvetica => Font::HelveticaBold,
82 FontFamily::Times => Font::TimesBold,
83 FontFamily::Courier => Font::CourierBold,
84 }
85 }
86
87 pub fn italic(self) -> Font {
88 match self {
89 FontFamily::Helvetica => Font::HelveticaOblique,
90 FontFamily::Times => Font::TimesItalic,
91 FontFamily::Courier => Font::CourierOblique,
92 }
93 }
94
95 pub fn bold_italic(self) -> Font {
96 match self {
97 FontFamily::Helvetica => Font::HelveticaBoldOblique,
98 FontFamily::Times => Font::TimesBoldItalic,
99 FontFamily::Courier => Font::CourierBoldOblique,
100 }
101 }
102}