From 30a391d8ab3078089b5d0bea42c46edd1f2da85d Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Fri, 23 Nov 2018 07:22:01 +1100 Subject: [PATCH 01/15] WIP: Render glyphs with font-kit --- Cargo.toml | 5 +++ src/main.rs | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 src/main.rs diff --git a/Cargo.toml b/Cargo.toml index d38f186..5eb5191 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,8 @@ authors = ["Wesley Moore "] [dependencies] embedded-graphics = "0.4" + +# TODO: Make these optional behind feature +font-kit = { version = "0.1", git = "https://github.com/pcwalton/font-kit.git" } +euclid = "0.19" +image = { version = "0.20", default-features = false, features = ["png_codec"] } diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..5cc8fa9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,92 @@ +extern crate euclid; +extern crate font_kit; +extern crate image; + +use euclid::{Point2D, Size2D}; +use font_kit::font::Font; +use font_kit::source::SystemSource; +use font_kit::hinting::HintingOptions; +use font_kit::canvas::{Canvas, RasterizationOptions, Format}; +use image::Luma; +use std::sync::Arc; +use std::char; + +fn main() { + // let font_data = include_bytes!("../data/ProFontIIx.ttf").to_vec(); + // let font = Font::from_bytes(Arc::new(font_data), 0).expect("error loading font"); + let font = SystemSource::new().select_by_postscript_name("ProFontIIx") + .unwrap() + .load() + .unwrap(); + + // Get the font metrics to work out how to size the canvas + // let metrics = font.metrics(); + + // Collect all the glyphs present + // let glyphs: Vec<_> = (0..font.glyph_count()).filter(|&glyph_id| font.typographic_bounds(glyph_id).is_ok()).collect(); + // println!("glyphs = {:?}", glyphs); + + // let mut canvas = Canvas::new(&Size2D::new(12 * font.glyph_count(), 22[>metrics.x_height.ceil() as u32<]), Format::A8); + + // let offset = Vector2D::new(12., 0.); + // let mut origin = Point2D::zero(); + // for glyph_id in 0..font.glyph_count() { + // font.rasterize_glyph(&mut canvas, + // glyph_id, + // 18.0, + // &origin, + // HintingOptions::None, + // RasterizationOptions::Bilevel) + // .expect("error rasterizing glyph"); + + // // origin += offset; + // } + let char_size = Size2D::new(12, 22); + let img_size = Size2D::new(char_size.width * 26, char_size.height * 4); + let mut imgbuf = image::GrayImage::new(img_size.width, img_size.height); + + let font_size = 18f32; + for (i, c) in (' ' as u32 ..= '~' as u32).into_iter().enumerate() { + let chr = char::from_u32(c).unwrap(); // unwrap should be safe since u32 came from a char + if let Some(glyph_id) = font.glyph_for_char(chr) { + let raster_rect = font.raster_bounds(glyph_id, + font_size, + &Point2D::zero(), + HintingOptions::None, + RasterizationOptions::Bilevel) + .expect("unable to get raster bounds"); + println!("i={} c={} chr={} glyph_id={} raster_rect={}", i, c, chr, glyph_id, raster_rect); + + let mut canvas = Canvas::new(&raster_rect.size.to_u32(), Format::A8); + + // let origin = Point2D::new(-raster_rect.origin.x, -raster_rect.origin.y).to_f32(); + // font.rasterize_glyph(&mut canvas, + // glyph_id, + // font_size, + // &raster_rect.origin.to_f32(), + // HintingOptions::None, + // RasterizationOptions::Bilevel) + // .expect("error rasterizing glyph"); + + // let col = i as u32 % 25; + // let row = i as u32 / 25; + // let img_x = col * char_size.width; + // let img_y = row * char_size.height; + // println!("'{}' i={} row={} col={} x, y=({}, {}) raster_rect={}", chr, i, row, col, img_x, img_y, raster_rect); + // Copy onto image + // for y in 0..raster_rect.size.height { + // let (row_start, row_end) = (y as usize * canvas.stride, (y + 1) as usize * canvas.stride); + // let row = &canvas.pixels[row_start..row_end]; + // for x in 0..raster_rect.size.width { + // let val = row[x as usize]; + // if val != 0 { + // imgbuf.put_pixel(img_x, img_y, Luma([0xFFu8])); + // } + // } + // } + } + } + + // println!("{}x{} {}", canvas.size.width, canvas.size.height, canvas.pixels.len()); + imgbuf.save("profont18.png").expect("error saving PNG"); +} From dcda81b7c7d6810ac9952a9903fa2c50022b4cb3 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 11:20:49 +1100 Subject: [PATCH 02/15] Working glyph rendering with font-kit --- src/main.rs | 199 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 131 insertions(+), 68 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5cc8fa9..cfacdce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,91 +2,154 @@ extern crate euclid; extern crate font_kit; extern crate image; -use euclid::{Point2D, Size2D}; +use euclid::{Point2D, Rect, Size2D}; +use font_kit::canvas::{Canvas, Format, RasterizationOptions}; use font_kit::font::Font; -use font_kit::source::SystemSource; use font_kit::hinting::HintingOptions; -use font_kit::canvas::{Canvas, RasterizationOptions, Format}; use image::Luma; -use std::sync::Arc; use std::char; +use std::env; +use std::sync::Arc; + +struct Glyph { + id: u32, + raster_rect: Rect, +} fn main() { - // let font_data = include_bytes!("../data/ProFontIIx.ttf").to_vec(); - // let font = Font::from_bytes(Arc::new(font_data), 0).expect("error loading font"); - let font = SystemSource::new().select_by_postscript_name("ProFontIIx") - .unwrap() - .load() - .unwrap(); + let font_data = include_bytes!("../data/ProFontIIx.ttf").to_vec(); + let font = Font::from_bytes(Arc::new(font_data), 0).expect("error loading font"); - // Get the font metrics to work out how to size the canvas - // let metrics = font.metrics(); + let font_size: f32 = std::env::args() + .nth(1) + .expect("font size argument must be supplied on command line") + .parse() + .expect("invalid font size"); - // Collect all the glyphs present - // let glyphs: Vec<_> = (0..font.glyph_count()).filter(|&glyph_id| font.typographic_bounds(glyph_id).is_ok()).collect(); - // println!("glyphs = {:?}", glyphs); + // Print latin 1 characters + let basic = (' ' as u32..='~' as u32) + .into_iter() + .map(|c| char::from_u32(c).unwrap()); + let extended = ('\u{00A0}' as u32..='ÿ' as u32) + .into_iter() + .map(|c| char::from_u32(c).unwrap()); + let all_chars: Vec<_> = basic.chain(extended).collect(); - // let mut canvas = Canvas::new(&Size2D::new(12 * font.glyph_count(), 22[>metrics.x_height.ceil() as u32<]), Format::A8); + // Get the raster bounds of all chars + let glyphs: Vec<_> = all_chars + .iter() + .map(|&chr| { + font.glyph_for_char(chr).map(|glyph_id| { + let raster_rect = font + .raster_bounds( + glyph_id, + font_size, + &Point2D::zero(), + HintingOptions::None, + RasterizationOptions::Bilevel, + ).expect("unable to get raster bounds"); + Glyph { + id: glyph_id, + raster_rect, + } + }) + }).collect(); - // let offset = Vector2D::new(12., 0.); - // let mut origin = Point2D::zero(); - // for glyph_id in 0..font.glyph_count() { - // font.rasterize_glyph(&mut canvas, - // glyph_id, - // 18.0, - // &origin, - // HintingOptions::None, - // RasterizationOptions::Bilevel) - // .expect("error rasterizing glyph"); + // Work out how big the glyphs are + let char_size = Size2D::new( + // 12, 22 + glyphs + .iter() + .map(|glyph| { + glyph + .as_ref() + .map(|glyph| glyph.raster_rect.size.width) + .unwrap_or(0) + }).max() + .unwrap(), + glyphs + .iter() + .map(|glyph| { + glyph + .as_ref() + .map(|glyph| glyph.raster_rect.size.height) + .unwrap_or(0) + }).max() + .unwrap(), + ).to_u32(); - // // origin += offset; - // } - let char_size = Size2D::new(12, 22); - let img_size = Size2D::new(char_size.width * 26, char_size.height * 4); + // Render the glyphs + let row_size = 32; + let img_size = Size2D::new( + char_size.width * row_size, + (char_size.height as f64 * glyphs.len() as f64 / row_size as f64).ceil() as u32 +10, + ); + println!("img_size={}", img_size); + // let img_size = Size2D::new(800, 480); let mut imgbuf = image::GrayImage::new(img_size.width, img_size.height); - let font_size = 18f32; - for (i, c) in (' ' as u32 ..= '~' as u32).into_iter().enumerate() { - let chr = char::from_u32(c).unwrap(); // unwrap should be safe since u32 came from a char - if let Some(glyph_id) = font.glyph_for_char(chr) { - let raster_rect = font.raster_bounds(glyph_id, - font_size, - &Point2D::zero(), - HintingOptions::None, - RasterizationOptions::Bilevel) - .expect("unable to get raster bounds"); - println!("i={} c={} chr={} glyph_id={} raster_rect={}", i, c, chr, glyph_id, raster_rect); - - let mut canvas = Canvas::new(&raster_rect.size.to_u32(), Format::A8); + for (i, (chr, glyph)) in all_chars.iter().zip(glyphs.iter()).enumerate() { + if let Some(glyph) = glyph { + let mut canvas = Canvas::new(&glyph.raster_rect.size.to_u32(), Format::A8); - // let origin = Point2D::new(-raster_rect.origin.x, -raster_rect.origin.y).to_f32(); - // font.rasterize_glyph(&mut canvas, - // glyph_id, - // font_size, - // &raster_rect.origin.to_f32(), - // HintingOptions::None, - // RasterizationOptions::Bilevel) - // .expect("error rasterizing glyph"); + font.rasterize_glyph( + &mut canvas, + glyph.id, + font_size, + &glyph.raster_rect.origin.to_f32(), + HintingOptions::None, + RasterizationOptions::Bilevel, + ).expect("error rasterizing glyph"); - // let col = i as u32 % 25; - // let row = i as u32 / 25; - // let img_x = col * char_size.width; - // let img_y = row * char_size.height; - // println!("'{}' i={} row={} col={} x, y=({}, {}) raster_rect={}", chr, i, row, col, img_x, img_y, raster_rect); + let col = i as u32 % row_size; + let row = i as u32 / row_size; + let img_x = col * char_size.width; + let img_y = row * char_size.height + char_size.height; + println!( + "'{}' i={} row={} col={} x,y=({}, {}) raster_rect={}", + chr, i, row, col, img_x, img_y, glyph.raster_rect + ); // Copy onto image - // for y in 0..raster_rect.size.height { - // let (row_start, row_end) = (y as usize * canvas.stride, (y + 1) as usize * canvas.stride); - // let row = &canvas.pixels[row_start..row_end]; - // for x in 0..raster_rect.size.width { - // let val = row[x as usize]; - // if val != 0 { - // imgbuf.put_pixel(img_x, img_y, Luma([0xFFu8])); - // } - // } - // } + for y in (0u32..glyph.raster_rect.size.height as u32) + .into_iter() + .rev() + { + let mut line = String::new(); + + let (row_start, row_end) = + (y as usize * canvas.stride, (y + 1) as usize * canvas.stride); + let row = &canvas.pixels[row_start..row_end]; + for x in 0u32..glyph.raster_rect.size.width as u32 { + let val = row[x as usize]; + line.push(shade(val)); + line.push(shade(val)); + if val != 0 { + let pixel_x = img_x as i32 + x as i32 + glyph.raster_rect.origin.x; + let pixel_y = img_y as i32 - glyph.raster_rect.size.height + y as i32 + - glyph.raster_rect.origin.y + - 4; + if pixel_x >= 0 && pixel_y >= 0 { + imgbuf.put_pixel(pixel_x as u32, pixel_y as u32, Luma([0xFFu8])); + } + } + } + + // println!("{}", line); + } } } - // println!("{}x{} {}", canvas.size.width, canvas.size.height, canvas.pixels.len()); - imgbuf.save("profont18.png").expect("error saving PNG"); + let filename = format!("data/ProFont{}Point.png", font_size); + imgbuf.save(&filename).expect("error saving PNG"); + println!("Wrote {} with character size of {}", filename, char_size); +} + +fn shade(value: u8) -> char { + match value { + 0 => ' ', + 1...84 => '░', + 85...169 => '▒', + 170...254 => '▓', + _ => '█', + } } From 6c660562eb0db9048a24aae9aded08a70c17c196 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 11:41:21 +1100 Subject: [PATCH 03/15] Calculate offset --- src/main.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index cfacdce..dda8598 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,6 +26,9 @@ fn main() { .parse() .expect("invalid font size"); + let metrics = font.metrics(); + let offset = (metrics.descent as f32 / metrics.units_per_em as f32 * font_size).round() as i32; + // Print latin 1 characters let basic = (' ' as u32..='~' as u32) .into_iter() @@ -82,7 +85,7 @@ fn main() { let row_size = 32; let img_size = Size2D::new( char_size.width * row_size, - (char_size.height as f64 * glyphs.len() as f64 / row_size as f64).ceil() as u32 +10, + (char_size.height as f64 * glyphs.len() as f64 / row_size as f64).ceil() as u32, ); println!("img_size={}", img_size); // let img_size = Size2D::new(800, 480); @@ -105,10 +108,10 @@ fn main() { let row = i as u32 / row_size; let img_x = col * char_size.width; let img_y = row * char_size.height + char_size.height; - println!( - "'{}' i={} row={} col={} x,y=({}, {}) raster_rect={}", - chr, i, row, col, img_x, img_y, glyph.raster_rect - ); + // println!( + // "'{}' i={} row={} col={} x,y=({}, {}) raster_rect={}", + // chr, i, row, col, img_x, img_y, glyph.raster_rect + // ); // Copy onto image for y in (0u32..glyph.raster_rect.size.height as u32) .into_iter() @@ -127,7 +130,7 @@ fn main() { let pixel_x = img_x as i32 + x as i32 + glyph.raster_rect.origin.x; let pixel_y = img_y as i32 - glyph.raster_rect.size.height + y as i32 - glyph.raster_rect.origin.y - - 4; + + offset; if pixel_x >= 0 && pixel_y >= 0 { imgbuf.put_pixel(pixel_x as u32, pixel_y as u32, Luma([0xFFu8])); } From d5507bcf3853d24278132852106b8f00ce9c1ea6 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 11:48:30 +1100 Subject: [PATCH 04/15] Regenerate data files with profont tool --- data/Makefile | 11 +++++++++++ data/ProFont10Point.png | Bin 1840 -> 2284 bytes data/ProFont10Point.raw | Bin 2511 -> 2184 bytes data/ProFont12Point.png | Bin 2228 -> 2775 bytes data/ProFont12Point.raw | Bin 3636 -> 2880 bytes data/ProFont14Point.png | Bin 3018 -> 3905 bytes data/ProFont14Point.raw | Bin 5290 -> 4320 bytes data/ProFont18Point.png | Bin 3863 -> 5570 bytes data/ProFont18Point.raw | Bin 8880 -> 6336 bytes data/ProFont24Point.png | Bin 5511 -> 8879 bytes data/ProFont24Point.raw | Bin 15680 -> 11520 bytes data/ProFont7Point.png | Bin 1363 -> 1406 bytes data/ProFont7Point.raw | Bin 1700 -> 1080 bytes data/ProFont9Point.png | Bin 1726 -> 1890 bytes data/ProFont9Point.raw | Bin 2280 -> 1584 bytes src/lib.rs | 12 +++++++----- src/main.rs | 2 +- 17 files changed, 19 insertions(+), 6 deletions(-) diff --git a/data/Makefile b/data/Makefile index 555bae4..ae20618 100644 --- a/data/Makefile +++ b/data/Makefile @@ -3,7 +3,18 @@ RAW = ${PNG:.png=.raw} all: ${RAW} +pngs: + cargo run --release -- 7 + cargo run --release -- 9 + cargo run --release -- 10 + cargo run --release -- 12 + cargo run --release -- 14 + cargo run --release -- 18 + cargo run --release -- 24 + .SUFFIXES: .png .raw .png.raw: convert ${.IMPSRC} -depth 1 gray:${.TARGET} + +.PHONY: pngs diff --git a/data/ProFont10Point.png b/data/ProFont10Point.png index 19f37098959950c6070fdf3ce237868e8df994d2..9d65b77e57c54a3b39ac4dc19f3ea8b7f4ba0ef6 100644 GIT binary patch literal 2284 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 literal 2228 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 diff --git a/data/ProFont14Point.png b/data/ProFont14Point.png index c52c2aae458e2535339831d35fc97055c3fb66a1..28a73d7f70cbf3ac72c36d6cc77948cf2bc85cfc 100644 GIT binary patch literal 3905 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 M07*qoM6N<$f*||bk^lez diff --git a/data/ProFont14Point.raw b/data/ProFont14Point.raw index 53868235ca5fef204ddf368652873b67a5ec3052..23d74118c71bd9ea94aae38a93f63028a5a01aa9 100644 GIT binary patch literal 4320 zcmchaL2KMd7RR3=Q|&`J^4??!tsLe9R3m8bfQY>87pY+IDTjo)7!ukt9h@9I@f`cG z>}T+j>mI5pNbf;OUl$BBGJTzcf-emt-1~o3>UP_SCv(`{f-Xr_KfS7Y^?#+;ME~s~ z48^di1=n1Jzuc`w%SqYx+~q>|rV!)vEV86y5fqM;nFviSayx6X2rYs_s!0etA0(4P zt8nXFGbjh$&gJ}JKAAOxq`)%;$8*PB^h=|4a8^4mwq2RZu976JvPFe?TM4Vd`M-Bh z4e4NLJU0>G`gvqLr*gB;TsVJ~Y!%GehH^t{Do7t5RBE?T^&kXYE=XsR8sW9%asCYm8 zxLL1rPBG5_z6y#gpVoC0g+^xy0YPz<(*e2t#oF54<6c)xd&R{m#py*8@$hTq?rW>A zJKU=M|9x|4x_@X$Z~;*!B2zc)Fq@lH8tg*dL}**6GKH?DwbmjmXb?r0^K0G!=3?{x zr{4TJIlG*%bHb2~ph>G_D6ODWnS9ERFco`yMrkFars>Y<8mCSE@x9~7aR&et9LY)%3Dv?pgLdq~|vNLQNqaa2az2xF2Mrre+?i5BtyJ1e$c* zFL}97Jip8$df1*@w0`8cEDA|W7Sg929ql?~s^J%K49Cja=0HGtj&mI=PI)d}au@># z58FG!oZ-JRfd3}57+&kmO>)|sV`{^{SrOHq%Q0u{M@iTZYb7{Uo9I;4aTE;UQ*a^M z`)awR&BO419hkM(4}-r`c)iwe-z}{FA@08S@3boyW_x#9zkGZiKSHDavg1yRj``qL zI954iD>5P&(%}k1#QWm8*mJ?RxJ}Q&qG7x4WN>!w*rN#hmPehUX}Xwg`i!;2M%r? zSFJdyQfr@O>cf)jPA{9I#0HIpfa5_QdcID|u<3R=J`%TH9#>9H!{O^V369T~GOQoU z@$tw;D~?$%*uJHV4g0(;W;yP%VNS#!TP|x{RFKz;??GJ?J!~J=IabQeX0GUO-Gqjy zQ+!D|7yFsJ?oNg2wVWnbB7@7#lnKw41Z1>RxPG1~(PQFI>Z(m62{3d(qBlBp+>_4n zh&fID8!jkt7{PHFg}qVZ#?8U;`i$rNxIuxu1h)%9esJO@3SZaE6`pI?LA8vc2OA3> z{3Uu}nm2%NN;fXwp&XB7avE$Rm^A&C4AX|57&ebmCS%+tr>KzUjAS22+Je_>lau|% zjpn(?aVHuaRL9&;3kntehQTF|>-VV?%y9>DgRqf(`TVCCIT7Z^9FObgCvewtG6fe^ zSRmGM!WHcn%lQdBtvD%@>DaHMA)$#<^tt&hgu!9r+Nd*=GBOV~pi+&a#mxnrD_6pC zJO+g>U*qOZh3Zx@c+zVv-s7yR+l3qW_pM@X;^jW{#aB9n==_NV5)?v+r(9{eh)L@g zEHmVAUS=ett$&O%7%(yt+Ew&UlBqA4!#Ob?!HC(5civX?9XK7M!&QV6JpG9h#Px`YWGsDeOr_2RkQEM+djLDfcq>XvyiubGZ!h5sr+vH(7Go zk{dVf&feyH8|*z>a`=F|RrY1LHop~DF1h^`x4w=Qce>oGE!1QG&uDs<$3c} z?0?a?Av)XcpeQ!*kBU$cz1XBZ?SkZSuv{Q?f9~`Q$z#>1@VCY3o@WK!8@@u>J8v&X zt?o~>iFZyky>q(f_<-)8j$ZNMu?^q31Nreb9{0E+dVmC+c8&|$+(7SZ*B05Dax}N! z3eMr!`E^D?fh(l^8W+lwN!=W|jY@{&>adH`{O2ef&j*+(;s`o;&F~Ro0iRypcs04K z4h1;G(M;Op47vP@^Ez-@L5@FS?$7Ovdy%?adDS_4wui)evRkGubUo+aMd-5Xe(>W? z((>xjbQcN1LLp~$_F8T{EGIqmI(yUZA08D z_I^#1$!9Ej@|gu(;Y)(^AWMp1{<4eS*VL)qxm^;R*yI#~qfP}+hQ_(GMh;KqD++6B ai}UI7;ma$3Y+U($J%?3`(eLXS)A$cS51*L; literal 5290 zcmb`L?`s>$8ONW^q_ZxJEz`bPp+s`u-0NutiA$ARANS%o`r`hCu4<59)FBReBWNqF zt3!F?#N0a>O58ueA>bAo(3maO8~glLLE*ePLGtFpNeEn-=;VH9b|uS>4L0<_*_|Js zdG?uSo@Zthq7+#^k>rw$u;_K!Gp2=e6njrMUUCBLII&P%z>x_WnfJS@4WdZY%Ww7Y)r?!#c9>BRf(mXscI15Jw{ zC!6`VjChdui4^6lL0UGK?=Y*1UP`>L_9S^MVJ0XVLN*td+8xkOZR>IW*VTjU1kD>k z+Z)r)fv_sOOTE4*fo68!5r-J&EjICK& z&eyfSN&B0K?f&Wqa&!T@Rjyob_}#E0bDx67T1q!x*K0{wONfptOg$<{-1ZE3oYU#&3OStH8S?FtsPG{~i$oyToiq!U5k3EsL_9U>T3L2u_C zRhZ@P+$3`A>y2KgGekZoS0DF^15LjMeY-k9Fzi&58{3Y{LF4OWLeD{73ZAm6t^Fzm zLTcU9Rh574ztMCqEnxPDzS}o+8uSxGw=fj+eLYL3J1ht%rWd!GBBnE-rw#pT&Cp9R zjju8Cv~IMBJ9>u@Jh>Xt<;@!0EC$Mz2RoHc{@XxcV=?r-`ue+G-x~%lcN%Y7Vu00I zcOHN)s*G%`u7+9@XsLB4>vp@__ez>x0v%-oIv^8~&s0{KHuK=v?oMlQX(FmW=fy6kYG5*6bG*G4kz09n)O znP(z2FZ~#O-_U|ewwNMg^$n;N_iSIa+Y=qB$TzW(T63O%1#Xkzm$ezvVE>B zp=YVAny2@(Soa|F!fx*(tdWitg!O+!t~mFHkb86lIPFmf^i(#chweW&4PD6BtCqjG zEK0@M&5%p$$W8hgk37(nP2fC$1o@XuonYI!d_`FPZ{|hI!vVw`tLkRmmPc%$X?sNf z>u}YiOuou3-y_gJ&xBUZI--L6-H2xSSofCwruthXSbi5N6rOVkZ5_Za45O45UG3 zE8{<`d3!-7rrpxq=b)*hS;T;zWiF=GXd$uw#u99Qn$Zh>D%j#k>3?H7Ls1MGT1V`J zfHvGIokqiW=me>YpiLr1XNBbpXMUriH3%o`&`w3t_c(87KJoB*F3b!tO5a!@%E{f| zc3RuwlTyP~LDHQNhwq>L?5onkJXV0N!}O7E83M4}N|$5pJi zBJRx2>4RH~q3tKt6qeI7JF@jQ$Zyt`CDSL7p(7H{&uV*xY;tXXl16^u>LA(en3jVQ zxdlCBC!!B_S+_qZMY^BG^u3tQ4~FEL`Bu#5nhz%Fr!j4gB-p)({o8~NW6|W^S9Pew zc59W|lKohBc0}{kh@P0`h<*~&soPH@-TG|Mn(j}|azvXhSdzMjTbQ<+^3;yKp3GRQTx4KWah1e%uzfTtJ(U zzjVOWI}pP(Gs68TqFM5Fb?!#gxPW`Xsc1S)&b+TbuN((=kX4`Pd&&9C9GX0F{>CN= z3HCJ@Pv)|?N$Ui2M3i9CL4s+Oq<;|zB(kK!7s;=Ee15Kwy?KK#O6%6tRPvi$Ptojb zHm1vC8iflTq0ljsCJK>my}Iq4P%l_oFP&9G%Ejr3lo9#}Z~h{pi&Sc_`J?#L$ewoMG0;MVDgu)g~tN-!az`}KXF>`>3r&_^b|BYM}+ zl0^w-=;i~T7)D8IEIx0(KQg%!(b@o{OtAkHU205QzNQbBUc9;}!Gb5x4wn8M)5~Py zP12w5p|y8B7-G8cPRAN2!4bNY-RlrM;m0&~k=;e(l1xm;9_;81MlnshzZ}tI1XH*~ zu;62f%X$hI3ky%%t+;&Q+8azeZY1VZ8&xiUGe7E!1OF_TQD^I9`%%LMsRCgCzT)2E&Lp8biNGi_371+R-6;zX4;hP><%?Oz25B& zp+t-74k%N@@k$g-uTT3SJ)GSTbDvxOAAeRUQ$f>a=40CJaAtQXNNzk?_37c(2`mYf z8tj73W?{fsl-H*}t#Hn;RfE=c|Dym)!i7p_x$FmH8aEB*k+(v>U*Uq`o|N3$*FFhJ z%)y5@XueD*kLvqAG{EDACTb;`0{*6V33p%HxBw4M*>C#V-zWK(=V^Nl17SBmrAgC- zZ3Vd*3Eo^q#dA*`CnFir9{wA^A2ptN7bj{XdZOuEaphe7>Q(FND9G#3oc-+@x^E@^ wuC9*D^wT^$WmDk|z= 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 Zlz$&iVre8{ngIX+002ovPDHLkV1nX6kXir$ diff --git a/data/ProFont18Point.raw b/data/ProFont18Point.raw index fc913be5942e241e62c6442920ba0e025c9f1d38..220b05764d1789b8837ee28c9028bc0e5cc0d58f 100644 GIT binary patch literal 6336 zcmb`L&u-&562{BRLDUCEnqv-v8+ii(xp=YO@jgm|eE|>p(ubg>L4eK0=zf8Dm@)*6 zE?oNs0PP&sx?=Hhg{PSapEEbETMgIF>PF~dZLc|i(DBAPS zwcPWuDaHoh;3tJ#vRW@pwlLjKqUl8ahfru2q6^cQq+1}G21O9IWP*Ht+vTD&srP(d zXnxy9NtYwuw&2m(S%idMB;D`MeG<*&(y5|KBX$B*;5=S9!i4 z`E{l0>}xA3774t8#(1N^WX`r55y(fkDPFP?4b}cFX?o93C-p4pA}W&ny=}UOJj74* z>`l`4MS8We;Fn2f3id}ZqNsW6`F`6WD{{F}HAVAD(zVVOmi<{$MYF&!ZrZ@Rk-t-o zq%F}IUFPqpHlUH95&Lsmx=z`Dj*mfG)mYMA!PmPAUz9ZIVra|rwsPB%hb**e6biAP zS1mh~#7UP9(!_0CRp5(kJ{6fxiduDMt+9}g!0~dv@EIR4U!MzsJ?!}%`W>exPLbGY z3f{mT2!oM)^)^=t_J(=1M)D6`U$sfq(lBmX%(J&Qz~mP;o2vwSK0)3H%&ae)q-=uW zLBl8xFkaLbD5A6z@d;)Qp*|!>K9pbzzrk~8-wsql_}+0nM*Bqg5#?X=lPBo^U$K6l zs7B3qwP-GlVpy1t-ZZ_R9fdKwRADn^!$L&I#fXS?dg)Co|E2D4+uqN<=VuzHb=9&E z@rcjhVMKQ8dc8^44)&VD5XCJunKvl$5eqBG7lrrGH-%`K`4TK{ny$E7ldc`b27c%4 zMDN|5iP{zZ-Z7{F{|E1^Iszvi5X9tXsgjjePZ?8^`OHHuQsro@Yz&r}u9PI4d(kLGLVX5=@i#vPtEPN&HndREa%!T#qMnzsjyTG&IrN@)XC%WT!!s6`Xt zP+i~`;Jv-6X~4s^k}qMsEuPj;rGXcGfI8<;wAqg$>g-r}oP9v2$vST>X z>A=H#D{A5VU&fz|{Ls+Kk<8=tAm7Vo8({ppMDL#z6Kw2z0_P9Sg_C!7SP=nIyd{p z360q~`k$M^%5qzv!zf`4c5YA6#5KO8@jUzqdKDS+B?kx?{-hiDgnaG!dhdU%jVJ66 zaIxt_z6Kw@h$UuidI5ih7pBtdPwYJSlRjwo z9P2TV25J8L@Q_FGu-?addCgR}&pu3yV!Vq8Re2#Yd4ive-SjSE?i*Ywy0i*y5B&-f z%&$YacM7ZJ*+OYkxsq#?|}!`k7URA!#P`tXpS4E&Ynu~rRM zp~=9f%Km&RtnbfY{iO{3!PgOLTzNc?{=~}h;=&>cwLSD-964C0@`$R zl;JiH&d#fna3{2bF@)FfOKiP&_dz^cMd^(D43g%pbp5 zXNu#J=hKSn=y_zQ9Tbk-Umox{#bsqi?HT;xZtkBV*Ci9ELQN(aEHgBVCiQihP01HX zUxX*lnK#U$3N?Ebnm0jNm?pCckaZ zaj+curQ)jV`B-<(f5|_fu6C2|s&=<)Yw$tWLJhJc-O10DGCw!8Y*8RJShY{Zerm0{$s4}5F~{zHS^t>>>9p`Bo(8~OVK zZ-+wMM;`IKGWd9Y>JI$M4mxy?`x6*E&y&@jU%T`L{O}=KfE&iHkpEDh2l+TB_>Pg^ z3}XlXXuhC)Ojek$kf8pn`%%tgd%zI_#=sa23Gmw+x91<(8@6K@Td=o~AdmksaK8U6 z=n;?}rJqV3^RuU*C(3_(qWpg>4!1%I@t#CZ#CQidWW99ylkqcf8gNa_dQT#eL`IRz zO8S%FwdhYq9zF!y5VOIbm?Dm9jVDym z##922lP#L?e&OwK;rTiGAF_}z`Zw@sRc|bs;C_+6r?uz56n0X8{}{5jt&ILH@c0&* z)SEl(l}PW_dFj%?f8JdCEPw8-@hb^Bk4RU*;e)ry3e0CW z5B$68p4pAo*aE7qj_O5JlZVD`>CbJFf_b;O1`mIZFEI<1au(2pJa!fwTDaJ~KEceZ zd)QB|m_Rm}1NQ0R>8A!&oN+`1#)V;(%Opf@M_=iPtkpB|@06qK% D`Bz0S literal 8880 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 rY&yelq4#&ax8@hJKYyNQ`hUgRW6R!I*O&b diff --git a/data/ProFont24Point.png b/data/ProFont24Point.png index c0f1b186bf863a97db2952b3deb9586ba7392937..3658958246055570b3d3bb0860b6952dad62eee0 100644 GIT binary patch literal 8879 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 Gr2Gehoyzn8 diff --git a/data/ProFont7Point.png b/data/ProFont7Point.png index 32d8a6309d78b7f6ce85dbfa17a85f6b12e8f5c7..f1e3e649309299cd1d1506a0ba98dbb8fecb1874 100644 GIT binary patch literal 1406 zcmV-^1%djBP)001@!00000Wt+{f000F=Nkl1Efe=vL|ozHq!GW<;_KJf%q}G=gR%GcIPlx(13kDd z82++RMCq39LFa~#t2Qbmuj+kFlwWVtRmDdEexqMK?*K~rm?OWaB7fqq12G1u?1Ha1sMRUzzNpOJprKv zSD5w!YitoPFt`s@rG@EQH3q0mps}qTc!-~fqM&0!NK8>m!pkCcOpk>$9or&+xwE%I z1sz7(U}&BN1&N^xds-PkAzl=wikwQqTS-A`GgOqYJJ>ow4O{U({VhE1KGlB=e#`~^ zW9Mg7ETD>q@}j`4AYMcXiEE^cFyxyVQe&Z-%gBwgUvnpMh>=;mIV5`Ko_Y>SS|&`9 z7#imx75?LK7=I}r4=A@xFs?IMQEg<)bN%hbWzFDNP(2N6K#fwde=f}M5h&B zXo3kQ`yuq8j9f}`#F{2jF+^hvaS{QG0!ca)Q6%Cd=!?So1y@pI?}gF`B`woU6SnRk zYdjuBlr-Jcz(is!zOsIS8HgII2-;8-lmAu5I?oxg$n4P^Q~GIG(xl5CBU zjChGcrNy7|jk%0mG|>s~BX6f!ew9d7L|8{8lk#rFStlv!2oxSQ6z*&)QUX@w0Yt(| z33dcYDjQKZu3arT&xJ~*#Vz=B(v+HqkigRm^85^ z&)Al>_z7b!@uG<>d4j*ph5djNqdVezEGLhJ5gTi^OivuOBRz1OeSkmZOaH?L zUCbaxR1HluG1MsPKs7=)U8@kF>(B;jXK5e}$RLo*K3U^Zk;}{l8$m?q!c4i$>+&p1y%^LO}-(Qkr3&4)uj^*1n^c_~MS zU}_VUg(XLfz)&uWQhKwLV(3C8Vd?CSo4IFB+YeGi=Do}yc{!8-5~ZsYkYLlH`XE8h zgdsZRP{Ildn2x{~R7xjnF;3+ze<4~@u&V5thAxt$}8!52He=~?=H9YCxPhAdop-E<4LSH&|Txp z@Vr~%!vF?lWu@YS1R@(xlz`n4>y0k(Ra)Ed7xA~B{}Eg;Ka%7xiWE}>m4!o~VmNdmr(hr~rFNhy;m`y6EKl%Ls%U|k4iTEn zwo=ea(xLj4qA+2mLjF14zF-fO*n}O z1@e~CeIPwzp})on$kUOvSaUaV#4Pkf3QxL=Ot})E$id?|0nBP%%#kp-?~( z!MrX)^q=NhJP4tTdnlu6*F{>dp7q{Rnpi0mch-idqJj%Zk`y-kb8!;Kzv|WfhH;kc|=yQ7YE`qaVXiW@JfWI#hRQ65-#7I`mXxrO8KKw9$nyJ7z(^Qo6 zKiyb3pXlP|3MM!4qFTwD+nx%}zZ%*3|Hksh8S2j+CcM4W2QCa|F^*<|g)^~HacwwP zHp2p5*Y&C%*FQ6VCae3jL zN`hi7m8IDzs7{Z%Xb={$_FADG3Jy?r2vAzoDNo}nG`Ez?;S^j>t3iy135@vzf$234 zp>Yc+9M2wcdR8vzdU3qCnhKm6T0KgsT+=hKGeD4p0OPw_=+>m0hB}SPGjw#qW!`KL z5NtDJti1sj!*0ObJg1 z&$GqeZ?SYqSUQ1r$s=5f?Gd- zl3=`kYsm;n;!{q)Y%Hm;Hka#F*|IGsx^$Z25C8(MvOCs*Y?{{v;43v0Y+k<2LE|dn zBg?$N$~^dNsw`|t5uMty#IJO5Z5Hrc`aP9l2}XGYP} zfj{CnQNQ~t)x#6D*WGVvs3AQmm?UFmAxoT+v-lagNu>mM#5i1je+VWIpU(S^EEZ;L zb=7VY4t7tFM7K`gMaOn+mc($NVcn!bUih%$H)uJky+Y5Luw*6tOearJ_wdI`?wmwG zmWVF!%QS4b#7_ZK)SYC-jG7I03YpRnYBIN!KB|bl#OM(}I$ diff --git a/data/ProFont7Point.raw b/data/ProFont7Point.raw index 325460ea1bf25aac52cd6bdca4fa693319e686ed..8cecb781a5c80897c151b5bef6587abc0ee98637 100644 GIT binary patch literal 1080 zcma)*K}Zx~6vyB9?JSPVCbP>HYXr@%qwIE2w=TQjVH^~;(Sv+>&<-N5k<_Kw4yl)K zZGsIJ*~UR3D$*PhArGNspkQLwA(pV9t7If}DCpv~_suFvmwK@8d+#^zecyj(-v_|s8cSGFokFRP^jOyA-#~yyfw@z zSd@H8>7q{Fky`@UDK0@4U=e#|iO6;+Zf48niQ8COb5S=y0_AGk+f*?J1tNPQG>`$0 z7DlSezx}&G$fYae?`Ql8vwJUHF`2VgjDh1Ojj-*{jx)#AkXcroFTbkImw)+-V>{0L zmdUQjmI^Q3TH}=MFPiM@s%8!hDHAGKUT7S zsK>Q&FL^z9_BcF>s}GMdTsw5oRRVk>6ckhv4z++v5E3svV!qY47bd@@I>t(S3qQ)xB)Ox8`U zi8Iis_mMdlF+XHMP({Yk`9RkJqCmJ0GyG>DjV&0dYJm2>0mwxF^gi$-vq-B%paDRU zb>MwoU9ch6O!d?d@b0Eh~(m0=!I}^|@KOse9!Jn}VZuP)@ zWzkoPM}T$=!X_IySg-i_$0(e)oq|gFRDIK!VyV_mSf1ZDryW_TbCR-RvH;@v#W n+0!e}uTdSZMW&K}RLS$H=yoc|oF%d$_U6LLX2+u4(bk^_iKhDC)0!^W zZ4qwQRK}%fer9ErQbuU#`Ui?FM#w@fvQ=3EitJ+vRtShMics*$bCWc!-3C1&=bn4M zd(OG{n{z;wfU0n}5OwV))fE8g#n9H}l?@ODNzi`xpYolvR3v z#2kM!yfqpuo6&oH@OL2i z7yv_|9&pb;J3-z;nt5IL+5m)sX%yLt03m6B-5U*a(y1DOug00=BW=-la@z2$m5n1LQr%!eUnV}xX7!atZwPClm$IM=_IEN2x`mi#M5{HvJdpCbGFv3v8Xm~_~Wl0RMbIK2jR4t&H%Dh84oI>CsQM`f0 zL$}CMCIlBuQACK=)E&h-*8eoT06IrDG{pd9!$mgsBc(|d*|6-z2(ob&*>LdiMeyN> z3A*=1YZ45J=;K<%F!&c;ZvZ@DbS72UOmLd z)W)X*zzWoI*2Zd>uleY~tCrInhpdRea@cx@gtTk{XouVYIF~~1nuM0Six#;hk5HQG zD%`UP_x;Wut+#UbCpiGsBJSAj9!>_cIx@sG+mPQ)epCm_qD)!o1?h73l*-_};WG=b zJu!Wwb{eB0u;VFEE%=nmf*&B+(j%qFrkEWsEcMoHt?y~a^}xw0j6M0+dK-XG3J?ko zU#k-cD-CwF`8*1K%+?XDV;wQrk^PaaVCy(hzB|r~K4ZBHU{$&S)owtyRP#S~iRkM7 E2Wd+lGynhq diff --git a/data/ProFont9Point.png b/data/ProFont9Point.png index a8fb0ddc2b7a1504fd14826836374f7a9f4100e4..7d15a6c29bf2dc2e23b798b97c5b39badc93a735 100644 GIT binary patch literal 1890 zcmV-o2c7tdP)bKHb2p4Hl(po&;;+C! zp(WIa!akG(7={HmCo@39R6v`mszjooI-r&iTJx-l@)8ZXsI)3{PlaR7C8bfKH^LA? zn~OLiBW1%@R)NF-{6J2O@GPk=T0)sfV>aQSy!x_Ma!PF=*qR1h)MJeJw4srUlp=x*?`f`c%xI(;Fl}!dd{|C!;Qf#SmN?Z*%}24NH~b+NY~h48f9kPF8u(tgwnhO(l#Zf*t7=K^|EO znbR35xRU^UK?!Pg?z!h3bD&unii{Lk<#X2a2vRIniltEFk%D&QmEwM-zG6X|>`a*K zJ8itcb}o(hDE=&nd3M4C`*;dfhIV9AQ~B~H9Xwsi=9!79XEF*QsD~xc1uw9t^GGp6 zYFMfiOCfVQd+L(1VjlHksWMDyZt0Pzq&7mkm>RO}cJ4g06f&o?C!7FccQ%gdiW6TX zFGI++6iO|o2A(Wdo1%KsDm`{YOec&wLPuE39SY<(W`ik%lIS8KVT)$`BZ=tad!FgM;s z-S-Bv*?D0rkHb}8xq;Cc`Yztz&t~U^QR;7m|0$$_gb_GC+;*TaM-o;Vn(~h!tOD;& zWc3jkQb|9YE8ff^OE|PM$5=s$N^ZE}p5bITJ*m_vx?JH{Ut>Sc zxM=+--uQC-VU!E)E=`q!RM|jDyg)l{L%Wmj;c|%;;svxpSPcwO@L#C{&LNuj5GRbO zg$3e_*3^-$T%bwZA~P`&s89~@4s&{VhzsVDGdwkLg!2wM`Fei$>oxdRZ6WMqO(`n_ z98uupSzw3;hOMIt7M(!Xp^M6!M=&9-;I?m#A#zbs>vKSofB|7hNsYCyz>ZCwL93xp zJJ=#Twm==}vq7BUrYQf12A9VwK?(#aR7>Dl!=r>yqT%!d$2y=(NG;c3M4XVGKI5kGE+MsCf(dbknz?WO0(xn_Sy4)IL6uTqr`&sB|MCv{ z^$KF){Lycro4FI?4`8Ugg>U#-Ts-fh^%{S2&-cI=d-Z1L-nsJ*bd&E4`C;{|nmR_q zS|m{l)*_35)k8*Y4fSU=jM`dcIYVti0wItZ0mbx%G|byH*1Yuvl_QJ21FdImUKvG(Ca4mmUy;uZT{4%}@V7kl%!1rF<$)D^8TOaV zQ4^}%=N3td8;&Z)QfT9$XBOmg?;|J3JLaefRV1&kU%0xcSU!wq_? z(HZ&z`Z%A1{x;1%px^Of(3|=7OwSlAR+BNEjPeSjZ#CUv46UX|u;3;BSRwq;k_5{Q zq+`y0P)^d@g*sDNoTciYk*+zLkJ#qytAR{@#@$ZqV|C^U)kolGcqdVCC!pPU!`vBQ zhgN69FH&N%oP}7{E47$FCW0K9L1TJk zxH4U2=b;(~GD@MOP>UODCw#_3f3!Knc|vx=LH8Z=P39Coijr60fDglXqmmaG+n)k{ cf$>KF0LN{ZoDReM`Tzg`07*qoM6N<$f}zEFfB*mh literal 1726 zcmV;v20{6WP)^;|NnC30Rs|}0QZ)jp7G6f94{HufCeh8THL_eclnG2n6MhzHaZ>reH42n|-jowc4g>+312o5t5|X z|LS9ygzQNH)`GSG8I7J%@KPb8)Rv^);MzFYFqYA_a(mr~0HTvD_GC4(_N} zOI)==(CIw*6jJT0>hK(6`yvu|HYyAgZc--7WI(XlZ(w39FEo><>8+YQ2dkt&iLi{l z$`#qxUEjHf1z!LY4%G96>EK5L5353G9-xksQ5u$#0oW7Ra&`#}iah|QW=-=Y=cgf<8pgah zD9ttOv}pJux`sF_D43Pwmie4$xTB?tNg9}P#3z$tAhJ6SfQc6SM9G*uGZ4nc6zt)I zY~qfV>;$yTeKEj+0UpW|%~#WM*R<9ddaR-E*ahk}mI<1j=}WzR zbRrmiYFbxJ!vaNypRULNkYbKe!3oql62=gDZdYTxgpE~!10Bq;ng{O7uSh1$5d&8A zh5|NQd06yZN;&irXjM3}@a}a!UR{L85onTt_@K)SW6%|{j6S{>GhB$$SAfTJ!7iT! zlI%e5m)dKI(?kZ`Zb_|j^oTu?A_o#DyRVbkqOXl!)|1(tv08G{Vq!L9KZuma3b>ZA zudQCZI;p}0=RsaCtax%tofX5Rm!Y$>8ZuNAj~2v}JLP>H2!o(lXQv65EtBTJOF62E z15k-WnPQs;E=>Y%R5X7kBSe{Tqj_<1tn!M}KH-Ik-KDiDcyQb(bGGaP(AWH?;8sy| zMj!Td>g*hNvSu?4v$@RK_b>+=Zv*vwG!iT1o~zYwoJVFkIzMa1SLQp+>)2`?GIHYn ze5dpuV{NZju!jw1k;t*%D4>_2-MKD{k7wUwcHVzSW6J`N!3#d~4leUe*z2q3`>T!! zdvV08s|q9FE5iFb*mwuAzldG!c-5|k&rqvh4Rqfwud-i=p4es@f>?* zQqU)F_J|OUM3brE2I0PMWnN)yq5MyRPJF}npEKWw30-~-?B$hp&bRIncui*)>TjYg zi0>JUi<}Vxj68wSib?CZt<`eO_R!}=40U9=P*0mF;DcgC#+{!NmH3S0;llpiKj zS;Y&p%oF^!<{U#SDpwV6W{>UXmm+O@Of@au3#)b%`~v{zPsCmi1I}+JGjG3*Rz5lz zC6NEUo%o$jpX{Ufx}$GHs6qS7b$o-sY!>`>o4&~}J8r)%FWq!Gkyhz{$Im_f0a?m* U_q33tZvX%Q07*qoM6N<$f;?9~ApigX diff --git a/data/ProFont9Point.raw b/data/ProFont9Point.raw index 18407a661b0232967a8e02fe13378a944d43a9e4..c68819629dfcdf8d55c8f7665487ed1d55442187 100644 GIT binary patch literal 1584 zcmZ{kL2DaF6vzKs%l4=-WUcPOEsGhAU1x0y4nC9=g1VSC1afiRFAyjN8G5jslY1I( zEPJ#%L@hZKA%fTjBa1?l-b%rUT;!xse+9)2u}TlZ^+nj1ytk@M>$p#&w{Lzk`}E#_ zX9cjOWB(sF3<;58WSw(c00k%iTKEC;)ou6PqintjnRHReHg<&{8X#FR(SoqTnF-%g z&`$IM{x;p2{9XrN95BEC(t^(BKZPIe4YfsmW323Lu1WY-lJ?Iwv>%AOBVs?WdY&o1 zo|t+?x1+I(42auiQ>8s)W+u2EjkQ~v>X)$Zb*mq@M7~Ls_e=T${y$d=?HHUpc^>^= zpf6t-+X%4wz&+_!OYJD|s>cWJsTYOw#xJ0FI|_v|`tkj*qtJ^KacO*`f4N-?g*3Vz zG>F%TFK2|*Xw1vf!Aws-33j8u=Uw%|TxOB^uN~U2jHw46{X{@~X;au5G>!RV=JiOa zkBnjd&AfZkaZ5+))T?gnS2NF)d0@na24ugVvD5|L$Lv43Y$cgs8Q(UpQwoTL)`7em zuS@pK=?MsW$dEDVKLh58uDjlvJl>j~`prH5YjVwNkZy8IThy0QCh*jcQTQS0(^$^f z@(wJoRyrhpL)A$))<-GMW94e0MSMEumilULc{Hv0ZjnT`0q-lkW1||gy2b}VVXuPW+bQ^4xr&GJm(Wrus`{D_k zzW7ow%rTc7Q72muC2YGu15XoT#fQJ>&<|wpV2Qj>114~ukemfzC@C$GIm(`O_j*_L z^A_^Y-B2nd^-{rEHnl*AsY5ipYB;Ot?SOdn`DadOByky_LT6xhhIxutOZzuZ4wzFM z&d&8YWj-D3kNE;~vBPnkf3UxwzrsAO=d7y}EjJ$zT#0*&4?`Rc9RF>Qu!HHpuJnqL z7`B$+*!a@#?0WI4(l$T#c78LT z`OW-(-}K#P7a18E=eWB$K+k$px-P1!xdKQNOe4A4+qO7E=Xnb=gGS`-?Yjr<1M$` ziLs89M-$avF|~3Ev0YW=^&^%q`)u0{CReHBDgSu`u@c!-?~>>7D@|4~A=}&_=txg(y(7-+UgH+)#pwKorRWWu!<5O)GvCv~{LOrHEk>DFfe?_rf5kKo;NiL30x^El;h1W@H6) zR?|u-<=G(M9I>C3OAPcR=+wG=;m(XN&o~P*xEX*N_tS;7^yGpZtIX^chy1j)BvjPm z79DnvOnN86Hnqgl;v^$0hF zEc8~XRZ(;L45+IWmQwE_MdC5iOXS`W#PTWqxN9U!u&{?9n3yl>YW!^+E=K8$kSLC#Ca+0HK!do-=HicQs>dW(a4 zY0&MJEJv?7Wv#HlLt0^i!s_K3e0WhSe5s#b^0dM^C_F$pqOb7r;+*u;U~1PdN3^hh z8ztl)r9M$TQ7x!fO)C1qL#&NTt58Ei!#?;^zoT{)D0)!F`Wz!aLCH1HNTo<&&~OzO ziBFHr{X^kz=cY$=Y^bjpADNrR)`fLDUyC(tADL5y8WpZ+s#8?@)oArHbbC<4(cP)~ z;v8xzJ=%BEW*AUn@1l(~Yb#D;$zt112r#FS^a0 z2h|AXXPYit@73hc0H?=@op2UUOb%&^l5=Dmm#uM1UhHfmlcY(Eo!I%}yE>)Htf1Ai zZ~dAD6=Y}V^;k=kUB;va6R}^{w1H^17WWUT9FNEErpC^G|IFI{k;cBb)7abZ@7!1W bhZ_1ry$ziM?tf8rAYyOe<1hF8SM~k|t*MDJ diff --git a/src/lib.rs b/src/lib.rs index cb330c0..4bd4ac0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,6 +5,8 @@ extern crate embedded_graphics; use embedded_graphics::fonts::font_builder::{FontBuilder, FontBuilderConf}; +const CHARS_PER_ROW: u32 = 32; + #[cfg(test)] pub(crate) mod mock_display; @@ -14,7 +16,7 @@ impl FontBuilderConf for ProFont7PointConf { const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont7Point.raw"); const CHAR_HEIGHT: u32 = 9; const CHAR_WIDTH: u32 = 5; - const FONT_IMAGE_WIDTH: u32 = 200; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { let fallback = '?' as u32 - ' ' as u32; if c < ' ' { @@ -39,7 +41,7 @@ impl FontBuilderConf for ProFont9PointConf { const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont9Point.raw"); const CHAR_HEIGHT: u32 = 11; const CHAR_WIDTH: u32 = 6; - const FONT_IMAGE_WIDTH: u32 = 240; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { let fallback = '?' as u32 - ' ' as u32; if c < ' ' { @@ -64,7 +66,7 @@ impl FontBuilderConf for ProFont18PointConf { const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont18Point.raw"); const CHAR_HEIGHT: u32 = 22; const CHAR_WIDTH: u32 = 12; - const FONT_IMAGE_WIDTH: u32 = 480; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { let fallback = '?' as u32 - ' ' as u32; if c < ' ' { @@ -87,9 +89,9 @@ pub type ProFont18Point<'a, C> = FontBuilder<'a, C, ProFont18PointConf>; pub enum ProFont24PointConf {} impl FontBuilderConf for ProFont24PointConf { const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont24Point.raw"); - const CHAR_HEIGHT: u32 = 29; + const CHAR_HEIGHT: u32 = 30; const CHAR_WIDTH: u32 = 16; - const FONT_IMAGE_WIDTH: u32 = 640; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { let fallback = '?' as u32 - ' ' as u32; if c < ' ' { diff --git a/src/main.rs b/src/main.rs index dda8598..3fd0d6c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -142,7 +142,7 @@ fn main() { } } - let filename = format!("data/ProFont{}Point.png", font_size); + let filename = format!("ProFont{}Point.png", font_size); imgbuf.save(&filename).expect("error saving PNG"); println!("Wrote {} with character size of {}", filename, char_size); } From f013df0d3185c8eb62dca61165cc4bf007ad6d46 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 15:31:05 +1100 Subject: [PATCH 05/15] Put binary behind non-default feature flag --- Cargo.toml | 11 +- src/main.rs | 302 +++++++++++++++++++++++++++------------------------- 2 files changed, 165 insertions(+), 148 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5eb5191..8ab1dca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,10 @@ authors = ["Wesley Moore "] [dependencies] embedded-graphics = "0.4" -# TODO: Make these optional behind feature -font-kit = { version = "0.1", git = "https://github.com/pcwalton/font-kit.git" } -euclid = "0.19" -image = { version = "0.20", default-features = false, features = ["png_codec"] } +font-kit = { version = "0.1", optional = true, git = "https://github.com/pcwalton/font-kit.git" } +euclid = { version = "0.19", optional = true } +image = { version = "0.20", optional = true, default-features = false, features = ["png_codec"] } + +[features] +default-features = [] +exe = ["font-kit", "euclid", "image"] diff --git a/src/main.rs b/src/main.rs index 3fd0d6c..faaa2be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,158 +1,172 @@ -extern crate euclid; -extern crate font_kit; -extern crate image; - -use euclid::{Point2D, Rect, Size2D}; -use font_kit::canvas::{Canvas, Format, RasterizationOptions}; -use font_kit::font::Font; -use font_kit::hinting::HintingOptions; -use image::Luma; -use std::char; -use std::env; -use std::sync::Arc; - -struct Glyph { - id: u32, - raster_rect: Rect, +#[cfg(feature = "exe")] +fn main () { + exe::main(); } +#[cfg(not(feature = "exe"))] fn main() { - let font_data = include_bytes!("../data/ProFontIIx.ttf").to_vec(); - let font = Font::from_bytes(Arc::new(font_data), 0).expect("error loading font"); - - let font_size: f32 = std::env::args() - .nth(1) - .expect("font size argument must be supplied on command line") - .parse() - .expect("invalid font size"); - - let metrics = font.metrics(); - let offset = (metrics.descent as f32 / metrics.units_per_em as f32 * font_size).round() as i32; - - // Print latin 1 characters - let basic = (' ' as u32..='~' as u32) - .into_iter() - .map(|c| char::from_u32(c).unwrap()); - let extended = ('\u{00A0}' as u32..='ÿ' as u32) - .into_iter() - .map(|c| char::from_u32(c).unwrap()); - let all_chars: Vec<_> = basic.chain(extended).collect(); - - // Get the raster bounds of all chars - let glyphs: Vec<_> = all_chars - .iter() - .map(|&chr| { - font.glyph_for_char(chr).map(|glyph_id| { - let raster_rect = font - .raster_bounds( - glyph_id, - font_size, - &Point2D::zero(), - HintingOptions::None, - RasterizationOptions::Bilevel, - ).expect("unable to get raster bounds"); - Glyph { - id: glyph_id, - raster_rect, - } - }) - }).collect(); + println!("profont must be compiled with the exe feature to enable the binary."); +} - // Work out how big the glyphs are - let char_size = Size2D::new( - // 12, 22 - glyphs - .iter() - .map(|glyph| { - glyph - .as_ref() - .map(|glyph| glyph.raster_rect.size.width) - .unwrap_or(0) - }).max() - .unwrap(), - glyphs +#[cfg(feature = "exe")] +mod exe { + extern crate euclid; + extern crate font_kit; + extern crate image; + + use self::euclid::{Point2D, Rect, Size2D}; + use self::font_kit::canvas::{Canvas, Format, RasterizationOptions}; + use self::font_kit::font::Font; + use self::font_kit::hinting::HintingOptions; + use self::image::Luma; + use std::char; + use std::env; + use std::sync::Arc; + + struct Glyph { + id: u32, + raster_rect: Rect, + } + + pub fn main() { + let font_data = include_bytes!("../data/ProFontIIx.ttf").to_vec(); + let font = Font::from_bytes(Arc::new(font_data), 0).expect("error loading font"); + + let font_size: f32 = env::args() + .nth(1) + .expect("font size argument must be supplied on command line") + .parse() + .expect("invalid font size"); + + let metrics = font.metrics(); + let offset = (metrics.descent as f32 / metrics.units_per_em as f32 * font_size).round() as i32; + + // Print latin 1 characters + let basic = (' ' as u32..='~' as u32) + .into_iter() + .map(|c| char::from_u32(c).unwrap()); + let extended = ('\u{00A0}' as u32..='ÿ' as u32) + .into_iter() + .map(|c| char::from_u32(c).unwrap()); + let all_chars: Vec<_> = basic.chain(extended).collect(); + + // Get the raster bounds of all chars + let glyphs: Vec<_> = all_chars .iter() - .map(|glyph| { - glyph - .as_ref() - .map(|glyph| glyph.raster_rect.size.height) - .unwrap_or(0) - }).max() - .unwrap(), - ).to_u32(); - - // Render the glyphs - let row_size = 32; - let img_size = Size2D::new( - char_size.width * row_size, - (char_size.height as f64 * glyphs.len() as f64 / row_size as f64).ceil() as u32, - ); - println!("img_size={}", img_size); - // let img_size = Size2D::new(800, 480); - let mut imgbuf = image::GrayImage::new(img_size.width, img_size.height); - - for (i, (chr, glyph)) in all_chars.iter().zip(glyphs.iter()).enumerate() { - if let Some(glyph) = glyph { - let mut canvas = Canvas::new(&glyph.raster_rect.size.to_u32(), Format::A8); - - font.rasterize_glyph( - &mut canvas, - glyph.id, - font_size, - &glyph.raster_rect.origin.to_f32(), - HintingOptions::None, - RasterizationOptions::Bilevel, - ).expect("error rasterizing glyph"); - - let col = i as u32 % row_size; - let row = i as u32 / row_size; - let img_x = col * char_size.width; - let img_y = row * char_size.height + char_size.height; - // println!( - // "'{}' i={} row={} col={} x,y=({}, {}) raster_rect={}", - // chr, i, row, col, img_x, img_y, glyph.raster_rect - // ); - // Copy onto image - for y in (0u32..glyph.raster_rect.size.height as u32) - .into_iter() - .rev() - { - let mut line = String::new(); - - let (row_start, row_end) = - (y as usize * canvas.stride, (y + 1) as usize * canvas.stride); - let row = &canvas.pixels[row_start..row_end]; - for x in 0u32..glyph.raster_rect.size.width as u32 { - let val = row[x as usize]; - line.push(shade(val)); - line.push(shade(val)); - if val != 0 { - let pixel_x = img_x as i32 + x as i32 + glyph.raster_rect.origin.x; - let pixel_y = img_y as i32 - glyph.raster_rect.size.height + y as i32 - - glyph.raster_rect.origin.y - + offset; - if pixel_x >= 0 && pixel_y >= 0 { - imgbuf.put_pixel(pixel_x as u32, pixel_y as u32, Luma([0xFFu8])); + .map(|&chr| { + font.glyph_for_char(chr).map(|glyph_id| { + let raster_rect = font + .raster_bounds( + glyph_id, + font_size, + &Point2D::zero(), + HintingOptions::None, + RasterizationOptions::Bilevel, + ).expect("unable to get raster bounds"); + Glyph { + id: glyph_id, + raster_rect, + } + }) + }).collect(); + + // Work out how big the glyphs are + let char_size = Size2D::new( + // 12, 22 + glyphs + .iter() + .map(|glyph| { + glyph + .as_ref() + .map(|glyph| glyph.raster_rect.size.width) + .unwrap_or(0) + }).max() + .unwrap(), + glyphs + .iter() + .map(|glyph| { + glyph + .as_ref() + .map(|glyph| glyph.raster_rect.size.height) + .unwrap_or(0) + }).max() + .unwrap(), + ).to_u32(); + + // Render the glyphs + let row_size = 32; + let img_size = Size2D::new( + char_size.width * row_size, + (char_size.height as f64 * glyphs.len() as f64 / row_size as f64).ceil() as u32, + ); + println!("img_size={}", img_size); + // let img_size = Size2D::new(800, 480); + let mut imgbuf = image::GrayImage::new(img_size.width, img_size.height); + + for (i, (_chr, glyph)) in all_chars.iter().zip(glyphs.iter()).enumerate() { + if let Some(glyph) = glyph { + let mut canvas = Canvas::new(&glyph.raster_rect.size.to_u32(), Format::A8); + + font.rasterize_glyph( + &mut canvas, + glyph.id, + font_size, + &glyph.raster_rect.origin.to_f32(), + HintingOptions::None, + RasterizationOptions::Bilevel, + ).expect("error rasterizing glyph"); + + let col = i as u32 % row_size; + let row = i as u32 / row_size; + let img_x = col * char_size.width; + let img_y = row * char_size.height + char_size.height; + // println!( + // "'{}' i={} row={} col={} x,y=({}, {}) raster_rect={}", + // chr, i, row, col, img_x, img_y, glyph.raster_rect + // ); + // Copy onto image + for y in (0u32..glyph.raster_rect.size.height as u32) + .into_iter() + .rev() + { + let mut line = String::new(); + + let (row_start, row_end) = + (y as usize * canvas.stride, (y + 1) as usize * canvas.stride); + let row = &canvas.pixels[row_start..row_end]; + for x in 0u32..glyph.raster_rect.size.width as u32 { + let val = row[x as usize]; + line.push(shade(val)); + line.push(shade(val)); + if val != 0 { + let pixel_x = img_x as i32 + x as i32 + glyph.raster_rect.origin.x; + let pixel_y = img_y as i32 - glyph.raster_rect.size.height + y as i32 + - glyph.raster_rect.origin.y + + offset; + if pixel_x >= 0 && pixel_y >= 0 { + imgbuf.put_pixel(pixel_x as u32, pixel_y as u32, Luma([0xFFu8])); + } } } - } - // println!("{}", line); + // println!("{}", line); + } } } - } - let filename = format!("ProFont{}Point.png", font_size); - imgbuf.save(&filename).expect("error saving PNG"); - println!("Wrote {} with character size of {}", filename, char_size); -} + let filename = format!("ProFont{}Point.png", font_size); + imgbuf.save(&filename).expect("error saving PNG"); + println!("Wrote {} with character size of {}", filename, char_size); -fn shade(value: u8) -> char { - match value { - 0 => ' ', - 1...84 => '░', - 85...169 => '▒', - 170...254 => '▓', - _ => '█', + } + + fn shade(value: u8) -> char { + match value { + 0 => ' ', + 1...84 => '░', + 85...169 => '▒', + 170...254 => '▓', + _ => '█', + } } } From 0d2984e31909f0a0106386a240dcd9ed8af40c12 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 15:32:34 +1100 Subject: [PATCH 06/15] Use published version of font-kit --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 8ab1dca..1478d77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Wesley Moore "] [dependencies] embedded-graphics = "0.4" -font-kit = { version = "0.1", optional = true, git = "https://github.com/pcwalton/font-kit.git" } +font-kit = { version = "0.1", optional = true } euclid = { version = "0.19", optional = true } image = { version = "0.20", optional = true, default-features = false, features = ["png_codec"] } From 4a85c9584877423a3549fbf1bdf9f4ab3a80ccfa Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 15:38:41 +1100 Subject: [PATCH 07/15] Add 10, 12, 14pt sizes --- src/lib.rs | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 4bd4ac0..40f2826 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -60,6 +60,81 @@ impl FontBuilderConf for ProFont9PointConf { /// The 9 point size. pub type ProFont9Point<'a, C> = FontBuilder<'a, C, ProFont9PointConf>; +#[derive(Debug, Copy, Clone)] +pub enum ProFont10PointConf {} +impl FontBuilderConf for ProFont10PointConf { + const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont10Point.raw"); + const CHAR_HEIGHT: u32 = 13; + const CHAR_WIDTH: u32 = 7; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; + fn char_offset(c: char) -> u32 { + let fallback = '?' as u32 - ' ' as u32; + if c < ' ' { + return fallback; + } + if c <= '~' { + return c as u32 - ' ' as u32; + } + if c < '¡' || c > 'ÿ' { + return fallback; + } + c as u32 - ' ' as u32 - 34 + } +} + +/// The 10 point size. +pub type ProFont10Point<'a, C> = FontBuilder<'a, C, ProFont10PointConf>; + +#[derive(Debug, Copy, Clone)] +pub enum ProFont12PointConf {} +impl FontBuilderConf for ProFont12PointConf { + const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont12Point.raw"); + const CHAR_HEIGHT: u32 = 15; + const CHAR_WIDTH: u32 = 8; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; + fn char_offset(c: char) -> u32 { + let fallback = '?' as u32 - ' ' as u32; + if c < ' ' { + return fallback; + } + if c <= '~' { + return c as u32 - ' ' as u32; + } + if c < '¡' || c > 'ÿ' { + return fallback; + } + c as u32 - ' ' as u32 - 34 + } +} + +/// The 12 point size. +pub type ProFont12Point<'a, C> = FontBuilder<'a, C, ProFont12PointConf>; + +#[derive(Debug, Copy, Clone)] +pub enum ProFont14PointConf {} +impl FontBuilderConf for ProFont14PointConf { + const FONT_IMAGE: &'static [u8] = include_bytes!("../data/ProFont14Point.raw"); + const CHAR_HEIGHT: u32 = 18; + const CHAR_WIDTH: u32 = 10; + const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; + fn char_offset(c: char) -> u32 { + let fallback = '?' as u32 - ' ' as u32; + if c < ' ' { + return fallback; + } + if c <= '~' { + return c as u32 - ' ' as u32; + } + if c < '¡' || c > 'ÿ' { + return fallback; + } + c as u32 - ' ' as u32 - 34 + } +} + +/// The 14 point size. +pub type ProFont14Point<'a, C> = FontBuilder<'a, C, ProFont14PointConf>; + #[derive(Debug, Copy, Clone)] pub enum ProFont18PointConf {} impl FontBuilderConf for ProFont18PointConf { From ad5149806b61d7eaded36fc237d241b6cf2d170c Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 16:05:27 +1100 Subject: [PATCH 08/15] Share char_offset impl and fix off by one after NBSP --- src/lib.rs | 100 ++++++++++++----------------------------------------- 1 file changed, 22 insertions(+), 78 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 40f2826..6638e70 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,20 @@ const CHARS_PER_ROW: u32 = 32; #[cfg(test)] pub(crate) mod mock_display; +fn char_offset_impl(c: char) -> u32 { + let fallback = '?' as u32 - ' ' as u32; + if c < ' ' { + return fallback; + } + if c <= '~' { + return c as u32 - ' ' as u32; + } + if c < '\u{00A0}' || c > 'ÿ' { + return fallback; + } + c as u32 - ' ' as u32 - 33 +} + #[derive(Debug, Copy, Clone)] pub enum ProFont7PointConf {} impl FontBuilderConf for ProFont7PointConf { @@ -18,17 +32,7 @@ impl FontBuilderConf for ProFont7PointConf { const CHAR_WIDTH: u32 = 5; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -43,17 +47,7 @@ impl FontBuilderConf for ProFont9PointConf { const CHAR_WIDTH: u32 = 6; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -68,17 +62,7 @@ impl FontBuilderConf for ProFont10PointConf { const CHAR_WIDTH: u32 = 7; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -93,17 +77,7 @@ impl FontBuilderConf for ProFont12PointConf { const CHAR_WIDTH: u32 = 8; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -118,17 +92,7 @@ impl FontBuilderConf for ProFont14PointConf { const CHAR_WIDTH: u32 = 10; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -143,17 +107,7 @@ impl FontBuilderConf for ProFont18PointConf { const CHAR_WIDTH: u32 = 12; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -168,17 +122,7 @@ impl FontBuilderConf for ProFont24PointConf { const CHAR_WIDTH: u32 = 16; const FONT_IMAGE_WIDTH: u32 = Self::CHAR_WIDTH * CHARS_PER_ROW; fn char_offset(c: char) -> u32 { - let fallback = '?' as u32 - ' ' as u32; - if c < ' ' { - return fallback; - } - if c <= '~' { - return c as u32 - ' ' as u32; - } - if c < '¡' || c > 'ÿ' { - return fallback; - } - c as u32 - ' ' as u32 - 34 + char_offset_impl(c) } } @@ -425,7 +369,7 @@ mod tests { fn correct_latin1() { let mut display = Display::default(); display.draw( - ProFont9Point::render_str("¡ÿ") + ProFont9Point::render_str("\u{00A0}ÿ") .with_stroke(Some(1u8.into())) .into_iter(), ); From aba30a4627099d0fa2966368fa1cbf9f4a19ceb6 Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 16:12:57 +1100 Subject: [PATCH 09/15] Add ProFontIIx.ttf --- data/ProFontIIx.ttf | Bin 0 -> 93492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/ProFontIIx.ttf diff --git a/data/ProFontIIx.ttf b/data/ProFontIIx.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bb58c86cbf8e8d6397f2de315f75f9176472e5d7 GIT binary patch literal 93492 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 literal 0 HcmV?d00001 From 10003db2cf0d0068a2efea8d1faf7aaa9481185c Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 17:08:15 +1100 Subject: [PATCH 10/15] Add photo of ProFont in use on an ePaper display --- README.md | 8 ++++++-- data/IMG_2198.jpg | Bin 0 -> 171317 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 data/IMG_2198.jpg diff --git a/README.md b/README.md index d1de87c..8b7cb6b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # ProFont -[The ProFont programming font](https://web.archive.org/web/20180412214402/http://tobiasjung.name/profont/) -for [embedded-graphics](https://github.com/jamwaffles/embedded-graphics). +[The ProFont monospace font][profont] for use with the [embedded-graphics] crate. + +Photo of ProFront on an ePaper display ## Specimens @@ -34,3 +35,6 @@ ProFont is available in 7 sizes: ### 24 Point ![24 Point ProFont](https://raw.githubusercontent.com/wezm/profont/master/data/ProFont24Point.png) + +[embedded-graphics]: https://github.com/jamwaffles/embedded-graphics +[profont]: https://web.archive.org/web/20180412214402/http://tobiasjung.name/profont/ diff --git a/data/IMG_2198.jpg b/data/IMG_2198.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59d0c18102ab9bb96a8e21665c819715e798ef31 GIT binary patch literal 171317 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∓r!c< z$inBbp$~zOh`jR?1=&Kz4=m$`aK66b?(=?zbHqd0nNnc0HQ6%6n@EJ~q!-^`tBEB;7m~@ z7pnrjkq%HnB?qUm303>NaZnllF6sWCwS+|t5!y86)`HaB7

