write_fonts/generated/
generated_hmtx.rs1#[allow(unused_imports)]
6use crate::codegen_prelude::*;
7
8#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11pub struct Hmtx {
12 pub h_metrics: Vec<LongMetric>,
15 pub left_side_bearings: Vec<i16>,
18}
19
20impl Hmtx {
21 pub fn new(h_metrics: Vec<LongMetric>, left_side_bearings: Vec<i16>) -> Self {
23 Self {
24 h_metrics,
25 left_side_bearings,
26 }
27 }
28}
29
30impl FontWrite for Hmtx {
31 fn write_into(&self, writer: &mut TableWriter) {
32 self.h_metrics.write_into(writer);
33 self.left_side_bearings.write_into(writer);
34 }
35 fn table_type(&self) -> TableType {
36 TableType::TopLevel(Hmtx::TAG)
37 }
38}
39
40impl Validate for Hmtx {
41 fn validate_impl(&self, ctx: &mut ValidationCtx) {
42 ctx.in_table("Hmtx", |ctx| {
43 ctx.in_field("h_metrics", |ctx| {
44 if self.h_metrics.len() > to_usize(u16::MAX) {
45 ctx.report("array exceeds max length");
46 }
47 self.h_metrics.validate_impl(ctx);
48 });
49 })
50 }
51}
52
53impl TopLevelTable for Hmtx {
54 const TAG: Tag = Tag::new(b"hmtx");
55}
56
57impl<'a> FromObjRef<read_fonts::tables::hmtx::Hmtx<'a>> for Hmtx {
58 fn from_obj_ref(obj: &read_fonts::tables::hmtx::Hmtx<'a>, _: FontData) -> Self {
59 let offset_data = obj.offset_data();
60 Hmtx {
61 h_metrics: obj.h_metrics().to_owned_obj(offset_data),
62 left_side_bearings: obj.left_side_bearings().to_owned_obj(offset_data),
63 }
64 }
65}
66
67#[allow(clippy::needless_lifetimes)]
68impl<'a> FromTableRef<read_fonts::tables::hmtx::Hmtx<'a>> for Hmtx {}
69
70#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
72#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
73pub struct HmtxExtended {
74 pub h_metrics: Vec<LongMetric>,
75 pub left_side_bearings: Vec<i16>,
76}
77
78impl HmtxExtended {
79 pub fn new(h_metrics: Vec<LongMetric>, left_side_bearings: Vec<i16>) -> Self {
81 Self {
82 h_metrics,
83 left_side_bearings,
84 }
85 }
86}
87
88impl FontWrite for HmtxExtended {
89 fn write_into(&self, writer: &mut TableWriter) {
90 self.h_metrics.write_into(writer);
91 self.left_side_bearings.write_into(writer);
92 }
93 fn table_type(&self) -> TableType {
94 TableType::TopLevel(HmtxExtended::TAG)
95 }
96}
97
98impl Validate for HmtxExtended {
99 fn validate_impl(&self, ctx: &mut ValidationCtx) {
100 ctx.in_table("HmtxExtended", |ctx| {
101 ctx.in_field("h_metrics", |ctx| {
102 if self.h_metrics.len() > to_usize(u32::MAX) {
103 ctx.report("array exceeds max length");
104 }
105 self.h_metrics.validate_impl(ctx);
106 });
107 })
108 }
109}
110
111impl TopLevelTable for HmtxExtended {
112 const TAG: Tag = Tag::new(b"HMTX");
113}
114
115impl<'a> FromObjRef<read_fonts::tables::hmtx::HmtxExtended<'a>> for HmtxExtended {
116 fn from_obj_ref(obj: &read_fonts::tables::hmtx::HmtxExtended<'a>, _: FontData) -> Self {
117 let offset_data = obj.offset_data();
118 HmtxExtended {
119 h_metrics: obj.h_metrics().to_owned_obj(offset_data),
120 left_side_bearings: obj.left_side_bearings().to_owned_obj(offset_data),
121 }
122 }
123}
124
125#[allow(clippy::needless_lifetimes)]
126impl<'a> FromTableRef<read_fonts::tables::hmtx::HmtxExtended<'a>> for HmtxExtended {}
127
128#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
129#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
130pub struct LongMetric {
131 pub advance: u16,
133 pub side_bearing: i16,
135}
136
137impl LongMetric {
138 pub fn new(advance: u16, side_bearing: i16) -> Self {
140 Self {
141 advance,
142 side_bearing,
143 }
144 }
145}
146
147impl FontWrite for LongMetric {
148 fn write_into(&self, writer: &mut TableWriter) {
149 self.advance.write_into(writer);
150 self.side_bearing.write_into(writer);
151 }
152 fn table_type(&self) -> TableType {
153 TableType::Named("LongMetric")
154 }
155}
156
157impl Validate for LongMetric {
158 fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
159}
160
161impl FromObjRef<read_fonts::tables::hmtx::LongMetric> for LongMetric {
162 fn from_obj_ref(obj: &read_fonts::tables::hmtx::LongMetric, _: FontData) -> Self {
163 LongMetric {
164 advance: obj.advance(),
165 side_bearing: obj.side_bearing(),
166 }
167 }
168}