docx_reader/documents/elements/
run_fonts.rs

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
75
76
77
78
79
80
81
82
83
use serde::{Deserialize, Serialize};

/*
  17.3.2.26 rFonts (Run Fonts)
  This element specifies the fonts which shall be used to display the text contents of this run.
  Within a single run, there can be up to four types of font slot which shall each be allowed to use a unique font:
  - ASCII (i.e., the first 128 Unicode code points)
  - High ANSI
  - Complex Script
*/
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct RunFonts {
	#[serde(skip_serializing_if = "Option::is_none")]
	ascii: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	hi_ansi: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	east_asia: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	cs: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	ascii_theme: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	hi_ansi_theme: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	east_asia_theme: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	cs_theme: Option<String>,
	#[serde(skip_serializing_if = "Option::is_none")]
	hint: Option<String>,
}

impl RunFonts {
	pub fn new() -> RunFonts {
		Default::default()
	}

	pub fn ascii(mut self, f: impl Into<String>) -> Self {
		self.ascii = Some(f.into());
		self
	}

	pub fn hi_ansi(mut self, f: impl Into<String>) -> Self {
		self.hi_ansi = Some(f.into());
		self
	}

	pub fn east_asia(mut self, f: impl Into<String>) -> Self {
		self.east_asia = Some(f.into());
		self
	}

	pub fn cs(mut self, f: impl Into<String>) -> Self {
		self.cs = Some(f.into());
		self
	}

	pub fn ascii_theme(mut self, f: impl Into<String>) -> Self {
		self.ascii_theme = Some(f.into());
		self
	}

	pub fn hi_ansi_theme(mut self, f: impl Into<String>) -> Self {
		self.hi_ansi_theme = Some(f.into());
		self
	}

	pub fn east_asia_theme(mut self, f: impl Into<String>) -> Self {
		self.east_asia_theme = Some(f.into());
		self
	}

	pub fn cs_theme(mut self, f: impl Into<String>) -> Self {
		self.cs_theme = Some(f.into());
		self
	}

	pub fn hint(mut self, f: impl Into<String>) -> Self {
		self.hint = Some(f.into());
		self
	}
}