raphlinus / font-rs

Apache License 2.0
755 stars 49 forks source link

Allow optionally compiling with no_std #30

Open nshp opened 6 years ago

nshp commented 6 years ago

This is the first time I've messed with conditional no_std, so I'm sure there are cleaner ways to get some of this stuff. Very open to suggestions - I'd like to try using this myself.

I only learned after writing this that there's a no_std-safe math crate which provides safe floating point wrappers, so it might be worth pulling that in to get rid of all these unsafe intrinsics calls.

I also changed the font "tables" structure from a HashMap to a BTreeMap simply because BTreeMap exists in alloc. I wonder, though, if the map structure is needed at all. It looks like it's not actually used outside of the parse constructor, so perhaps that for-loop should just be rewritten to find and set aside each table as it goes?

nshp commented 6 years ago

Heh, forgot I can't use features outside of nightly as well. Working on that.

nshp commented 6 years ago

This should now build on stable Rust with std, but no_std requires nightly feature-gated things.