scqR%%acB5mW|cnn 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

d8&yykBvt$P$4siv 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

E7qU`yqA!DfPJoALOOi37&2v|o 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 Date: Sat, 24 Nov 2018 17:40:45 +1100 Subject: [PATCH 11/15] Remove tests and add some documentation The tests were copied from embedded-graphics and weren't passing nor providing much possible value. --- src/lib.rs | 366 +++++------------------------------------------------ 1 file changed, 34 insertions(+), 332 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6638e70..aa29289 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,30 @@ -//! The ProFont programming font. Image data taken from the -//! [ProFont homepage](https://web.archive.org/web/20180412214402/http://tobiasjung.name/profont/) +//! The [ProFont](https://web.archive.org/web/20180412214402/http://tobiasjung.name/profont/) +//! monospace programming font for use with +//! [embedded-graphics](https://github.com/jamwaffles/embedded-graphics). Font data taken from the +//! [ProFont homepage](https://web.archive.org/web/20180412214402/http://tobiasjung.name/profont/). +//! +//! ### Synopsis +//! +//! Assuming `display` is something that implements the [Drawing +//! trait](https://docs.rs/embedded-graphics/0.4.4/embedded_graphics/trait.Drawing.html) +//! +//! ```no_run +//! display.draw( +//! ProFont24Point::render_str("Hello World") +//! .with_stroke(Some(Color::Red)) +//! .with_fill(Some(Color::White)) +//! .translate(Coord::new(10, 10)) +//! .into_iter(), +//! ); +//! ``` +//! +//! For a more complete example see [the example in the ssd1675 +//! crate](https://github.com/wezm/ssd1675/blob/master/examples/raspberry_pi_inky_phat.rs). +//! +//! ### Glyph Coverage +//! +//! This crate provides support for [ISO/IEC 8859-1](https://en.wikipedia.org/wiki/ISO/IEC_8859-1) +//! (latin1), although do note that the font is missing a few glyphs in this range. extern crate embedded_graphics; @@ -7,9 +32,6 @@ use embedded_graphics::fonts::font_builder::{FontBuilder, FontBuilderConf}; const CHARS_PER_ROW: u32 = 32; -#[cfg(test)] -pub(crate) mod mock_display; - fn char_offset_impl(c: char) -> u32 { let fallback = '?' as u32 - ' ' as u32; if c < ' ' { @@ -36,7 +58,7 @@ impl FontBuilderConf for ProFont7PointConf { } } -/// The 7 point size. +/// The 7 point size with a character size of 5x9 pixels. pub type ProFont7Point<'a, C> = FontBuilder<'a, C, ProFont7PointConf>; #[derive(Debug, Copy, Clone)] @@ -51,7 +73,7 @@ impl FontBuilderConf for ProFont9PointConf { } } -/// The 9 point size. +/// The 9 point size with a character size of 6x11 pixels. pub type ProFont9Point<'a, C> = FontBuilder<'a, C, ProFont9PointConf>; #[derive(Debug, Copy, Clone)] @@ -66,7 +88,7 @@ impl FontBuilderConf for ProFont10PointConf { } } -/// The 10 point size. +/// The 10 point size with a character size of 7x13 pixels. pub type ProFont10Point<'a, C> = FontBuilder<'a, C, ProFont10PointConf>; #[derive(Debug, Copy, Clone)] @@ -81,7 +103,7 @@ impl FontBuilderConf for ProFont12PointConf { } } -/// The 12 point size. +/// The 12 point size with a character size of 8x15 pixels. pub type ProFont12Point<'a, C> = FontBuilder<'a, C, ProFont12PointConf>; #[derive(Debug, Copy, Clone)] @@ -96,7 +118,7 @@ impl FontBuilderConf for ProFont14PointConf { } } -/// The 14 point size. +/// The 14 point size with a character size of 10x18 pixels. pub type ProFont14Point<'a, C> = FontBuilder<'a, C, ProFont14PointConf>; #[derive(Debug, Copy, Clone)] @@ -111,7 +133,7 @@ impl FontBuilderConf for ProFont18PointConf { } } -/// The 18 point size. +/// The 18 point size with a character size of 12x22 pixels. pub type ProFont18Point<'a, C> = FontBuilder<'a, C, ProFont18PointConf>; #[derive(Debug, Copy, Clone)] @@ -126,325 +148,5 @@ impl FontBuilderConf for ProFont24PointConf { } } -/// The 24 point size. +/// The 24 point size with a character size of 16x30 pixels. pub type ProFont24Point<'a, C> = FontBuilder<'a, C, ProFont24PointConf>; - -#[cfg(test)] -mod tests { - use super::*; - use embedded_graphics::coord::Coord; - use embedded_graphics::dev::TestPixelColor; - use embedded_graphics::fonts::Font; - use mock_display::Display; - use embedded_graphics::style::Style; - use embedded_graphics::style::WithStyle; - use embedded_graphics::transform::Transform; - use embedded_graphics::unsignedcoord::UnsignedCoord; - use embedded_graphics::Drawing; - - #[test] - fn off_screen_text_does_not_infinite_loop() { - let text: ProFont9Point = ProFont9Point::render_str("Hello World!") - .with_style(Style::with_stroke(1u8.into())) - .translate(Coord::new(5, -10)); - let mut it = text.into_iter(); - - assert_eq!(it.next(), None); - } - - #[test] - fn unstroked_text_does_not_infinite_loop() { - let text: ProFont9Point = ProFont9Point::render_str("Hello World!") - .with_style(Style::with_stroke(1u8.into())) - .translate(Coord::new(5, -10)); - let mut it = text.into_iter(); - - assert_eq!(it.next(), None); - } - - #[test] - fn text_dimensions() { - let hello: ProFont9Point = ProFont9Point::render_str("Hello World!"); - let empty: ProFont9Point = ProFont9Point::render_str(""); - - assert_eq!(hello.dimensions(), UnsignedCoord::new(72, 8)); - assert_eq!(empty.dimensions(), UnsignedCoord::new(0, 0)); - } - - #[test] - fn default_style() { - let mut display_default = Display::default(); - display_default.draw(ProFont9Point::render_str("Mm").into_iter()); - - let mut display_full_style = Display::default(); - display_full_style.draw( - ProFont9Point::render_str("Mm") - .with_stroke(Some(1u8.into())) - .with_fill(Some(0u8.into())) - .into_iter(), - ); - - let mut display_stroke = Display::default(); - display_stroke.draw( - ProFont9Point::render_str("Mm") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - - let mut display_fill = Display::default(); - display_fill.draw( - ProFont9Point::render_str("Mm") - .with_fill(Some(0u8.into())) - .into_iter(), - ); - - assert_eq!(display_default, display_full_style); - assert_eq!(display_default, display_stroke); - assert_eq!(display_default, display_fill); - } - - #[test] - fn correct_m() { - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("Mm") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - - assert_eq!( - display, - Display([ - [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ]) - ); - } - - #[test] - fn correct_inverse_coloured_m() { - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("Mm") - .with_stroke(Some(0u8.into())) - .with_fill(Some(1u8.into())) - .into_iter(), - ); - - assert_eq!( - display, - Display([ - [0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ]) - ); - } - - // tests if black on white has really the same behaviour as white on black - #[test] - fn compare_inverse_coloured_m() { - let mut display_inverse = Display::default(); - display_inverse.draw( - ProFont9Point::render_str("Mm") - .with_stroke(Some(0u8.into())) - .with_fill(Some(1u8.into())) - .into_iter(), - ); - - let mut display_normal = Display::default(); - display_normal.draw( - ProFont9Point::render_str("Mm") - .with_stroke(Some(1u8.into())) - .with_fill(Some(0u8.into())) - .into_iter(), - ); - - for (x, y) in display_inverse.0[0..8] - .iter() - .zip(display_normal.0[0..8].iter()) - { - for (x2, y2) in x[0..12].iter().zip(y[0..12].iter()) { - assert_ne!(x2, y2); - } - } - } - - #[test] - fn correct_ascii_borders() { - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str(" ~") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - - assert_eq!( - display, - Display([ - [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ]) - ); - } - - #[test] - fn correct_dollar_y() { - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("$y") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - - assert_eq!( - display, - Display([ - [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ]) - ); - } - - #[test] - fn correct_latin1() { - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("\u{00A0}ÿ") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - - assert_eq!( - display, - Display([ - [0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ]) - ); - } - - #[test] - fn dont_panic() { - #[cfg_attr(rustfmt, rustfmt_skip)] - let two_question_marks = Display( - [ - [0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - // - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - ] - ); - - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("\0\n") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - assert_eq!(display, two_question_marks); - - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("\x7F\u{A0}") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - assert_eq!(display, two_question_marks); - - let mut display = Display::default(); - display.draw( - ProFont9Point::render_str("Ā💣") - .with_stroke(Some(1u8.into())) - .into_iter(), - ); - assert_eq!(display, two_question_marks); - } -} From 1d3abe8da2665fddd6215656137b67261161ed2f Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 17:41:43 +1100 Subject: [PATCH 12/15] Add crate metadata --- Cargo.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 1478d77..c894ff6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,18 @@ [package] name = "profont" +description = "The ProFont monospace font for use with the embedded-graphics crate." version = "0.1.0" authors = ["Wesley Moore "] +documentation = "https://docs.rs/crate/profont" +repository = "https://github.com/wezm/profont" + +readme = "README.md" +license = "MIT" + +keywords = ["bitmap", "monochrome", "font", "monospace"] +categories = ["rendering", "embedded", "no-std"] + [dependencies] embedded-graphics = "0.4" From a3a60ab0b75cd77d6c5d5c2631878293e84d667b Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 17:42:12 +1100 Subject: [PATCH 13/15] Add myself to the LICENCE file --- LICENCE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENCE b/LICENCE index 7203bd9..73e5015 100644 --- a/LICENCE +++ b/LICENCE @@ -1,6 +1,6 @@ -ProFont MIT License +Copyright (c) 2018 Wesley Moore Copyright (c) 2014 Tobias Jung, Carl Osterwald, Stephen C. Gilardi, Andrew Welch Permission is hereby granted, free of charge, to any person obtaining a copy From f54f892412fc9f9242efe22d2af0ec0311bd1a1a Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 17:45:50 +1100 Subject: [PATCH 14/15] Add badges and licence to README --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 8b7cb6b..ec43334 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,13 @@ [The ProFont monospace font][profont] for use with the [embedded-graphics] crate. +[![crates.io](https://img.shields.io/crates/v/profont.svg)](https://crates.io/crates/profont) +[![Documentation](https://docs.rs/profont/badge.svg)][crate-docs] + Photo of ProFront on an ePaper display +`profont` is licensed under the [MIT license][MIT]. + ## Specimens ProFont is available in 7 sizes: @@ -38,3 +43,5 @@ ProFont is available in 7 sizes: [embedded-graphics]: https://github.com/jamwaffles/embedded-graphics [profont]: https://web.archive.org/web/20180412214402/http://tobiasjung.name/profont/ +[MIT]: https://github.com/wezm/profont/blob/master/LICENSE +[crate-docs]: https://docs.rs/crate/profont From b9578adfb721a5c33493c00b960645fae5e4dbfa Mon Sep 17 00:00:00 2001 From: Wesley Moore Date: Sat, 24 Nov 2018 17:49:53 +1100 Subject: [PATCH 15/15] Clean up main.rs a bit --- src/main.rs | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/main.rs b/src/main.rs index faaa2be..15b7cfb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -72,7 +72,6 @@ mod exe { // Work out how big the glyphs are let char_size = Size2D::new( - // 12, 22 glyphs .iter() .map(|glyph| { @@ -99,8 +98,6 @@ mod exe { char_size.width * row_size, (char_size.height as f64 * glyphs.len() as f64 / row_size as f64).ceil() as u32, ); - println!("img_size={}", img_size); - // let img_size = Size2D::new(800, 480); let mut imgbuf = image::GrayImage::new(img_size.width, img_size.height); for (i, (_chr, glyph)) in all_chars.iter().zip(glyphs.iter()).enumerate() { @@ -120,24 +117,17 @@ mod exe { let row = i as u32 / row_size; let img_x = col * char_size.width; let img_y = row * char_size.height + char_size.height; - // println!( - // "'{}' i={} row={} col={} x,y=({}, {}) raster_rect={}", - // chr, i, row, col, img_x, img_y, glyph.raster_rect - // ); + // Copy onto image for y in (0u32..glyph.raster_rect.size.height as u32) .into_iter() .rev() { - let mut line = String::new(); - let (row_start, row_end) = (y as usize * canvas.stride, (y + 1) as usize * canvas.stride); let row = &canvas.pixels[row_start..row_end]; for x in 0u32..glyph.raster_rect.size.width as u32 { let val = row[x as usize]; - line.push(shade(val)); - line.push(shade(val)); if val != 0 { let pixel_x = img_x as i32 + x as i32 + glyph.raster_rect.origin.x; let pixel_y = img_y as i32 - glyph.raster_rect.size.height + y as i32 @@ -148,8 +138,6 @@ mod exe { } } } - - // println!("{}", line); } } } @@ -157,16 +145,5 @@ mod exe { let filename = format!("ProFont{}Point.png", font_size); imgbuf.save(&filename).expect("error saving PNG"); println!("Wrote {} with character size of {}", filename, char_size); - - } - - fn shade(value: u8) -> char { - match value { - 0 => ' ', - 1...84 => '░', - 85...169 => '▒', - 170...254 => '▓', - _ => '█', - } } }