Dealing with Memory Constraints / Different Devices

I've developed some pretty useful data fields for runners and cyclists. I'd like to support, for example, the Edge 520 with a 28kb DF limit, but not restrict some of the cool advanced features for other devices with more memory.

Three use cases... maybe all are solved the same way?

1. Add a couple of extra custom fonts for large memory devices. Maybe I can dynamically, at run time, get the memory available and load the font resources if there is enough memory. This just requires some IF statements and a little logic to deal with the available loaded fonts.

2. Some extra code/logic that implements extra features that I don't want to be compiled into the versions loaded by small memory devices. I could put those features in a separate module I guess. I think using Jungles are what I want for this?

3. User Settings - I might want to activate a couple of extra User Settings for devices in which the extra features are available. Is there any way to do this?

Thanks!