font_test_data/
lib.rs

1//! test data shared between various fontations crates.
2
3pub mod bebuffer;
4pub mod cmap;
5pub mod gdef;
6pub mod gpos;
7pub mod gsub;
8pub mod ift;
9pub mod layout;
10
11pub static CMAP12_FONT1: &[u8] = include_bytes!("../test_data/ttf/cmap12_font1.ttf");
12
13pub static CMAP14_FONT1: &[u8] = include_bytes!("../test_data/ttf/cmap14_font1.ttf");
14
15pub static CMAP4_SYMBOL_PUA: &[u8] = include_bytes!("../test_data/ttf/cmap4_symbol_pua.ttf");
16
17pub static CMAP6: &[u8] = include_bytes!("../test_data/ttf/cmap6.ttf");
18
19pub static CMAP10: &[u8] = include_bytes!("../test_data/ttf/cmap10.ttf");
20
21pub static COLR_GRADIENT_RECT: &[u8] =
22    include_bytes!("../test_data/ttf/linear_gradient_rect_colr_1.ttf");
23
24pub static VAZIRMATN_VAR: &[u8] = include_bytes!("../test_data/ttf/vazirmatn_var_trimmed.ttf");
25
26pub static NAMES_ONLY: &[u8] = include_bytes!("../test_data/ttf/names_only.ttf");
27
28pub static VAZIRMATN_VAR_GLYPHS: &str =
29    include_str!("../test_data/extracted/vazirmatn_var_trimmed-glyphs.txt");
30
31pub static SIMPLE_GLYF: &[u8] = include_bytes!("../test_data/ttf/simple_glyf.ttf");
32
33pub static CUBIC_GLYF: &[u8] = include_bytes!("../test_data/ttf/cubic_glyf.ttf");
34
35pub static NOTO_SERIF_DISPLAY_TRIMMED: &[u8] =
36    include_bytes!("../test_data/ttf/noto_serif_display_trimmed.ttf");
37
38pub static NOTO_SERIF_DISPLAY_TRIMMED_GLYPHS: &str =
39    include_str!("../test_data/extracted/noto_serif_display_trimmed-glyphs.txt");
40
41pub static NOTO_SANS_JP_CFF: &[u8] =
42    include_bytes!("../test_data/ttf/NotoSansJP-Regular.subset.otf");
43
44pub static CANTARELL_VF_TRIMMED: &[u8] =
45    include_bytes!("../test_data/ttf/cantarell_vf_trimmed.ttf");
46
47pub static CANTARELL_VF_TRIMMED_GLYPHS: &str =
48    include_str!("../test_data/extracted/cantarell_vf_trimmed-glyphs.txt");
49
50pub static CHARSTRING_PATH_OPS: &[u8] = include_bytes!("../test_data/ttf/charstring_path_ops.ttf");
51
52pub static EMBEDDED_BITMAPS: &[u8] = include_bytes!("../test_data/ttf/embedded_bitmaps.ttf");
53pub static CBDT: &[u8] = include_bytes!("../test_data/ttf/cbdt.ttf");
54
55pub static HVAR_WITH_TRUNCATED_ADVANCE_INDEX_MAP: &[u8] =
56    include_bytes!("../test_data/ttf/hvar_with_truncated_adv_index_map.ttf");
57
58pub static COLRV0V1: &[u8] = include_bytes!("../test_data/ttf/test_glyphs-glyf_colr_1.ttf");
59
60pub static COLRV0V1_VARIABLE: &[u8] =
61    include_bytes!("../test_data/ttf/test_glyphs-glyf_colr_1_variable.ttf");
62
63pub static COLRV1_NO_CLIPLIST: &[u8] =
64    include_bytes!("../test_data/ttf/test_glyphs-glyf_colr_1_no_cliplist.subset.ttf");
65
66pub static CVAR: &[u8] = include_bytes!("../test_data/ttf/cvar.ttf");
67
68pub static STARTING_OFF_CURVE: &[u8] = include_bytes!("../test_data/ttf/starts_off_curve.ttf");
69
70pub static MOSTLY_OFF_CURVE: &[u8] = include_bytes!("../test_data/ttf/mostly_off_curve.ttf");
71
72pub static INTERPOLATE_THIS: &[u8] = include_bytes!("../test_data/ttf/interpolate_this.ttf");
73
74pub static MATERIAL_SYMBOLS_SUBSET: &[u8] =
75    include_bytes!("../test_data/ttf/material_symbols_subset.ttf");
76
77pub static GLYF_COMPONENTS: &[u8] = include_bytes!("../test_data/ttf/glyf_components.ttf");
78
79pub static AUTOHINT_CMAP: &[u8] = include_bytes!("../test_data/ttf/autohint_cmap.ttf");
80
81pub static NOTOSERIFHEBREW_AUTOHINT_METRICS: &[u8] =
82    include_bytes!("../test_data/ttf/notoserifhebrew_autohint_metrics.ttf");
83
84pub static NOTOSERIFTC_AUTOHINT_METRICS: &[u8] =
85    include_bytes!("../test_data/ttf/notoseriftc_autohint_metrics.ttf");
86
87pub static NOTOSERIF_AUTOHINT_SHAPING: &[u8] =
88    include_bytes!("../test_data/ttf/notoserif_autohint_shaping.ttf");
89
90pub static TTHINT_SUBSET: &[u8] = include_bytes!("../test_data/ttf/tthint_subset.ttf");
91
92pub static VORG: &[u8] = include_bytes!("../test_data/ttf/vorg.ttf");
93
94pub static AHEM: &[u8] = include_bytes!("../test_data/ttf/ahem.ttf");
95
96pub static AVAR2_CHECKER: &[u8] = include_bytes!("../test_data/ttf/avar2checker.ttf");
97
98pub static MATERIAL_ICONS_SUBSET: &[u8] =
99    include_bytes!("../test_data/ttf/material_icons_subset.ttf");
100
101pub static MATERIAL_ICONS_SUBSET_MATRIX: &[u8] =
102    include_bytes!("../test_data/ttf/material_icons_subset_matrix.ttf");
103
104pub static TINOS_SUBSET: &[u8] = include_bytes!("../test_data/ttf/tinos_subset.ttf");
105
106pub static NOTO_HANDWRITING_SBIX: &[u8] =
107    include_bytes!("../test_data/ttf/noto_handwriting-sbix.ttf");
108
109pub static COUSINE_HINT_SUBSET: &[u8] = include_bytes!("../test_data/ttf/cousine_hint_subset.ttf");
110
111pub mod morx {
112    // The following taken from the Unicode text rendering test fonts:
113    // <https://github.com/unicode-org/text-rendering-tests/tree/main/fonts>
114    pub static ONE: &[u8] = include_bytes!("../test_data/ttf/TestMORXOne.ttf");
115    pub static FOUR: &[u8] = include_bytes!("../test_data/ttf/TestMORXFour.ttf");
116    pub static EIGHTEEN: &[u8] = include_bytes!("../test_data/ttf/TestMORXEighteen.ttf");
117    pub static THIRTY_FOUR: &[u8] = include_bytes!("../test_data/ttf/TestMORXThirtyfour.ttf");
118    pub static FORTY_ONE: &[u8] = include_bytes!("../test_data/ttf/TestMORXFourtyone.ttf");
119}
120
121pub mod varc {
122    pub static CJK_6868: &[u8] = include_bytes!("../test_data/ttf/varc-6868.ttf");
123    pub static CONDITIONALS: &[u8] = include_bytes!("../test_data/ttf/varc-ac01-conditional.ttf");
124}
125
126pub mod closure {
127    pub static SIMPLE: &[u8] = include_bytes!("../test_data/ttf/simple_closure.ttf");
128    pub static SIMPLE_GLYPHS: &str = include_str!("../test_data/fea/simple_closure_glyphs.txt");
129    pub static RECURSIVE: &[u8] = include_bytes!("../test_data/ttf/recursive_closure.ttf");
130    pub static RECURSIVE_GLYPHS: &str =
131        include_str!("../test_data/fea/recursive_closure_glyphs.txt");
132    pub static CONTEXTUAL: &[u8] = include_bytes!("../test_data/ttf/context_closure.ttf");
133    pub static CONTEXTUAL_GLYPHS: &str =
134        include_str!("../test_data/fea/context_closure_glyphs.txt");
135    pub static RECURSIVE_CONTEXTUAL: &[u8] =
136        include_bytes!("../test_data/ttf/recursive_context_closure.ttf");
137    pub static RECURSIVE_CONTEXTUAL_GLYPHS: &str =
138        include_str!("../test_data/fea/recursive_context_closure_glyphs.txt");
139    // reuses glyph set from above
140    pub static CYCLIC_CONTEXTUAL: &[u8] =
141        include_bytes!("../test_data/ttf/cyclic_context_closure.ttf");
142    pub static CHAIN_CONTEXT_FORMAT3_BITS: &[u8] =
143        include_bytes!("../test_data/ttf/context_closure_unreachable_rule.ttf");
144    pub static CHAIN_CONTEXT_FORMAT3_BITS_GLYPHS: &str =
145        include_str!("../test_data/fea/context_closure_unreachable_rule_glyphs.txt");
146    pub static VARIATIONS_CLOSURE: &[u8] =
147        include_bytes!("../test_data/ttf/variations_closure.ttf");
148    pub static VARIATIONS_GLYPHS: &str =
149        include_str!("../test_data/fea/variations_closure_glyphs.txt");
150    pub static CONTEXT_ONLY_REACHABLE: &[u8] =
151        include_bytes!("../test_data/ttf/context_only_reachable.ttf");
152    pub static CONTEXT_ONLY_REACHABLE_GLYPHS: &str =
153        include_str!("../test_data/fea/context_only_reachable_glyphs.txt");
154}
155
156pub mod post {
157
158    #[rustfmt::skip]
159    pub static SIMPLE: &[u8] = &[
160        0x00, 0x02, 0x00, 0x00, // version 2.0
161        0x00, 0x00, 0x00, 0x00, // italic angle
162        0xFF, 0xb5,             // underlinePosition -75
163        0x00, 0x32,             // underlineThickness 50
164        0x00, 0x00, 0x00, 0x00, // fixedpitch
165        0x00, 0x00, 0x00, 0x00, // min/max mem:
166        0x00, 0x00, 0x00, 0x00,
167        0x00, 0x00, 0x00, 0x00,
168        0x00, 0x00, 0x00, 0x00,
169        0x00, 0x0A,             // numGlyphs 10
170                                // glyph name index:
171        0x00, 0x00,              // glyph 0 -> name 0
172        0x00, 0x00,             // glyph 1 -> name 0
173        0x00, 0x03,              // glyph 2 -> name 3 ('space')
174        0x00, 0x04,              // glyph 3 -> name 4 ('exclam')
175        0x00, 0x06,
176        0x00, 0x07,
177        0x00, 0x08,
178        0x01, 0x02,             // glyph 7 -> name 258 first custom
179        0x01, 0x03,             // glyph 8 -> name 258 first custom
180        0x01, 0x04,             // glyph 9 -> name 258 first custom
181        0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, // 5, h e l l o
182        0x02, 0x68, 0x69, // 2, h i
183        0x4, 0x68, 0x6f, 0x6c, 0x61, // 4, h o l a
184    ];
185}
186
187pub mod cff2 {
188    /// CFF2 example table
189    /// <https://learn.microsoft.com/en-us/typography/opentype/spec/cff2#appendix-a-example-cff2-font>
190    pub static EXAMPLE: &[u8] = &[
191        0x02, 0x00, 0x05, 0x00, 0x07, 0xCF, 0x0C, 0x24, 0xC3, 0x11, 0x9B, 0x18, 0x00, 0x00, 0x00,
192        0x00, 0x00, 0x26, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1C,
193        0x00, 0x01, 0x00, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0,
194        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02,
195        0x01, 0x01, 0x03, 0x05, 0x20, 0x0A, 0x20, 0x0A, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x05,
196        0xF7, 0x06, 0xDA, 0x12, 0x77, 0x9F, 0xF8, 0x6C, 0x9D, 0xAE, 0x9A, 0xF4, 0x9A, 0x95, 0x9F,
197        0xB3, 0x9F, 0x8B, 0x8B, 0x8B, 0x8B, 0x85, 0x9A, 0x8B, 0x8B, 0x97, 0x73, 0x8B, 0x8B, 0x8C,
198        0x80, 0x8B, 0x8B, 0x8B, 0x8D, 0x8B, 0x8B, 0x8C, 0x8A, 0x8B, 0x8B, 0x97, 0x17, 0x06, 0xFB,
199        0x8E, 0x95, 0x86, 0x9D, 0x8B, 0x8B, 0x8D, 0x17, 0x07, 0x77, 0x9F, 0xF8, 0x6D, 0x9D, 0xAD,
200        0x9A, 0xF3, 0x9A, 0x95, 0x9F, 0xB3, 0x9F, 0x08, 0xFB, 0x8D, 0x95, 0x09, 0x1E, 0xA0, 0x37,
201        0x5F, 0x0C, 0x09, 0x8B, 0x0C, 0x0B, 0xC2, 0x6E, 0x9E, 0x8C, 0x17, 0x0A, 0xDB, 0x57, 0xF7,
202        0x02, 0x8C, 0x17, 0x0B, 0xB3, 0x9A, 0x77, 0x9F, 0x82, 0x8A, 0x8D, 0x17, 0x0C, 0x0C, 0xDB,
203        0x95, 0x57, 0xF7, 0x02, 0x85, 0x8B, 0x8D, 0x17, 0x0C, 0x0D, 0xF7, 0x06, 0x13, 0x00, 0x00,
204        0x00, 0x01, 0x01, 0x01, 0x1B, 0xBD, 0xBD, 0xEF, 0x8C, 0x10, 0x8B, 0x15, 0xF8, 0x88, 0x27,
205        0xFB, 0x5C, 0x8C, 0x10, 0x06, 0xF8, 0x88, 0x07, 0xFC, 0x88, 0xEF, 0xF7, 0x5C, 0x8C, 0x10,
206        0x06,
207    ];
208}
209
210/// This setup to avoid cross-crate path construction and build.rs because both caused problems for google3
211pub mod colrv1_json {
212    /// Gets the expected value for a colrv1 json test
213    pub fn expected(set_name: &str, settings: &[(&str, f32)]) -> &'static str {
214        let mut key = Vec::with_capacity(1 + settings.len());
215        key.push("colrv1_".to_string() + &set_name.to_ascii_lowercase());
216        key.extend(settings.iter().map(|(t, v)| format!("{t}_{v}")));
217        let key = key.join("_");
218        // you could generate the cases in bash using something like:
219        // for f in $(ls font-test-data/test_data/colrv1_json); do echo "\"$f\" => include_str!(\"../test_data/colrv1_json/$f\"),"; done
220        match key.as_str() {
221            "colrv1_clipbox" => include_str!("../test_data/colrv1_json/colrv1_clipbox"),
222            "colrv1_clipbox_CLIO_200" => include_str!("../test_data/colrv1_json/colrv1_clipbox_CLIO_200"),
223            "colrv1_colored_circles_v0" => include_str!("../test_data/colrv1_json/colrv1_colored_circles_v0"),
224            "colrv1_composite_mode" => include_str!("../test_data/colrv1_json/colrv1_composite_mode"),
225            "colrv1_extend_mode" => include_str!("../test_data/colrv1_json/colrv1_extend_mode"),
226            "colrv1_extend_mode_COL1_-0.25_COL3_0.25" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL1_-0.25_COL3_0.25"),
227            "colrv1_extend_mode_COL1_0.5_COL3_-0.5" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL1_0.5_COL3_-0.5"),
228            "colrv1_extend_mode_COL1_-1.5" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL1_-1.5"),
229            "colrv1_extend_mode_COL2_-0.3" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL2_-0.3"),
230            "colrv1_extend_mode_COL3_0.5" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL3_0.5"),
231            "colrv1_extend_mode_COL3_1" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL3_1"),
232            "colrv1_extend_mode_COL3_1_COL2_1.5_COL1_2" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_COL3_1_COL2_1.5_COL1_2"),
233            "colrv1_extend_mode_GRR0_-200_GRR1_-300" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_GRR0_-200_GRR1_-300"),
234            "colrv1_extend_mode_GRR0_430_GRR1_40" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_GRR0_430_GRR1_40"),
235            "colrv1_extend_mode_GRR0_-50_COL3_-2_COL2_-2_COL1_-0.9" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_GRR0_-50_COL3_-2_COL2_-2_COL1_-0.9"),
236            "colrv1_extend_mode_GRR0_-50_COL3_-2_COL2_-2_COL1_-1.1" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_GRR0_-50_COL3_-2_COL2_-2_COL1_-1.1"),
237            "colrv1_extend_mode_GRX0_1000_GRX1_-1000_GRR0_-1000_GRR1_200" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_GRX0_1000_GRX1_-1000_GRR0_-1000_GRR1_200"),
238            "colrv1_extend_mode_GRX0_-1000_GRX1_-1000_GRR0_-1000_GRR1_-900" => include_str!("../test_data/colrv1_json/colrv1_extend_mode_GRX0_-1000_GRX1_-1000_GRR0_-1000_GRR1_-900"),
239            "colrv1_foreground_color" => include_str!("../test_data/colrv1_json/colrv1_foreground_color"),
240            "colrv1_gradient_p2_skewed" => include_str!("../test_data/colrv1_json/colrv1_gradient_p2_skewed"),
241            "colrv1_gradient_stops_repeat" => include_str!("../test_data/colrv1_json/colrv1_gradient_stops_repeat"),
242            "colrv1_no_cycle_multi_colrglyph" => include_str!("../test_data/colrv1_json/colrv1_no_cycle_multi_colrglyph"),
243            "colrv1_paint_glyph_nested" => include_str!("../test_data/colrv1_json/colrv1_paint_glyph_nested"),
244            "colrv1_paint_rotate" => include_str!("../test_data/colrv1_json/colrv1_paint_rotate"),
245            "colrv1_paint_rotate_ROTA_40" => include_str!("../test_data/colrv1_json/colrv1_paint_rotate_ROTA_40"),
246            "colrv1_paint_rotate_ROTX_-250_ROTY_-250" => include_str!("../test_data/colrv1_json/colrv1_paint_rotate_ROTX_-250_ROTY_-250"),
247            "colrv1_paint_scale" => include_str!("../test_data/colrv1_json/colrv1_paint_scale"),
248            "colrv1_paint_scale_SCOX_200_SCOY_200" => include_str!("../test_data/colrv1_json/colrv1_paint_scale_SCOX_200_SCOY_200"),
249            "colrv1_paint_scale_SCSX_0.25_SCOY_0.25" => include_str!("../test_data/colrv1_json/colrv1_paint_scale_SCSX_0.25_SCOY_0.25"),
250            "colrv1_paint_scale_SCSX_-1_SCOY_-1" => include_str!("../test_data/colrv1_json/colrv1_paint_scale_SCSX_-1_SCOY_-1"),
251            "colrv1_paint_skew" => include_str!("../test_data/colrv1_json/colrv1_paint_skew"),
252            "colrv1_paint_skew_SKCX_200_SKCY_200" => include_str!("../test_data/colrv1_json/colrv1_paint_skew_SKCX_200_SKCY_200"),
253            "colrv1_paint_skew_SKXA_20" => include_str!("../test_data/colrv1_json/colrv1_paint_skew_SKXA_20"),
254            "colrv1_paint_skew_SKYA_20" => include_str!("../test_data/colrv1_json/colrv1_paint_skew_SKYA_20"),
255            "colrv1_paint_transform" => include_str!("../test_data/colrv1_json/colrv1_paint_transform"),
256            "colrv1_paint_translate" => include_str!("../test_data/colrv1_json/colrv1_paint_translate"),
257            "colrv1_paint_translate_TLDX_100_TLDY_100" => include_str!("../test_data/colrv1_json/colrv1_paint_translate_TLDX_100_TLDY_100"),
258            "colrv1_sweep_coincident" => include_str!("../test_data/colrv1_json/colrv1_sweep_coincident"),
259            "colrv1_sweep_varsweep" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep"),
260            "colrv1_sweep_varsweep_SWC1_-0.25_SWC2_0.083333336_SWC3_0.083333336_SWC4_0.25" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWC1_-0.25_SWC2_0.083333336_SWC3_0.083333336_SWC4_0.25"),
261            "colrv1_sweep_varsweep_SWPE_-45" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWPE_-45"),
262            "colrv1_sweep_varsweep_SWPE_-90" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWPE_-90"),
263            "colrv1_sweep_varsweep_SWPS_0" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWPS_0"),
264            "colrv1_sweep_varsweep_SWPS_-45_SWPE_45" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWPS_-45_SWPE_45"),
265            "colrv1_sweep_varsweep_SWPS_45_SWPE_-45_SWC1_-0.25_SWC2_-0.416687_SWC3_-0.583313_SWC4_-0.75" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWPS_45_SWPE_-45_SWC1_-0.25_SWC2_-0.416687_SWC3_-0.583313_SWC4_-0.75"),
266            "colrv1_sweep_varsweep_SWPS_90" => include_str!("../test_data/colrv1_json/colrv1_sweep_varsweep_SWPS_90"),
267            "colrv1_variable_alpha" => include_str!("../test_data/colrv1_json/colrv1_variable_alpha"),
268            "colrv1_variable_alpha_APH1_-0.7" => include_str!("../test_data/colrv1_json/colrv1_variable_alpha_APH1_-0.7"),
269            "colrv1_variable_alpha_APH2_-0.7_APH3_-0.2" => include_str!("../test_data/colrv1_json/colrv1_variable_alpha_APH2_-0.7_APH3_-0.2"),
270            _ => panic!("No entry for {key}, if this is a new test you might need to add a case"),
271        }
272    }
273}
274
275pub mod ttc {
276    pub static TTC: &[u8] = include_bytes!("../test_data/ttc/TTC.ttc");
277}
278
279pub mod meta {
280    // the table from the binary for 'Sankofa'
281    #[rustfmt::skip]
282    pub static SIMPLE_META_TABLE: &[u8] = &[
283        0x00, 0x00, 0x00, 0x01, // version 1
284        0x00, 0x00, 0x00, 0x00, // flags 0
285        0x00, 0x00, 0x00, 0x28, // reserved (?)
286        0x00, 0x00, 0x00, 0x02, // data_maps_count 2
287        0x64, 0x6c, 0x6e, 0x67, // tag: dlng
288        0x00, 0x00, 0x00, 0x28, // data offset
289        0x00, 0x00, 0x00, 0x0d, // data length
290        0x73, 0x6c, 0x6e, 0x67, // tag: slng
291        0x00, 0x00, 0x00, 0x35, // data offset
292        0x00, 0x00, 0x00, 0x04, // length
293        0x65, 0x6e, 0x2d, 0x6c,
294        0x61, 0x74, 0x6e, 0x2c,
295        0x20, 0x6c, 0x61, 0x74,
296        0x6e, 0x6c, 0x61, 0x74,
297        0x6e, 0x00, 0x00, 0x00,
298    ];
299}
300
301pub mod gvar {
302    pub static USE_MY_METRICS: &[u8] = include_bytes!("../test_data/ttf/gvar_use_my_metrics.ttf");
303}