bmf-parser 0.0.2

read BMFont binary files
Documentation
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Peter Bjorklund. All rights reserved.
 *  Licensed under the MIT License. See LICENSE in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

use std::str::FromStr;

use bmf_parser::BMFont;

#[test]
fn test() {
    let data = r#"
info face="sans-serif" size=72 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
common lineHeight=72 base=55 scaleW=442 scaleH=442 pages=1 packed=0
page id=0 file="test.png"
chars count=91
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=20 page=0 chnl=15
char id=33 x=422 y=188 width=10 height=55 xoffset=7 yoffset=1 xadvance=20 page=0 chnl=15
char id=34 x=326 y=401 width=22 height=25 xoffset=1 yoffset=1 xadvance=26 page=0 chnl=15
char id=35 x=100 y=300 width=44 height=55 xoffset=-2 yoffset=1 xadvance=41 page=0 chnl=15
char id=36 x=151 y=0 width=39 height=68 xoffset=0 yoffset=-3 xadvance=41 page=0 chnl=15
char id=37 x=0 y=300 width=62 height=55 xoffset=1 yoffset=3 xadvance=65 page=0 chnl=15
char id=38 x=395 y=72 width=47 height=57 xoffset=1 yoffset=1 xadvance=49 page=0 chnl=15
char id=39 x=349 y=401 width=10 height=25 xoffset=4 yoffset=1 xadvance=14 page=0 chnl=15
char id=40 x=17 y=0 width=20 height=71 xoffset=3 yoffset=0 xadvance=24 page=0 chnl=15
char id=41 x=38 y=0 width=20 height=71 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=15
char id=42 x=257 y=401 width=26 height=25 xoffset=1 yoffset=1 xadvance=29 page=0 chnl=15
char id=43 x=180 y=401 width=41 height=40 xoffset=1 yoffset=16 xadvance=43 page=0 chnl=15
char id=44 x=360 y=401 width=11 height=22 xoffset=4 yoffset=45 xadvance=20 page=0 chnl=15
char id=45 x=372 y=413 width=21 height=10 xoffset=1 yoffset=30 xadvance=24 page=0 chnl=15
char id=46 x=372 y=401 width=11 height=11 xoffset=4 yoffset=45 xadvance=20 page=0 chnl=15
char id=47 x=63 y=300 width=25 height=55 xoffset=-2 yoffset=1 xadvance=20 page=0 chnl=15
char id=48 x=217 y=131 width=39 height=55 xoffset=0 yoffset=3 xadvance=41 page=0 chnl=15
char id=49 x=225 y=300 width=22 height=53 xoffset=5 yoffset=3 xadvance=41 page=0 chnl=15
char id=50 x=145 y=300 width=39 height=54 xoffset=0 yoffset=2 xadvance=41 page=0 chnl=15
char id=51 x=0 y=131 width=39 height=56 xoffset=0 yoffset=2 xadvance=41 page=0 chnl=15
char id=52 x=185 y=300 width=39 height=54 xoffset=0 yoffset=2 xadvance=41 page=0 chnl=15
char id=53 x=257 y=131 width=38 height=55 xoffset=1 yoffset=3 xadvance=41 page=0 chnl=15
char id=54 x=40 y=131 width=38 height=56 xoffset=1 yoffset=2 xadvance=41 page=0 chnl=15
char id=55 x=248 y=300 width=38 height=53 xoffset=1 yoffset=3 xadvance=41 page=0 chnl=15
char id=56 x=79 y=131 width=38 height=56 xoffset=1 yoffset=2 xadvance=41 page=0 chnl=15
char id=57 x=118 y=131 width=37 height=56 xoffset=1 yoffset=2 xadvance=41 page=0 chnl=15
char id=58 x=168 y=401 width=11 height=40 xoffset=6 yoffset=16 xadvance=20 page=0 chnl=15
char id=59 x=309 y=300 width=11 height=51 xoffset=6 yoffset=16 xadvance=20 page=0 chnl=15
char id=61 x=284 y=401 width=41 height=25 xoffset=1 yoffset=24 xadvance=43 page=0 chnl=15
char id=63 x=403 y=244 width=35 height=55 xoffset=4 yoffset=1 xadvance=41 page=0 chnl=15
char id=64 x=100 y=72 width=61 height=58 xoffset=6 yoffset=0 xadvance=74 page=0 chnl=15
char id=65 x=11 y=188 width=50 height=55 xoffset=-1 yoffset=1 xadvance=49 page=0 chnl=15
char id=66 x=62 y=188 width=43 height=55 xoffset=4 yoffset=1 xadvance=49 page=0 chnl=15
char id=67 x=322 y=0 width=50 height=58 xoffset=1 yoffset=0 xadvance=52 page=0 chnl=15
char id=68 x=106 y=188 width=46 height=55 xoffset=4 yoffset=1 xadvance=52 page=0 chnl=15
char id=69 x=153 y=188 width=42 height=55 xoffset=4 yoffset=1 xadvance=49 page=0 chnl=15
char id=70 x=196 y=188 width=40 height=55 xoffset=4 yoffset=1 xadvance=44 page=0 chnl=15
char id=71 x=373 y=0 width=50 height=58 xoffset=2 yoffset=0 xadvance=56 page=0 chnl=15
char id=72 x=237 y=188 width=44 height=55 xoffset=4 yoffset=1 xadvance=52 page=0 chnl=15
char id=73 x=282 y=188 width=11 height=55 xoffset=5 yoffset=1 xadvance=20 page=0 chnl=15
char id=74 x=315 y=72 width=34 height=57 xoffset=-1 yoffset=1 xadvance=36 page=0 chnl=15
char id=75 x=294 y=188 width=45 height=55 xoffset=4 yoffset=1 xadvance=49 page=0 chnl=15
char id=76 x=340 y=188 width=36 height=55 xoffset=4 yoffset=1 xadvance=41 page=0 chnl=15
char id=77 x=389 y=131 width=53 height=55 xoffset=4 yoffset=1 xadvance=60 page=0 chnl=15
char id=78 x=377 y=188 width=44 height=55 xoffset=4 yoffset=1 xadvance=52 page=0 chnl=15
char id=79 x=0 y=72 width=54 height=58 xoffset=1 yoffset=0 xadvance=56 page=0 chnl=15
char id=80 x=0 y=244 width=43 height=55 xoffset=4 yoffset=1 xadvance=49 page=0 chnl=15
char id=81 x=191 y=0 width=54 height=61 xoffset=1 yoffset=0 xadvance=56 page=0 chnl=15
char id=82 x=44 y=244 width=46 height=55 xoffset=5 yoffset=1 xadvance=52 page=0 chnl=15
char id=83 x=55 y=72 width=44 height=58 xoffset=2 yoffset=0 xadvance=49 page=0 chnl=15
char id=84 x=91 y=244 width=46 height=55 xoffset=-1 yoffset=1 xadvance=44 page=0 chnl=15
char id=85 x=350 y=72 width=44 height=57 xoffset=4 yoffset=1 xadvance=52 page=0 chnl=15
char id=86 x=138 y=244 width=49 height=55 xoffset=0 yoffset=1 xadvance=49 page=0 chnl=15
char id=87 x=188 y=244 width=69 height=55 xoffset=0 yoffset=1 xadvance=68 page=0 chnl=15
char id=88 x=258 y=244 width=49 height=55 xoffset=0 yoffset=1 xadvance=49 page=0 chnl=15
char id=89 x=308 y=244 width=49 height=55 xoffset=0 yoffset=1 xadvance=49 page=0 chnl=15
char id=90 x=358 y=244 width=44 height=55 xoffset=0 yoffset=1 xadvance=44 page=0 chnl=15
char id=91 x=115 y=0 width=17 height=70 xoffset=3 yoffset=1 xadvance=20 page=0 chnl=15
char id=93 x=133 y=0 width=17 height=70 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15
char id=94 x=222 y=401 width=34 height=34 xoffset=2 yoffset=1 xadvance=34 page=0 chnl=15
char id=95 x=257 y=427 width=44 height=7 xoffset=-2 yoffset=58 xadvance=41 page=0 chnl=15
char id=97 x=321 y=300 width=39 height=44 xoffset=1 yoffset=14 xadvance=41 page=0 chnl=15
char id=98 x=162 y=72 width=37 height=57 xoffset=2 yoffset=1 xadvance=41 page=0 chnl=15
char id=99 x=361 y=300 width=36 height=44 xoffset=0 yoffset=14 xadvance=36 page=0 chnl=15
char id=100 x=200 y=72 width=37 height=57 xoffset=0 yoffset=1 xadvance=41 page=0 chnl=15
char id=101 x=398 y=300 width=38 height=44 xoffset=1 yoffset=14 xadvance=41 page=0 chnl=15
char id=102 x=296 y=131 width=22 height=55 xoffset=-1 yoffset=1 xadvance=20 page=0 chnl=15
char id=103 x=238 y=72 width=37 height=57 xoffset=0 yoffset=15 xadvance=41 page=0 chnl=15
char id=104 x=319 y=131 width=34 height=55 xoffset=3 yoffset=1 xadvance=41 page=0 chnl=15
char id=105 x=424 y=0 width=10 height=55 xoffset=3 yoffset=1 xadvance=16 page=0 chnl=15
char id=106 x=0 y=0 width=16 height=71 xoffset=-3 yoffset=1 xadvance=16 page=0 chnl=15
char id=107 x=354 y=131 width=34 height=55 xoffset=3 yoffset=1 xadvance=36 page=0 chnl=15
char id=108 x=0 y=188 width=10 height=55 xoffset=3 yoffset=1 xadvance=16 page=0 chnl=15
char id=109 x=110 y=356 width=54 height=42 xoffset=3 yoffset=14 xadvance=60 page=0 chnl=15
char id=110 x=165 y=356 width=34 height=42 xoffset=3 yoffset=14 xadvance=41 page=0 chnl=15
char id=111 x=0 y=356 width=39 height=44 xoffset=0 yoffset=14 xadvance=41 page=0 chnl=15
char id=112 x=246 y=0 width=37 height=58 xoffset=2 yoffset=14 xadvance=41 page=0 chnl=15
char id=113 x=284 y=0 width=37 height=58 xoffset=0 yoffset=14 xadvance=41 page=0 chnl=15
char id=114 x=200 y=356 width=22 height=42 xoffset=3 yoffset=14 xadvance=24 page=0 chnl=15
char id=115 x=40 y=356 width=34 height=44 xoffset=1 yoffset=14 xadvance=36 page=0 chnl=15
char id=116 x=287 y=300 width=21 height=52 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=15
char id=117 x=75 y=356 width=34 height=43 xoffset=3 yoffset=15 xadvance=41 page=0 chnl=15
char id=118 x=0 y=401 width=38 height=41 xoffset=-1 yoffset=15 xadvance=36 page=0 chnl=15
char id=119 x=39 y=401 width=53 height=41 xoffset=-1 yoffset=15 xadvance=52 page=0 chnl=15
char id=120 x=93 y=401 width=38 height=41 xoffset=-1 yoffset=15 xadvance=36 page=0 chnl=15
char id=121 x=276 y=72 width=38 height=57 xoffset=-1 yoffset=15 xadvance=36 page=0 chnl=15
char id=122 x=132 y=401 width=35 height=41 xoffset=0 yoffset=15 xadvance=36 page=0 chnl=15
char id=123 x=59 y=0 width=27 height=71 xoffset=-3 yoffset=0 xadvance=25 page=0 chnl=15
char id=124 x=89 y=300 width=10 height=55 xoffset=3 yoffset=1 xadvance=19 page=0 chnl=15
char id=125 x=87 y=0 width=27 height=71 xoffset=0 yoffset=0 xadvance=25 page=0 chnl=15
char id=8470 x=156 y=131 width=60 height=56 xoffset=3 yoffset=0 xadvance=65 page=0 chnl=15
		"#;

    let bmf: BMFont = BMFont::from_str(data).expect("should work");

    println!("{bmf:?}");
}

