diff --git a/src/linja-pona-4.9.otf b/src/linja-pona-4.9.otf new file mode 100644 index 0000000..091819d Binary files /dev/null and b/src/linja-pona-4.9.otf differ diff --git a/src/linja-pona-license.txt b/src/linja-pona-license.txt new file mode 100644 index 0000000..aa5feb8 --- /dev/null +++ b/src/linja-pona-license.txt @@ -0,0 +1,6 @@ +The linja pona font for the sitelen pona toki pona writing system was created by +David A Roberts and is licensed under the CC-BY-4.0 license. + +license link: https://creativecommons.org/licenses/by/4.0/ +website: http://musilili.net/linja-pona/ +github: https://github.com/davidar/linja-pona diff --git a/src/text.rs b/src/text.rs index 1d88f83..c5d9fd6 100644 --- a/src/text.rs +++ b/src/text.rs @@ -12,7 +12,7 @@ use allsorts::tables::{FontTableProvider, SfntVersion}; use allsorts::{tag, Font}; use std::collections::HashMap; -const TEXT_SCALE: f32 = 0.00005; +const TEXT_SCALE: f32 = 0.0001; pub struct GlyphCache { glyphs: HashMap, @@ -75,24 +75,16 @@ pub struct DummyText { impl Default for DummyText { fn default() -> Self { - // if you're looking at this for whatever reason, forgive the mess, - // Arabic rendering is misbehaving - let script = tag::ARAB; - let buffer = include_bytes!("/usr/share/fonts/TTF/Hack-Regular.ttf"); - let buffer = include_bytes!("/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc"); - let buffer = include_bytes!("/usr/share/fonts/misc/ter-u16n.otb"); - let buffer = include_bytes!("/usr/share/fonts/noto/NotoNastaliqUrdu-Regular.ttf"); - // let buffer = include_bytes!("/usr/share/fonts/noto/NotoSansArabic-Regular.ttf"); - // let buffer = include_bytes!("/usr/share/fonts/noto/NotoKufiArabic-Regular.ttf"); - // let buffer = include_bytes!("/usr/share/fonts/noto/NotoNaskhArabic-Regular.ttf"); + let script = tag::LATN; + let buffer = include_bytes!("linja-pona-4.9.otf"); let buffer = buffer.as_slice(); let scope = ReadScope::new(&buffer); let font_file = scope.read::>().unwrap(); let provider = font_file.table_provider(0).unwrap(); let mut font = Font::new(provider).unwrap().unwrap(); - let text = "نص حكيم له سر قاطع وذو شأن عظيم مكتوب على ثوب أخضر ومغلف بجلد أزرق"; - let glyphs = font.map_glyphs(text, script, MatchingPresentation::NotRequired); + let text = "toki o! nimi mi li [_mun_alasa_sona]. toki+pona li pona."; + let glyphs = font.map_glyphs(&text, script, MatchingPresentation::Required); let mut cache = GlyphCache::new(); @@ -127,14 +119,14 @@ impl Default for DummyText { panic!("no glyf or CFF table"); } - let lang_tag = Some(tag::URD); - let features = allsorts::gsub::Features::Mask(allsorts::gsub::FeatureMask::all()); + let lang_tag = None; + let features = allsorts::gsub::Features::default(); let kerning = true; let infos = font .shape(glyphs, script, lang_tag, &features, kerning) .unwrap(); - let direction = TextDirection::RightToLeft; + let direction = TextDirection::LeftToRight; let vertical = false; let mut layout = GlyphLayout::new(&mut font, &infos, direction, vertical); let positions = layout.glyph_positions().unwrap(); @@ -161,7 +153,7 @@ impl Default for DummyText { let yoff = (ypos as f32) * TEXT_SCALE; for v in glyph.vertices.iter() { - let x = v.position.x + xoff + 0.5; + let x = v.position.x + xoff - 0.9; let y = v.position.y + yoff + 0.5; mesh.vertices.push(MeshVertex { position: canary_types::Vec2 { x, y },