#[derive(Clone, Copy)]
pub(crate) struct CasedGlyph {
pub(crate) lower: &'static str,
pub(crate) width: i32,
pub(crate) xmin: i32,
pub(crate) lower_width: i32,
pub(crate) lower_xmin: i32,
}
const WIDTH_RANGES: &[(u32, u32, i32)] = &[
(0x20, 0x21, 142),
(0x22, 0x22, 182),
(0x23, 0x24, 285),
(0x25, 0x25, 455),
(0x26, 0x26, 342),
(0x27, 0x27, 98),
(0x28, 0x29, 170),
(0x2a, 0x2a, 199),
(0x2b, 0x2b, 299),
(0x2c, 0x2c, 142),
(0x2d, 0x2d, 170),
(0x2e, 0x2f, 142),
(0x30, 0x39, 285),
(0x3a, 0x3b, 142),
(0x3c, 0x3e, 299),
(0x3f, 0x3f, 285),
(0x40, 0x40, 520),
(0x41, 0x42, 342),
(0x43, 0x44, 370),
(0x45, 0x45, 342),
(0x46, 0x46, 313),
(0x47, 0x47, 398),
(0x48, 0x48, 370),
(0x49, 0x49, 142),
(0x4a, 0x4a, 256),
(0x4b, 0x4b, 342),
(0x4c, 0x4c, 285),
(0x4d, 0x4d, 426),
(0x4e, 0x4e, 370),
(0x4f, 0x4f, 398),
(0x50, 0x50, 342),
(0x51, 0x51, 398),
(0x52, 0x52, 370),
(0x53, 0x53, 342),
(0x54, 0x54, 313),
(0x55, 0x55, 370),
(0x56, 0x56, 342),
(0x57, 0x57, 483),
(0x58, 0x59, 342),
(0x5a, 0x5a, 313),
(0x5b, 0x5d, 142),
(0x5e, 0x5e, 240),
(0x5f, 0x60, 256),
(0x61, 0x62, 285),
(0x63, 0x63, 256),
(0x64, 0x65, 285),
(0x66, 0x66, 142),
(0x67, 0x68, 285),
(0x69, 0x6a, 114),
(0x6b, 0x6b, 256),
(0x6c, 0x6c, 114),
(0x6d, 0x6d, 426),
(0x6e, 0x71, 285),
(0x72, 0x72, 170),
(0x73, 0x73, 256),
(0x74, 0x74, 142),
(0x75, 0x75, 285),
(0x76, 0x76, 256),
(0x77, 0x77, 370),
(0x78, 0x7a, 256),
(0x7b, 0x7b, 171),
(0x7c, 0x7c, 133),
(0x7d, 0x7d, 171),
(0x7e, 0x7e, 256),
(0xa0, 0xa0, 142),
(0xa1, 0xa1, 170),
(0xa2, 0xa2, 256),
(0xa3, 0xa5, 285),
(0xa6, 0xa6, 133),
(0xa7, 0xa7, 285),
(0xa8, 0xa8, 256),
(0xa9, 0xa9, 377),
(0xaa, 0xaa, 189),
(0xab, 0xab, 285),
(0xac, 0xac, 299),
(0xad, 0xad, 0),
(0xae, 0xae, 377),
(0xaf, 0xaf, 142),
(0xb0, 0xb0, 311),
(0xb1, 0xb1, 299),
(0xb2, 0xb3, 180),
(0xb4, 0xb4, 256),
(0xb5, 0xb5, 297),
(0xb6, 0xb6, 275),
(0xb7, 0xb7, 142),
(0xb8, 0xb8, 256),
(0xb9, 0xb9, 180),
(0xba, 0xba, 187),
(0xbb, 0xbb, 285),
(0xbc, 0xbe, 445),
(0xbf, 0xbf, 313),
(0xc0, 0xc5, 342),
(0xc7, 0xc7, 370),
(0xc8, 0xcb, 342),
(0xcc, 0xcf, 142),
(0xd0, 0xd1, 370),
(0xd2, 0xd6, 398),
(0xd7, 0xd7, 299),
(0xd8, 0xd8, 398),
(0xd9, 0xdc, 370),
(0xdd, 0xde, 341),
(0xdf, 0xdf, 313),
(0xe0, 0xe5, 285),
(0xe6, 0xe6, 460),
(0xe7, 0xe7, 256),
(0xe8, 0xeb, 285),
(0xec, 0xef, 142),
(0xf0, 0xf6, 285),
(0xf7, 0xf7, 299),
(0xf8, 0xf8, 313),
(0xf9, 0xfc, 285),
(0xfd, 0xfd, 256),
(0xfe, 0xfe, 284),
(0xff, 0xff, 256),
(0x100, 0x100, 342),
(0x101, 0x101, 285),
(0x102, 0x102, 342),
(0x103, 0x103, 285),
(0x104, 0x104, 342),
(0x105, 0x105, 285),
(0x106, 0x106, 370),
(0x107, 0x107, 256),
(0x108, 0x108, 370),
(0x109, 0x109, 256),
(0x10a, 0x10a, 370),
(0x10b, 0x10b, 256),
(0x10c, 0x10c, 370),
(0x10d, 0x10d, 256),
(0x10e, 0x10e, 370),
(0x10f, 0x10f, 325),
(0x110, 0x110, 370),
(0x111, 0x111, 285),
(0x112, 0x112, 342),
(0x113, 0x113, 285),
(0x114, 0x114, 342),
(0x115, 0x115, 285),
(0x116, 0x116, 342),
(0x117, 0x117, 285),
(0x118, 0x118, 342),
(0x119, 0x119, 285),
(0x11a, 0x11a, 342),
(0x11b, 0x11b, 285),
(0x11c, 0x11c, 398),
(0x11d, 0x11d, 285),
(0x11e, 0x11e, 398),
(0x11f, 0x11f, 285),
(0x120, 0x120, 398),
(0x121, 0x121, 285),
(0x122, 0x122, 398),
(0x123, 0x123, 285),
(0x124, 0x124, 370),
(0x125, 0x125, 285),
(0x126, 0x126, 370),
(0x127, 0x127, 285),
(0x128, 0x128, 142),
(0x129, 0x129, 114),
(0x12a, 0x12a, 142),
(0x12b, 0x12b, 114),
(0x12c, 0x12c, 142),
(0x12d, 0x12d, 114),
(0x12e, 0x12e, 142),
(0x12f, 0x12f, 114),
(0x130, 0x131, 142),
(0x132, 0x132, 383),
(0x133, 0x133, 223),
(0x134, 0x134, 256),
(0x135, 0x135, 114),
(0x136, 0x136, 342),
(0x137, 0x138, 256),
(0x139, 0x139, 285),
(0x13a, 0x13a, 114),
(0x13b, 0x13b, 285),
(0x13c, 0x13c, 114),
(0x13d, 0x13d, 285),
(0x13e, 0x13e, 150),
(0x13f, 0x13f, 285),
(0x140, 0x140, 164),
(0x141, 0x141, 285),
(0x142, 0x142, 114),
(0x143, 0x143, 370),
(0x144, 0x144, 285),
(0x145, 0x145, 370),
(0x146, 0x146, 285),
(0x147, 0x147, 370),
(0x148, 0x148, 285),
(0x149, 0x149, 310),
(0x14a, 0x14a, 370),
(0x14b, 0x14b, 284),
(0x14c, 0x14c, 398),
(0x14d, 0x14d, 285),
(0x14e, 0x14e, 398),
(0x14f, 0x14f, 285),
(0x150, 0x150, 398),
(0x151, 0x151, 285),
(0x153, 0x153, 481),
(0x154, 0x154, 370),
(0x155, 0x155, 170),
(0x156, 0x156, 370),
(0x157, 0x157, 170),
(0x158, 0x158, 370),
(0x159, 0x159, 170),
(0x15a, 0x15a, 342),
(0x15b, 0x15b, 256),
(0x15c, 0x15c, 342),
(0x15d, 0x15d, 256),
(0x15e, 0x15e, 342),
(0x15f, 0x15f, 256),
(0x160, 0x160, 342),
(0x161, 0x161, 256),
(0x162, 0x162, 313),
(0x163, 0x163, 142),
(0x164, 0x164, 313),
(0x165, 0x165, 158),
(0x166, 0x166, 313),
(0x167, 0x167, 142),
(0x168, 0x168, 370),
(0x169, 0x169, 285),
(0x16a, 0x16a, 370),
(0x16b, 0x16b, 285),
(0x16c, 0x16c, 370),
(0x16d, 0x16d, 285),
(0x16e, 0x16e, 370),
(0x16f, 0x16f, 285),
(0x170, 0x170, 370),
(0x171, 0x171, 285),
(0x172, 0x172, 370),
(0x173, 0x173, 285),
(0x174, 0x174, 483),
(0x175, 0x175, 370),
(0x176, 0x176, 342),
(0x177, 0x177, 256),
(0x178, 0x178, 342),
(0x179, 0x179, 313),
(0x17a, 0x17a, 256),
(0x17b, 0x17b, 313),
(0x17c, 0x17c, 256),
(0x17d, 0x17d, 313),
(0x17e, 0x17e, 256),
(0x17f, 0x17f, 142),
(0x180, 0x180, 285),
(0x181, 0x181, 395),
(0x182, 0x182, 332),
(0x183, 0x183, 285),
(0x184, 0x184, 348),
(0x185, 0x185, 309),
(0x186, 0x186, 368),
(0x187, 0x187, 379),
(0x188, 0x188, 282),
(0x189, 0x189, 370),
(0x18a, 0x18a, 418),
(0x18b, 0x18b, 332),
(0x18c, 0x18d, 285),
(0x18e, 0x18e, 342),
(0x18f, 0x18f, 369),
(0x190, 0x190, 323),
(0x191, 0x191, 315),
(0x192, 0x192, 133),
(0x193, 0x193, 403),
(0x194, 0x194, 342),
(0x195, 0x195, 447),
(0x196, 0x196, 112),
(0x197, 0x197, 142),
(0x198, 0x198, 372),
(0x199, 0x199, 256),
(0x19a, 0x19a, 114),
(0x19b, 0x19b, 256),
(0x19c, 0x19c, 554),
(0x19d, 0x19d, 376),
(0x19e, 0x19e, 285),
(0x19f, 0x19f, 398),
(0x1a0, 0x1a0, 403),
(0x1a1, 0x1a1, 286),
(0x1a2, 0x1a2, 556),
(0x1a3, 0x1a3, 438),
(0x1a4, 0x1a4, 388),
(0x1a5, 0x1a5, 285),
(0x1a6, 0x1a6, 370),
(0x1a7, 0x1a7, 342),
(0x1a8, 0x1a8, 256),
(0x1a9, 0x1a9, 311),
(0x1aa, 0x1aa, 163),
(0x1ab, 0x1ab, 142),
(0x1ac, 0x1ac, 315),
(0x1ad, 0x1ad, 142),
(0x1ae, 0x1ae, 313),
(0x1af, 0x1af, 394),
(0x1b0, 0x1b0, 297),
(0x1b1, 0x1b1, 398),
(0x1b2, 0x1b2, 370),
(0x1b3, 0x1b3, 390),
(0x1b4, 0x1b4, 270),
(0x1b5, 0x1b5, 313),
(0x1b6, 0x1b6, 256),
(0x1b7, 0x1b8, 315),
(0x1b9, 0x1b9, 279),
(0x1ba, 0x1ba, 267),
(0x1bb, 0x1bb, 285),
(0x1bc, 0x1bc, 304),
(0x1bd, 0x1bd, 236),
(0x1be, 0x1be, 202),
(0x1bf, 0x1bf, 251),
(0x1c0, 0x1c0, 102),
(0x1c1, 0x1c1, 161),
(0x1c2, 0x1c2, 232),
(0x1c3, 0x1c3, 142),
(0x1c4, 0x1c4, 682),
(0x1c5, 0x1c5, 626),
(0x1c6, 0x1c7, 541),
(0x1c8, 0x1c8, 398),
(0x1c9, 0x1c9, 227),
(0x1ca, 0x1ca, 626),
(0x1cb, 0x1cb, 483),
(0x1cc, 0x1cc, 398),
(0x1cd, 0x1cd, 342),
(0x1ce, 0x1ce, 285),
(0x1cf, 0x1cf, 142),
(0x1d0, 0x1d0, 114),
(0x1d1, 0x1d1, 398),
(0x1d2, 0x1d2, 285),
(0x1d3, 0x1d3, 370),
(0x1d4, 0x1d4, 285),
(0x1d5, 0x1d5, 370),
(0x1d6, 0x1d6, 285),
(0x1d7, 0x1d7, 370),
(0x1d8, 0x1d8, 285),
(0x1d9, 0x1d9, 370),
(0x1da, 0x1da, 285),
(0x1db, 0x1db, 370),
(0x1dc, 0x1dd, 285),
(0x1de, 0x1de, 342),
(0x1df, 0x1df, 285),
(0x1e0, 0x1e0, 342),
(0x1e1, 0x1e1, 285),
(0x1e3, 0x1e3, 459),
(0x1e4, 0x1e4, 398),
(0x1e5, 0x1e5, 285),
(0x1e6, 0x1e6, 398),
(0x1e7, 0x1e7, 285),
(0x1e8, 0x1e8, 342),
(0x1e9, 0x1e9, 256),
(0x1ea, 0x1ea, 398),
(0x1eb, 0x1eb, 285),
(0x1ec, 0x1ec, 398),
(0x1ed, 0x1ed, 285),
(0x1ee, 0x1ee, 315),
(0x1ef, 0x1ef, 279),
(0x1f0, 0x1f0, 114),
(0x1f1, 0x1f1, 682),
(0x1f2, 0x1f2, 626),
(0x1f3, 0x1f3, 541),
(0x1f4, 0x1f4, 398),
(0x1f5, 0x1f5, 285),
(0x1fa, 0x1fa, 342),
(0x1fb, 0x1fb, 285),
(0x1fd, 0x1fd, 459),
(0x1fe, 0x1fe, 398),
(0x1ff, 0x1ff, 313),
(0x200, 0x200, 342),
(0x201, 0x201, 285),
(0x202, 0x202, 342),
(0x203, 0x203, 285),
(0x204, 0x204, 342),
(0x205, 0x205, 285),
(0x206, 0x206, 342),
(0x207, 0x207, 285),
(0x208, 0x208, 142),
(0x209, 0x209, 114),
(0x20a, 0x20a, 142),
(0x20b, 0x20b, 114),
(0x20c, 0x20c, 398),
(0x20d, 0x20d, 285),
(0x20e, 0x20e, 398),
(0x20f, 0x20f, 285),
(0x210, 0x210, 370),
(0x211, 0x211, 170),
(0x212, 0x212, 370),
(0x213, 0x213, 170),
(0x214, 0x214, 370),
(0x215, 0x215, 285),
(0x216, 0x216, 370),
(0x217, 0x217, 285),
(0x218, 0x218, 342),
(0x219, 0x219, 256),
(0x2c7, 0x2c7, 256),
(0x2d0, 0x2d0, 173),
(0x2d8, 0x2db, 256),
(0x2dd, 0x2dd, 256),
(0x300, 0x301, 280),
(0x303, 0x303, 280),
(0x309, 0x309, 280),
(0x323, 0x323, 280),
(0x374, 0x375, 280),
(0x37a, 0x37a, 142),
(0x37e, 0x37e, 142),
(0x384, 0x385, 142),
(0x386, 0x386, 342),
(0x387, 0x387, 142),
(0x388, 0x388, 365),
(0x389, 0x389, 396),
(0x38a, 0x38a, 154),
(0x38c, 0x38c, 407),
(0x38e, 0x38e, 378),
(0x38f, 0x38f, 400),
(0x390, 0x390, 115),
(0x391, 0x392, 342),
(0x393, 0x393, 285),
(0x394, 0x394, 343),
(0x395, 0x395, 342),
(0x396, 0x396, 313),
(0x397, 0x397, 370),
(0x398, 0x398, 400),
(0x399, 0x399, 142),
(0x39a, 0x39b, 342),
(0x39c, 0x39c, 426),
(0x39d, 0x39d, 370),
(0x39e, 0x39e, 343),
(0x39f, 0x39f, 398),
(0x3a0, 0x3a0, 370),
(0x3a1, 0x3a1, 342),
(0x3a3, 0x3a3, 314),
(0x3a4, 0x3a4, 313),
(0x3a5, 0x3a5, 342),
(0x3a6, 0x3a6, 398),
(0x3a7, 0x3a7, 342),
(0x3a8, 0x3a8, 418),
(0x3a9, 0x3a9, 383),
(0x3aa, 0x3aa, 142),
(0x3ab, 0x3ab, 342),
(0x3ac, 0x3ac, 326),
(0x3ad, 0x3ad, 255),
(0x3ae, 0x3ae, 286),
(0x3af, 0x3af, 115),
(0x3b0, 0x3b0, 280),
(0x3b1, 0x3b1, 326),
(0x3b2, 0x3b2, 286),
(0x3b3, 0x3b3, 258),
(0x3b4, 0x3b4, 286),
(0x3b5, 0x3b5, 272),
(0x3b6, 0x3b6, 229),
(0x3b7, 0x3b7, 286),
(0x3b8, 0x3b8, 285),
(0x3b9, 0x3b9, 115),
(0x3ba, 0x3ba, 256),
(0x3bb, 0x3bb, 248),
(0x3bc, 0x3bc, 285),
(0x3bd, 0x3bd, 258),
(0x3be, 0x3be, 230),
(0x3bf, 0x3bf, 286),
(0x3c0, 0x3c0, 306),
(0x3c1, 0x3c1, 294),
(0x3c2, 0x3c2, 256),
(0x3c3, 0x3c3, 298),
(0x3c4, 0x3c4, 238),
(0x3c5, 0x3c5, 286),
(0x3c6, 0x3c6, 342),
(0x3c7, 0x3c7, 246),
(0x3c8, 0x3c8, 353),
(0x3c9, 0x3c9, 355),
(0x3ca, 0x3ca, 115),
(0x3cb, 0x3cd, 286),
(0x3ce, 0x3ce, 355),
(0x3d0, 0x3d0, 284),
(0x3d1, 0x3d1, 287),
(0x3d2, 0x3d2, 342),
(0x3d3, 0x3d3, 381),
(0x3d4, 0x3d4, 342),
(0x3d5, 0x3d5, 334),
(0x3d6, 0x3d6, 357),
(0x3da, 0x3da, 356),
(0x3dc, 0x3dc, 313),
(0x3de, 0x3de, 241),
(0x3e0, 0x3e0, 344),
(0x3e2, 0x3e2, 494),
(0x3e3, 0x3e3, 427),
(0x3e4, 0x3e4, 339),
(0x3e5, 0x3e5, 276),
(0x3e6, 0x3e6, 314),
(0x3e7, 0x3e7, 276),
(0x3e8, 0x3e8, 316),
(0x3e9, 0x3e9, 252),
(0x3ea, 0x3ea, 347),
(0x3eb, 0x3eb, 271),
(0x3ec, 0x3ec, 357),
(0x3ed, 0x3ed, 287),
(0x3ee, 0x3ee, 313),
(0x3ef, 0x3ef, 141),
(0x3f0, 0x3f0, 256),
(0x3f1, 0x3f1, 296),
(0x3f2, 0x3f2, 256),
(0x3f3, 0x3f3, 114),
(0x401, 0x401, 337),
(0x402, 0x402, 344),
(0x403, 0x403, 275),
(0x404, 0x404, 391),
(0x405, 0x405, 342),
(0x406, 0x407, 142),
(0x408, 0x408, 258),
(0x409, 0x40a, 578),
(0x40b, 0x40b, 344),
(0x40c, 0x40c, 316),
(0x40e, 0x40e, 312),
(0x40f, 0x40f, 370),
(0x410, 0x410, 342),
(0x411, 0x411, 340),
(0x412, 0x412, 341),
(0x413, 0x413, 275),
(0x414, 0x414, 387),
(0x415, 0x415, 337),
(0x416, 0x416, 501),
(0x417, 0x417, 289),
(0x418, 0x419, 371),
(0x41a, 0x41a, 316),
(0x41b, 0x41b, 370),
(0x41c, 0x41c, 434),
(0x41d, 0x41d, 370),
(0x41e, 0x41e, 398),
(0x41f, 0x41f, 370),
(0x420, 0x420, 330),
(0x421, 0x421, 364),
(0x422, 0x422, 313),
(0x423, 0x423, 312),
(0x424, 0x424, 398),
(0x425, 0x425, 342),
(0x426, 0x426, 376),
(0x427, 0x427, 356),
(0x428, 0x428, 564),
(0x429, 0x429, 571),
(0x42a, 0x42a, 440),
(0x42b, 0x42b, 449),
(0x42c, 0x42c, 339),
(0x42d, 0x42d, 391),
(0x42e, 0x42e, 547),
(0x42f, 0x42f, 362),
(0x430, 0x431, 285),
(0x432, 0x432, 283),
(0x433, 0x433, 199),
(0x434, 0x434, 299),
(0x435, 0x435, 284),
(0x436, 0x436, 402),
(0x437, 0x437, 231),
(0x438, 0x439, 276),
(0x43a, 0x43a, 259),
(0x43b, 0x43b, 270),
(0x43c, 0x43c, 381),
(0x43d, 0x43d, 282),
(0x43e, 0x43e, 285),
(0x43f, 0x43f, 277),
(0x440, 0x440, 297),
(0x441, 0x441, 267),
(0x442, 0x442, 205),
(0x443, 0x443, 256),
(0x444, 0x444, 354),
(0x445, 0x445, 252),
(0x446, 0x446, 276),
(0x447, 0x447, 260),
(0x448, 0x448, 417),
(0x449, 0x449, 422),
(0x44a, 0x44a, 337),
(0x44b, 0x44b, 358),
(0x44c, 0x44c, 269),
(0x44d, 0x44d, 280),
(0x44e, 0x44e, 404),
(0x44f, 0x44f, 271),
(0x451, 0x451, 285),
(0x452, 0x452, 290),
(0x453, 0x453, 204),
(0x454, 0x454, 280),
(0x455, 0x455, 256),
(0x456, 0x458, 115),
(0x459, 0x459, 424),
(0x45a, 0x45a, 435),
(0x45b, 0x45b, 290),
(0x45c, 0x45c, 259),
(0x45e, 0x45e, 256),
(0x45f, 0x45f, 270),
(0x460, 0x460, 546),
(0x461, 0x461, 349),
(0x462, 0x462, 389),
(0x463, 0x463, 280),
(0x464, 0x464, 500),
(0x465, 0x465, 383),
(0x466, 0x466, 413),
(0x467, 0x467, 333),
(0x468, 0x468, 561),
(0x469, 0x469, 459),
(0x46a, 0x46a, 418),
(0x46b, 0x46b, 315),
(0x46c, 0x46c, 581),
(0x46d, 0x46d, 443),
(0x46e, 0x46e, 284),
(0x46f, 0x46f, 237),
(0x470, 0x470, 386),
(0x471, 0x471, 351),
(0x472, 0x472, 399),
(0x473, 0x473, 280),
(0x474, 0x474, 355),
(0x475, 0x475, 253),
(0x476, 0x476, 355),
(0x477, 0x477, 253),
(0x478, 0x478, 634),
(0x479, 0x479, 504),
(0x47a, 0x47a, 546),
(0x47b, 0x47b, 423),
(0x47c, 0x47c, 546),
(0x47d, 0x47d, 423),
(0x47e, 0x47e, 546),
(0x47f, 0x47f, 349),
(0x480, 0x480, 362),
(0x481, 0x481, 253),
(0x482, 0x482, 276),
(0x483, 0x486, 285),
(0x490, 0x490, 275),
(0x491, 0x491, 199),
(0x492, 0x492, 275),
(0x493, 0x493, 199),
(0x494, 0x494, 297),
(0x495, 0x495, 236),
(0x496, 0x496, 527),
(0x497, 0x497, 426),
(0x498, 0x498, 323),
(0x499, 0x499, 272),
(0x49a, 0x49a, 341),
(0x49b, 0x49b, 276),
(0x49c, 0x49c, 316),
(0x49d, 0x49d, 259),
(0x49e, 0x49e, 341),
(0x49f, 0x49f, 253),
(0x4a0, 0x4a0, 392),
(0x4a1, 0x4a1, 299),
(0x4a2, 0x4a2, 377),
(0x4a3, 0x4a3, 288),
(0x4a4, 0x4a4, 427),
(0x4a5, 0x4a5, 323),
(0x4a6, 0x4a6, 536),
(0x4a7, 0x4a7, 393),
(0x4a8, 0x4a8, 363),
(0x4a9, 0x4a9, 264),
(0x4aa, 0x4aa, 370),
(0x4ab, 0x4ab, 256),
(0x4ac, 0x4ac, 313),
(0x4ad, 0x4ad, 205),
(0x4ae, 0x4ae, 345),
(0x4af, 0x4af, 256),
(0x4b0, 0x4b0, 345),
(0x4b1, 0x4b1, 256),
(0x4b2, 0x4b2, 358),
(0x4b3, 0x4b3, 270),
(0x4b4, 0x4b4, 468),
(0x4b5, 0x4b5, 321),
(0x4b6, 0x4b6, 344),
(0x4b7, 0x4b7, 266),
(0x4b8, 0x4b8, 356),
(0x4b9, 0x4b9, 260),
(0x4ba, 0x4ba, 356),
(0x4bb, 0x4bb, 290),
(0x4bc, 0x4bc, 446),
(0x4bd, 0x4bd, 344),
(0x4be, 0x4be, 446),
(0x4bf, 0x4bf, 344),
(0x4c0, 0x4c0, 142),
(0x4c1, 0x4c1, 501),
(0x4c2, 0x4c2, 402),
(0x4c3, 0x4c3, 345),
(0x4c4, 0x4c4, 273),
(0x4c7, 0x4c7, 370),
(0x4c8, 0x4c8, 282),
(0x4cb, 0x4cb, 336),
(0x4cc, 0x4cc, 260),
(0x4d0, 0x4d0, 342),
(0x4d1, 0x4d1, 285),
(0x4d2, 0x4d2, 342),
(0x4d3, 0x4d3, 285),
(0x4d5, 0x4d5, 459),
(0x4d6, 0x4d6, 342),
(0x4d7, 0x4d7, 285),
(0x4d8, 0x4d8, 398),
(0x4d9, 0x4d9, 285),
(0x4da, 0x4da, 369),
(0x4db, 0x4db, 285),
(0x4dc, 0x4dc, 501),
(0x4dd, 0x4dd, 402),
(0x4de, 0x4de, 323),
(0x4df, 0x4df, 272),
(0x4e0, 0x4e0, 315),
(0x4e1, 0x4e1, 279),
(0x4e2, 0x4e2, 371),
(0x4e3, 0x4e3, 276),
(0x4e4, 0x4e4, 371),
(0x4e5, 0x4e5, 276),
(0x4e6, 0x4e6, 398),
(0x4e7, 0x4e7, 285),
(0x4e8, 0x4e8, 398),
(0x4e9, 0x4e9, 285),
(0x4ea, 0x4ea, 398),
(0x4eb, 0x4eb, 285),
(0x4ee, 0x4ee, 312),
(0x4ef, 0x4ef, 256),
(0x4f0, 0x4f0, 312),
(0x4f1, 0x4f1, 256),
(0x4f2, 0x4f2, 312),
(0x4f3, 0x4f3, 256),
(0x4f4, 0x4f4, 336),
(0x4f5, 0x4f5, 260),
(0x4f8, 0x4f8, 449),
(0x4f9, 0x4f9, 358),
(0xe00, 0xe00, 223),
(0xe01, 0xe02, 292),
(0xe03, 0xe03, 293),
(0xe04, 0xe05, 283),
(0xe06, 0xe06, 304),
(0xe07, 0xe07, 249),
(0xe08, 0xe08, 286),
(0xe09, 0xe09, 289),
(0xe0a, 0xe0a, 291),
(0xe0b, 0xe0b, 292),
(0xe0c, 0xe0d, 376),
(0xe0e, 0xe0e, 294),
(0xe0f, 0xe0f, 292),
(0xe10, 0xe10, 286),
(0xe11, 0xe11, 304),
(0xe12, 0xe12, 375),
(0xe13, 0xe13, 370),
(0xe14, 0xe15, 283),
(0xe16, 0xe16, 292),
(0xe17, 0xe17, 293),
(0xe18, 0xe18, 284),
(0xe19, 0xe19, 288),
(0xe1a, 0xe1b, 291),
(0xe1c, 0xe1d, 273),
(0xe1e, 0xe1f, 294),
(0xe20, 0xe20, 292),
(0xe21, 0xe21, 290),
(0xe22, 0xe22, 272),
(0xe23, 0xe23, 246),
(0xe24, 0xe24, 292),
(0xe25, 0xe25, 285),
(0xe26, 0xe26, 292),
(0xe27, 0xe27, 248),
(0xe28, 0xe28, 276),
(0xe29, 0xe29, 290),
(0xe2a, 0xe2a, 288),
(0xe2b, 0xe2b, 289),
(0xe2c, 0xe2c, 293),
(0xe2d, 0xe2d, 286),
(0xe2e, 0xe2e, 282),
(0xe2f, 0xe2f, 272),
(0xe30, 0xe30, 242),
(0xe31, 0xe31, 0),
(0xe32, 0xe32, 249),
(0xe33, 0xe33, 258),
(0xe34, 0xe3a, 0),
(0xe3f, 0xe3f, 322),
(0xe40, 0xe40, 151),
(0xe41, 0xe41, 283),
(0xe42, 0xe44, 218),
(0xe45, 0xe45, 249),
(0xe46, 0xe46, 272),
(0xe47, 0xe4e, 0),
(0xe4f, 0xe4f, 333),
(0xe50, 0xe50, 284),
(0xe51, 0xe51, 283),
(0xe52, 0xe52, 294),
(0xe53, 0xe53, 285),
(0xe54, 0xe55, 304),
(0xe56, 0xe56, 300),
(0xe57, 0xe57, 301),
(0xe58, 0xe58, 300),
(0xe59, 0xe59, 296),
(0xe5a, 0xe5a, 341),
(0xe5b, 0xe5b, 492),
(0x116a, 0x116a, 510),
(0x116c, 0x116c, 511),
(0x1170, 0x1171, 511),
(0x1174, 0x1174, 511),
(0x1175, 0x1175, 513),
(0x117f, 0x117f, 510),
(0x1180, 0x1181, 511),
(0x1184, 0x1186, 511),
(0x1188, 0x118a, 511),
(0x118c, 0x118c, 511),
(0x1191, 0x1191, 510),
(0x1192, 0x1192, 511),
(0x1198, 0x1199, 511),
(0x119f, 0x119f, 511),
(0x11a3, 0x11a7, 513),
(0x1e00, 0x1e00, 342),
(0x1e01, 0x1e01, 285),
(0x1e02, 0x1e02, 342),
(0x1e03, 0x1e03, 285),
(0x1e04, 0x1e04, 342),
(0x1e05, 0x1e05, 285),
(0x1e06, 0x1e06, 342),
(0x1e07, 0x1e07, 285),
(0x1e08, 0x1e08, 370),
(0x1e09, 0x1e09, 256),
(0x1e0a, 0x1e0a, 370),
(0x1e0b, 0x1e0b, 285),
(0x1e0c, 0x1e0c, 370),
(0x1e0d, 0x1e0d, 285),
(0x1e0e, 0x1e0e, 370),
(0x1e0f, 0x1e0f, 285),
(0x1e10, 0x1e10, 370),
(0x1e11, 0x1e11, 285),
(0x1e12, 0x1e12, 370),
(0x1e13, 0x1e13, 285),
(0x1e14, 0x1e14, 342),
(0x1e15, 0x1e15, 285),
(0x1e16, 0x1e16, 342),
(0x1e17, 0x1e17, 285),
(0x1e18, 0x1e18, 342),
(0x1e19, 0x1e19, 285),
(0x1e1a, 0x1e1a, 342),
(0x1e1b, 0x1e1b, 285),
(0x1e1c, 0x1e1c, 342),
(0x1e1d, 0x1e1d, 285),
(0x1e1e, 0x1e1e, 313),
(0x1e1f, 0x1e1f, 142),
(0x1e20, 0x1e20, 398),
(0x1e21, 0x1e21, 285),
(0x1e22, 0x1e22, 370),
(0x1e23, 0x1e23, 285),
(0x1e24, 0x1e24, 370),
(0x1e25, 0x1e25, 285),
(0x1e26, 0x1e26, 370),
(0x1e27, 0x1e27, 285),
(0x1e28, 0x1e28, 370),
(0x1e29, 0x1e29, 285),
(0x1e2a, 0x1e2a, 370),
(0x1e2b, 0x1e2b, 285),
(0x1e2c, 0x1e2c, 142),
(0x1e2d, 0x1e2d, 114),
(0x1e2e, 0x1e2e, 142),
(0x1e2f, 0x1e2f, 114),
(0x1e30, 0x1e30, 342),
(0x1e31, 0x1e31, 256),
(0x1e32, 0x1e32, 342),
(0x1e33, 0x1e33, 256),
(0x1e34, 0x1e34, 342),
(0x1e35, 0x1e35, 256),
(0x1e36, 0x1e36, 285),
(0x1e37, 0x1e37, 114),
(0x1e38, 0x1e38, 285),
(0x1e39, 0x1e39, 114),
(0x1e3a, 0x1e3a, 285),
(0x1e3b, 0x1e3b, 114),
(0x1e3c, 0x1e3c, 285),
(0x1e3d, 0x1e3d, 114),
(0x1e3e, 0x1e43, 426),
(0x1e44, 0x1e44, 370),
(0x1e45, 0x1e45, 285),
(0x1e46, 0x1e46, 370),
(0x1e47, 0x1e47, 285),
(0x1e48, 0x1e48, 370),
(0x1e49, 0x1e49, 285),
(0x1e4a, 0x1e4a, 379),
(0x1e4b, 0x1e4b, 285),
(0x1e4c, 0x1e4c, 398),
(0x1e4d, 0x1e4d, 285),
(0x1e4e, 0x1e4e, 398),
(0x1e4f, 0x1e4f, 285),
(0x1e50, 0x1e50, 398),
(0x1e51, 0x1e51, 285),
(0x1e52, 0x1e52, 398),
(0x1e53, 0x1e53, 285),
(0x1e54, 0x1e54, 342),
(0x1e55, 0x1e55, 285),
(0x1e56, 0x1e56, 342),
(0x1e57, 0x1e57, 285),
(0x1e58, 0x1e58, 370),
(0x1e59, 0x1e59, 170),
(0x1e5a, 0x1e5a, 370),
(0x1e5b, 0x1e5b, 170),
(0x1e5c, 0x1e5c, 370),
(0x1e5d, 0x1e5d, 170),
(0x1e5e, 0x1e5e, 370),
(0x1e5f, 0x1e5f, 170),
(0x1e60, 0x1e60, 342),
(0x1e61, 0x1e61, 256),
(0x1e62, 0x1e62, 342),
(0x1e63, 0x1e63, 256),
(0x1e64, 0x1e64, 342),
(0x1e65, 0x1e65, 256),
(0x1e66, 0x1e66, 342),
(0x1e67, 0x1e67, 256),
(0x1e68, 0x1e68, 342),
(0x1e69, 0x1e69, 256),
(0x1e6a, 0x1e6a, 313),
(0x1e6b, 0x1e6b, 142),
(0x1e6c, 0x1e6c, 313),
(0x1e6d, 0x1e6d, 142),
(0x1e6e, 0x1e6e, 313),
(0x1e6f, 0x1e6f, 142),
(0x1e70, 0x1e70, 313),
(0x1e71, 0x1e71, 142),
(0x1e72, 0x1e72, 370),
(0x1e73, 0x1e73, 285),
(0x1e74, 0x1e74, 370),
(0x1e75, 0x1e75, 285),
(0x1e76, 0x1e76, 370),
(0x1e77, 0x1e77, 285),
(0x1e78, 0x1e78, 370),
(0x1e79, 0x1e79, 285),
(0x1e7a, 0x1e7a, 370),
(0x1e7b, 0x1e7b, 285),
(0x1e7c, 0x1e7c, 342),
(0x1e7d, 0x1e7d, 256),
(0x1e7e, 0x1e7e, 342),
(0x1e7f, 0x1e7f, 256),
(0x1e80, 0x1e80, 483),
(0x1e81, 0x1e81, 370),
(0x1e82, 0x1e82, 483),
(0x1e83, 0x1e83, 370),
(0x1e84, 0x1e84, 483),
(0x1e85, 0x1e85, 370),
(0x1e86, 0x1e86, 483),
(0x1e87, 0x1e87, 370),
(0x1e88, 0x1e88, 483),
(0x1e89, 0x1e89, 370),
(0x1e8a, 0x1e8a, 342),
(0x1e8b, 0x1e8b, 256),
(0x1e8c, 0x1e8c, 342),
(0x1e8d, 0x1e8d, 256),
(0x1e8e, 0x1e8e, 342),
(0x1e8f, 0x1e8f, 256),
(0x1e90, 0x1e90, 313),
(0x1e91, 0x1e91, 256),
(0x1e92, 0x1e92, 313),
(0x1e93, 0x1e93, 256),
(0x1e94, 0x1e94, 313),
(0x1e95, 0x1e95, 256),
(0x1e96, 0x1e96, 285),
(0x1e97, 0x1e97, 142),
(0x1e98, 0x1e98, 370),
(0x1e99, 0x1e99, 256),
(0x1e9a, 0x1e9a, 285),
(0x1e9b, 0x1e9b, 142),
(0x1ea0, 0x1ea0, 342),
(0x1ea1, 0x1ea1, 285),
(0x1ea2, 0x1ea2, 342),
(0x1ea3, 0x1ea3, 285),
(0x1ea4, 0x1ea4, 342),
(0x1ea5, 0x1ea5, 285),
(0x1ea6, 0x1ea6, 342),
(0x1ea7, 0x1ea7, 285),
(0x1ea8, 0x1ea8, 342),
(0x1ea9, 0x1ea9, 285),
(0x1eaa, 0x1eaa, 342),
(0x1eab, 0x1eab, 285),
(0x1eac, 0x1eac, 342),
(0x1ead, 0x1ead, 285),
(0x1eae, 0x1eae, 342),
(0x1eaf, 0x1eaf, 285),
(0x1eb0, 0x1eb0, 342),
(0x1eb1, 0x1eb1, 285),
(0x1eb2, 0x1eb2, 342),
(0x1eb3, 0x1eb3, 285),
(0x1eb4, 0x1eb4, 342),
(0x1eb5, 0x1eb5, 285),
(0x1eb6, 0x1eb6, 342),
(0x1eb7, 0x1eb7, 285),
(0x1eb8, 0x1eb8, 342),
(0x1eb9, 0x1eb9, 285),
(0x1eba, 0x1eba, 342),
(0x1ebb, 0x1ebb, 285),
(0x1ebc, 0x1ebc, 342),
(0x1ebd, 0x1ebd, 285),
(0x1ebe, 0x1ebe, 342),
(0x1ebf, 0x1ebf, 285),
(0x1ec0, 0x1ec0, 342),
(0x1ec1, 0x1ec1, 285),
(0x1ec2, 0x1ec2, 342),
(0x1ec3, 0x1ec3, 285),
(0x1ec4, 0x1ec4, 342),
(0x1ec5, 0x1ec5, 285),
(0x1ec6, 0x1ec6, 342),
(0x1ec7, 0x1ec7, 285),
(0x1ec8, 0x1ec8, 142),
(0x1ec9, 0x1ec9, 114),
(0x1eca, 0x1eca, 142),
(0x1ecb, 0x1ecb, 114),
(0x1ecc, 0x1ecc, 398),
(0x1ecd, 0x1ecd, 285),
(0x1ece, 0x1ece, 398),
(0x1ecf, 0x1ecf, 285),
(0x1ed0, 0x1ed0, 398),
(0x1ed1, 0x1ed1, 285),
(0x1ed2, 0x1ed2, 398),
(0x1ed3, 0x1ed3, 285),
(0x1ed4, 0x1ed4, 398),
(0x1ed5, 0x1ed5, 285),
(0x1ed6, 0x1ed6, 398),
(0x1ed7, 0x1ed7, 285),
(0x1ed8, 0x1ed8, 398),
(0x1ed9, 0x1ed9, 285),
(0x1eda, 0x1eda, 403),
(0x1edb, 0x1edb, 286),
(0x1edc, 0x1edc, 403),
(0x1edd, 0x1edd, 286),
(0x1ede, 0x1ede, 403),
(0x1edf, 0x1edf, 286),
(0x1ee0, 0x1ee0, 403),
(0x1ee1, 0x1ee1, 286),
(0x1ee2, 0x1ee2, 403),
(0x1ee3, 0x1ee3, 286),
(0x1ee4, 0x1ee4, 370),
(0x1ee5, 0x1ee5, 285),
(0x1ee6, 0x1ee6, 370),
(0x1ee7, 0x1ee7, 285),
(0x1ee8, 0x1ee8, 394),
(0x1ee9, 0x1ee9, 297),
(0x1eea, 0x1eea, 394),
(0x1eeb, 0x1eeb, 297),
(0x1eec, 0x1eec, 394),
(0x1eed, 0x1eed, 297),
(0x1eee, 0x1eee, 394),
(0x1eef, 0x1eef, 297),
(0x1ef0, 0x1ef0, 394),
(0x1ef1, 0x1ef1, 297),
(0x1ef2, 0x1ef2, 342),
(0x1ef3, 0x1ef3, 256),
(0x1ef4, 0x1ef4, 342),
(0x1ef5, 0x1ef5, 256),
(0x1ef6, 0x1ef6, 342),
(0x1ef7, 0x1ef7, 256),
(0x1ef8, 0x1ef8, 342),
(0x1ef9, 0x1ef9, 256),
(0x2000, 0x2000, 256),
(0x2002, 0x2002, 256),
(0x2004, 0x2004, 171),
(0x2005, 0x2005, 128),
(0x2006, 0x2006, 1),
(0x2007, 0x2008, 142),
(0x2009, 0x2009, 2),
(0x200a, 0x200a, 1),
(0x200b, 0x200b, 285),
(0x200c, 0x200f, 12),
(0x2010, 0x2011, 170),
(0x2012, 0x2013, 285),
(0x2016, 0x2016, 161),
(0x2017, 0x2017, 285),
(0x2018, 0x2018, 114),
(0x2019, 0x2019, 113),
(0x201a, 0x201a, 114),
(0x201b, 0x201b, 113),
(0x201c, 0x201f, 170),
(0x2020, 0x2021, 285),
(0x2022, 0x2023, 179),
(0x2024, 0x2024, 142),
(0x2025, 0x2025, 313),
(0x2027, 0x202e, 142),
(0x2031, 0x2031, 669),
(0x2032, 0x2032, 158),
(0x2033, 0x2033, 226),
(0x2034, 0x2034, 294),
(0x2035, 0x2035, 158),
(0x2036, 0x2036, 226),
(0x2037, 0x2037, 294),
(0x2038, 0x2038, 108),
(0x2039, 0x203a, 168),
(0x203b, 0x203b, 428),
(0x203c, 0x203c, 270),
(0x203d, 0x203d, 285),
(0x203e, 0x203e, 142),
(0x203f, 0x2040, 366),
(0x2041, 0x2041, 139),
(0x2042, 0x2042, 331),
(0x2043, 0x2043, 155),
(0x2044, 0x2044, 86),
(0x2045, 0x2046, 142),
(0x2047, 0x2047, 430),
(0x204e, 0x204e, 256),
(0x204f, 0x204f, 142),
(0x2050, 0x2050, 404),
(0x2051, 0x2051, 478),
(0x2052, 0x2052, 241),
(0x2057, 0x2057, 525),
(0x206a, 0x206f, 142),
(0x20a9, 0x20a9, 440),
(0x20ab, 0x20ac, 285),
(0x2103, 0x2103, 523),
(0x2109, 0x2109, 472),
(0x212b, 0x212b, 342),
(0x2200, 0x2200, 343),
(0x2202, 0x2202, 251),
(0x2203, 0x2203, 281),
(0x2207, 0x2207, 364),
(0x2208, 0x2208, 435),
(0x220b, 0x220b, 435),
(0x220f, 0x220f, 416),
(0x2211, 0x2211, 364),
(0x221a, 0x221a, 391),
(0x221d, 0x221d, 365),
(0x221e, 0x221e, 364),
(0x2220, 0x2220, 392),
(0x2225, 0x2225, 249),
(0x2227, 0x2228, 356),
(0x2229, 0x222a, 307),
(0x222b, 0x222b, 316),
(0x222c, 0x222c, 487),
(0x222e, 0x222e, 316),
(0x2234, 0x2235, 477),
(0x223c, 0x223d, 330),
(0x2252, 0x2252, 309),
(0x2260, 0x2261, 309),
(0x2264, 0x2265, 299),
(0x226a, 0x226b, 432),
(0x2282, 0x2283, 435),
(0x2286, 0x2287, 435),
(0x2299, 0x2299, 488),
(0x22a5, 0x22a5, 403),
(0x2312, 0x2312, 489),
(0x25a0, 0x25a1, 427),
(0x25a3, 0x25a9, 427),
(0x25b2, 0x25b3, 358),
(0x25b6, 0x25b7, 393),
(0x25bc, 0x25bc, 427),
(0x25c0, 0x25c1, 393),
(0x25c6, 0x25c6, 358),
(0x25c8, 0x25c8, 358),
(0x25cb, 0x25cc, 427),
(0x25cf, 0x25d1, 427),
(0x2605, 0x2605, 410),
(0x260e, 0x260e, 610),
(0x260f, 0x260f, 642),
(0x261c, 0x261c, 482),
(0x261e, 0x261e, 482),
(0x2640, 0x2640, 375),
(0x2642, 0x2642, 460),
(0x2660, 0x2660, 408),
(0x2661, 0x2661, 433),
(0x2663, 0x2663, 476),
(0x2664, 0x2664, 408),
(0x2665, 0x2665, 433),
(0x2667, 0x2667, 476),
(0x2668, 0x2668, 566),
(0x2669, 0x266a, 341),
(0x266c, 0x266c, 341),
(0x3131, 0x3131, 511),
(0x3133, 0x3133, 511),
(0x313a, 0x313a, 511),
(0x313d, 0x313e, 511),
(0x3143, 0x3144, 511),
(0x3148, 0x3148, 511),
(0x314b, 0x314b, 511),
(0x3158, 0x3158, 510),
(0x315a, 0x315a, 511),
(0x315e, 0x315f, 511),
(0x3162, 0x3162, 511),
(0x3163, 0x3163, 513),
(0x3164, 0x318e, 461),
(0xac00, 0xbbc3, 461),
(0xbbc4, 0xbbc4, 462),
(0xbbc5, 0xd507, 461),
(0xd508, 0xd508, 462),
(0xd509, 0xd7a3, 461),
(0xee33, 0xee33, 258),
(0xee4e, 0xee4e, 0),
(0xf700, 0xf700, 286),
(0xf701, 0xf70e, 0),
(0xf70f, 0xf70f, 377),
(0xf710, 0xf71a, 0),
(0xf71b, 0xf71b, 294),
(0xf71c, 0xf71c, 292),
(0xf71d, 0xf71d, 293),
(0xf880, 0xf880, 333),
(0xf881, 0xf881, 465),
(0xf882, 0xf882, 469),
(0xff61, 0xff9f, 256),
];
const SPACES: &[(i32, &str)] = &[
(1, "\u{2006}"),
(2, "\u{2009}"),
(71, "\u{202f}"),
(128, "\u{2005}"),
(142, " "),
(171, "\u{2004}"),
(223, "\u{0e00}"),
(256, "\u{2000}"),
(461, "\u{3164}"),
(512, "\u{2001}"),
];
pub(crate) fn width(character: char) -> i32 {
let codepoint = character as u32;
WIDTH_RANGES
.iter()
.find_map(|(start, end, width)| (*start..=*end).contains(&codepoint).then_some(*width))
.unwrap_or(512)
}
pub(crate) fn spaces(width: i32) -> String {
if width <= 0 {
return String::new();
}
let width = width as usize;
let coins = SPACES
.iter()
.map(|(width, _)| *width as usize)
.collect::<Vec<_>>();
let mut cost = vec![usize::MAX; width + 1];
let mut previous = vec![None; width + 1];
cost[0] = 0;
for current in 1..=width {
for (index, coin) in coins.iter().enumerate() {
if *coin <= current && cost[current - coin] != usize::MAX {
let candidate = cost[current - coin] + 1;
if candidate < cost[current] {
cost[current] = candidate;
previous[current] = Some(index);
}
}
}
}
if cost[width] == usize::MAX {
return String::new();
}
let mut result = String::new();
let mut remaining = width;
while remaining > 0 {
let index = previous[remaining].expect("reachable Blizzard Global width");
let coin = coins[index];
result.push_str(SPACES[index].1);
remaining -= coin;
}
result
}
pub(crate) fn cased_glyph(character: char) -> Option<CasedGlyph> {
Some(match character {
'a' => CasedGlyph {
lower: "a",
width: 285,
xmin: 21,
lower_width: 512,
lower_xmin: 130,
},
'b' => CasedGlyph {
lower: "b",
width: 285,
xmin: 28,
lower_width: 512,
lower_xmin: 136,
},
'c' => CasedGlyph {
lower: "c",
width: 256,
xmin: 16,
lower_width: 512,
lower_xmin: 142,
},
'd' => CasedGlyph {
lower: "d",
width: 285,
xmin: 13,
lower_width: 512,
lower_xmin: 136,
},
'e' => CasedGlyph {
lower: "e",
width: 285,
xmin: 20,
lower_width: 512,
lower_xmin: 135,
},
'f' => CasedGlyph {
lower: "f",
width: 142,
xmin: 9,
lower_width: 512,
lower_xmin: 195,
},
'g' => CasedGlyph {
lower: "g",
width: 285,
xmin: 15,
lower_width: 512,
lower_xmin: 138,
},
'h' => CasedGlyph {
lower: "h",
width: 285,
xmin: 36,
lower_width: 512,
lower_xmin: 150,
},
'i' => CasedGlyph {
lower: "і",
width: 114,
xmin: 34,
lower_width: 115,
lower_xmin: 36,
},
'j' => CasedGlyph {
lower: "ј",
width: 114,
xmin: -9,
lower_width: 115,
lower_xmin: -9,
},
'k' => CasedGlyph {
lower: "k",
width: 256,
xmin: 30,
lower_width: 512,
lower_xmin: 142,
},
'l' => CasedGlyph {
lower: "I",
width: 114,
xmin: 35,
lower_width: 142,
lower_xmin: 51,
},
'm' => CasedGlyph {
lower: "m",
width: 426,
xmin: 36,
lower_width: 512,
lower_xmin: 79,
},
'n' => CasedGlyph {
lower: "n",
width: 285,
xmin: 36,
lower_width: 512,
lower_xmin: 149,
},
'o' => CasedGlyph {
lower: "o",
width: 285,
xmin: 18,
lower_width: 512,
lower_xmin: 135,
},
'p' => CasedGlyph {
lower: "p",
width: 285,
xmin: 28,
lower_width: 512,
lower_xmin: 136,
},
'q' => CasedGlyph {
lower: "q",
width: 285,
xmin: 13,
lower_width: 512,
lower_xmin: 136,
},
'r' => CasedGlyph {
lower: "r",
width: 170,
xmin: 35,
lower_width: 512,
lower_xmin: 191,
},
's' => CasedGlyph {
lower: "s",
width: 256,
xmin: 17,
lower_width: 512,
lower_xmin: 147,
},
't' => CasedGlyph {
lower: "t",
width: 142,
xmin: 7,
lower_width: 512,
lower_xmin: 195,
},
'u' => CasedGlyph {
lower: "u",
width: 285,
xmin: 33,
lower_width: 512,
lower_xmin: 149,
},
'v' => CasedGlyph {
lower: "v",
width: 256,
xmin: 5,
lower_width: 512,
lower_xmin: 134,
},
'w' => CasedGlyph {
lower: "w",
width: 370,
xmin: 3,
lower_width: 512,
lower_xmin: 76,
},
'x' => CasedGlyph {
lower: "x",
width: 256,
xmin: 9,
lower_width: 512,
lower_xmin: 139,
},
'y' => CasedGlyph {
lower: "y",
width: 256,
xmin: 10,
lower_width: 512,
lower_xmin: 139,
},
'z' => CasedGlyph {
lower: "z",
width: 256,
xmin: 16,
lower_width: 512,
lower_xmin: 147,
},
_ => return None,
})
}