#[test]
fn other_font() {
    let data = r#"
	info face="just some test" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
	common lineHeight=37 base=24 scaleW=175 scaleH=174 pages=1 packed=0
	page id=0 file="some test bitmap.png"
	chars count=90
	char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=8 page=0 chnl=15
	char id=33 x=165 y=71 width=6 height=24 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
	char id=34 x=38 y=160 width=10 height=12 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=15
	char id=35 x=0 y=160 width=16 height=14 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=36 x=71 y=17 width=16 height=24 xoffset=-1 yoffset=3 xadvance=16 page=0 chnl=15
	char id=37 x=90 y=126 width=16 height=18 xoffset=-1 yoffset=7 xadvance=16 page=0 chnl=15
	char id=38 x=90 y=145 width=16 height=18 xoffset=-1 yoffset=7 xadvance=16 page=0 chnl=15
	char id=39 x=161 y=117 width=6 height=10 xoffset=-1 yoffset=1 xadvance=6 page=0 chnl=15
	char id=40 x=139 y=137 width=10 height=24 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=15
	char id=41 x=154 y=0 width=10 height=24 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=15
	char id=42 x=90 y=164 width=14 height=10 xoffset=-1 yoffset=11 xadvance=14 page=0 chnl=15
	char id=43 x=107 y=163 width=14 height=10 xoffset=-1 yoffset=11 xadvance=14 page=0 chnl=15
	char id=44 x=154 y=155 width=6 height=10 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=15
	char id=45 x=71 y=168 width=14 height=6 xoffset=-1 yoffset=13 xadvance=14 page=0 chnl=15
	char id=46 x=154 y=166 width=6 height=6 xoffset=-1 yoffset=19 xadvance=6 page=0 chnl=15
	char id=47 x=154 y=96 width=10 height=20 xoffset=-1 yoffset=5 xadvance=10 page=0 chnl=15
	char id=48 x=107 y=144 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=49 x=124 y=0 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=50 x=124 y=19 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=51 x=124 y=38 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=52 x=124 y=57 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=53 x=124 y=76 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=54 x=124 y=95 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=55 x=124 y=114 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=56 x=124 y=133 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=57 x=124 y=152 width=14 height=18 xoffset=-1 yoffset=7 xadvance=14 page=0 chnl=15
	char id=58 x=31 y=160 width=6 height=12 xoffset=-1 yoffset=11 xadvance=6 page=0 chnl=15
	char id=59 x=154 y=138 width=6 height=16 xoffset=-1 yoffset=13 xadvance=6 page=0 chnl=15
	char id=61 x=139 y=34 width=14 height=10 xoffset=-1 yoffset=11 xadvance=14 page=0 chnl=15
	char id=63 x=139 y=45 width=12 height=24 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=15
	char id=64 x=0 y=17 width=24 height=20 xoffset=-1 yoffset=9 xadvance=24 page=0 chnl=15
	char id=65 x=71 y=105 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=66 x=31 y=139 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=67 x=71 y=126 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=68 x=52 y=0 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=69 x=52 y=21 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=70 x=52 y=42 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=71 x=71 y=147 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=72 x=0 y=97 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=15
	char id=73 x=165 y=50 width=10 height=20 xoffset=-1 yoffset=5 xadvance=10 page=0 chnl=15
	char id=74 x=139 y=91 width=12 height=20 xoffset=-1 yoffset=5 xadvance=12 page=0 chnl=15
	char id=75 x=52 y=63 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=76 x=90 y=0 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=77 x=0 y=118 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=15
	char id=78 x=0 y=139 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=15
	char id=79 x=90 y=21 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=80 x=52 y=84 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=81 x=90 y=42 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=82 x=52 y=105 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=83 x=90 y=63 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=84 x=52 y=126 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=85 x=90 y=84 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=86 x=107 y=123 width=14 height=20 xoffset=-1 yoffset=5 xadvance=14 page=0 chnl=15
	char id=87 x=0 y=38 width=22 height=20 xoffset=-1 yoffset=5 xadvance=22 page=0 chnl=15
	char id=88 x=31 y=0 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=15
	char id=89 x=52 y=147 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=90 x=90 y=105 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=91 x=154 y=50 width=10 height=24 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=15
	char id=93 x=165 y=25 width=10 height=24 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=15
	char id=94 x=139 y=162 width=8 height=8 xoffset=-1 yoffset=1 xadvance=8 page=0 chnl=15
	char id=95 x=52 y=168 width=14 height=6 xoffset=-1 yoffset=21 xadvance=14 page=0 chnl=15
	char id=97 x=71 y=0 width=18 height=16 xoffset=-1 yoffset=9 xadvance=18 page=0 chnl=15
	char id=98 x=31 y=55 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=99 x=107 y=0 width=16 height=16 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=100 x=31 y=76 width=18 height=20 xoffset=-1 yoffset=5 xadvance=18 page=0 chnl=15
	char id=101 x=107 y=17 width=16 height=16 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=102 x=139 y=70 width=12 height=20 xoffset=-1 yoffset=7 xadvance=12 page=0 chnl=15
	char id=103 x=71 y=42 width=16 height=20 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=104 x=0 y=76 width=20 height=20 xoffset=-1 yoffset=5 xadvance=20 page=0 chnl=15
	char id=105 x=154 y=75 width=10 height=20 xoffset=-1 yoffset=5 xadvance=10 page=0 chnl=15
	char id=106 x=139 y=112 width=10 height=24 xoffset=-1 yoffset=5 xadvance=10 page=0 chnl=15
	char id=107 x=71 y=63 width=16 height=20 xoffset=-1 yoffset=5 xadvance=16 page=0 chnl=15
	char id=108 x=165 y=96 width=6 height=20 xoffset=-1 yoffset=5 xadvance=6 page=0 chnl=15
	char id=109 x=0 y=0 width=30 height=16 xoffset=-1 yoffset=9 xadvance=30 page=0 chnl=15
	char id=110 x=31 y=21 width=20 height=16 xoffset=-1 yoffset=9 xadvance=20 page=0 chnl=15
	char id=111 x=107 y=34 width=16 height=16 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=112 x=31 y=97 width=18 height=20 xoffset=-1 yoffset=9 xadvance=18 page=0 chnl=15
	char id=113 x=31 y=118 width=18 height=20 xoffset=-1 yoffset=9 xadvance=18 page=0 chnl=15
	char id=114 x=107 y=51 width=16 height=16 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=115 x=107 y=68 width=16 height=16 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=116 x=107 y=102 width=14 height=20 xoffset=-1 yoffset=5 xadvance=14 page=0 chnl=15
	char id=117 x=107 y=85 width=16 height=16 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=118 x=139 y=0 width=14 height=16 xoffset=-1 yoffset=9 xadvance=14 page=0 chnl=15
	char id=119 x=0 y=59 width=22 height=16 xoffset=-1 yoffset=9 xadvance=22 page=0 chnl=15
	char id=120 x=31 y=38 width=20 height=16 xoffset=-1 yoffset=9 xadvance=20 page=0 chnl=15
	char id=121 x=71 y=84 width=16 height=20 xoffset=-1 yoffset=9 xadvance=16 page=0 chnl=15
	char id=122 x=139 y=17 width=14 height=16 xoffset=-1 yoffset=9 xadvance=14 page=0 chnl=15
	char id=123 x=154 y=25 width=10 height=24 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=15
	char id=124 x=154 y=117 width=6 height=20 xoffset=-1 yoffset=5 xadvance=6 page=0 chnl=15
	char id=125 x=165 y=0 width=10 height=24 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=15

	"#;

    let bmf: BMFont = BMFont::from_str(data).expect("should work");

    assert_eq!(bmf.info.as_ref().unwrap().font_size, 32);

    println!("{bmf:?}");
}