xous-core/services/graphics-server/src/blitstr2
bunnie 5452fae33c harmonize blitstr2 and graphics-server to an i16 pixel representation
previously blitstr2 is using usize for x/y coords, which means that
for layout purposes points could not go to the top or left boundary
without causing arithmetic overflow. Of course, you want to render
everything on-screen, but, as we have multi-line text with overflow
possibility, it's reasonable to be able to use negative coordinates
to locate text boxes that flow into the visible region.

This of course means that occassionally you can come out with
things like "negative widths", but even then, there can be reasonable
uses for this as an intermediate in calculations that ultimately
arrive at a positive result.
2022-03-28 23:17:18 +08:00
..
codegen initial attempt to move the font resources into the loader 2022-01-23 03:23:06 +08:00
fonts initial attempt to move the font resources into the loader 2022-01-23 03:23:06 +08:00
blit.rs remove dependency on blitstr v1 entirely 2022-01-23 04:08:32 +08:00
cliprect.rs harmonize blitstr2 and graphics-server to an i16 pixel representation 2022-03-28 23:17:18 +08:00
fonts.rs remove dependency on blitstr v1 entirely 2022-01-23 04:08:32 +08:00
LEGAL.md initial attempt to integrate blitstr2 2022-01-19 03:29:53 +08:00
LICENSE-APACHE initial attempt to integrate blitstr2 2022-01-19 03:29:53 +08:00
LICENSE-MIT initial attempt to integrate blitstr2 2022-01-19 03:29:53 +08:00
m3hash.rs initial attempt to integrate blitstr2 2022-01-19 03:29:53 +08:00
README.md some documentation and maintenance notes 2022-01-23 13:21:36 +08:00

blitstr2

This code is vendored in from https://github.com/samblenny/blitstr2 with permission from the author.

multi-lingual string blitter for 1-bit monochrome (sequel to blitstr)

Maintenance Notes

  • Font files are regenerated by running ruby config_editor.rb followed by go run main.go --write in the /src/blitstr2/codegen directory relative to this README.md file
  • The Go files have been modified to generate the necessary templates for the loader/kernel split of the font tables. The main bit of manual "glue" is at the top of main.rs inside the map_fonts() routine, where the AtomicU32 pointers that hold the final linked location of the font maps are initialized at boot.
  • Font sources are located in src/blitstr2/codegen/src_data, along with various indices and codepoints.
  • Most font sources were generated by https://github.com/samblenny/hd1b_other
  • The latin sets that have a more manual process consisting of taking a screenshot of ResEdit's KCHR screen on a Mac OS 7 emulator via https://archive.org/details/mac_MacOS_7.0.1_compilation and massaging the result into a usable sprite sheet. The only two native font sizes that look good ane 9 and 12 point, which gives a coverage of 9, 12, 18 and 24 point sizes (with pixel doubling).

What's New

Compared to the original version of blitstr, blitstr2:

  • Supports more languages
  • Uses 16x16 pixel size for CJK glyphs instead of 32x32
  • Makes it easier for calling code to calculate size of rendered strings
  • Ignores multi-codepoint grapheme clusters for modern emoji (instead, there is limited support for old-school monochrome bitmap emoji)
  • Focuses on an API to look up glyphs from just one typeface at a time

License

Source code for blitstr2 is dual licensed under the terms of Apache 2.0 or MIT, at your option.

Glyph bitmaps included with blitstr2 have their own copyrights and licenses (OFL-1.1, public domain, Japanese equivalent of public domain).

See LEGAL.md for copyright and license details on embedded glyph bitmaps.