-
Notifications
You must be signed in to change notification settings - Fork 1k
u8g2optimization
On AVR systems, use the Arduino F()
macro. U8g2 supports the Arduino print
function, which accepts the F()
macro.
A simple example for the F()
macro is available as an example:
A more complex example is here:
Usually U8g2 fonts are available in different sizes (number of glyphs included in the font). The last letter of the font name indicates the character set (and the size) of the fonts.
Font Name | Character Set |
---|---|
u8g2_xxx_xe | Extended: Glyphs with unicode 32 to 701 are included in the font (v2.16.x will also include big ß) |
u8g2_xxx_xf | Full: Glyphs with unicode 32 to 255 are included in the font |
u8g2_xxx_xr | Restricted: Only characters from 32 to 127 are included |
u8g2_xxx_xu | Uppercase: Numbers and uppercase letters |
u8g2_xxx_xn | Numbers and some extra glyphs for date and time printing are included |
u8g2_xxx_x_something | Special selection of glyphs. See the font picture for details. |
For example if only a number needs to be displayed with a font,
then the font should contain only numbers. In such a case, it is better to
select a n
font to avoid the allocation of unneeded chars in the flash memory.
Each font picture also includes the number of bytes, occupied by the font in flash memory (upper part of the picture, third line):
These pictures are available on the font group pages for each font.
If there is no proper set, you can always create your own custom font with exactly those characters, which are required for your project (see FAQ)
See also: setFont
U8g2 includes many features and includes several speed optimization procedures.
Sometimes speed is not critical or some features are not required. In those
cases, the user can disable such features in u8g2.h
:
Search for u8g2.h
on your local drive.
For the Arduino Environment, u8g2.h
should be in the subfolder
libraries/U8g2_Arduino/src/clib
of your Arduino custom library folder.
The location of this custom library folder might be different on operating system and Arduino IDE.
It might be C:\Users\<name>\AppData\Local\Arduino15\
on Windows OS or
~/Arduino/Libraries
for Unix based systems.
Some other pathes are mentioned on the Arduino library hacking page.
All features names start with U8G2_WITH_
. A feature is enabled with a #define
of
the feature name. It is disabled if the #define
is put into comments.
Feature Name | Description |
---|---|
U8G2_WITH_HVLINE_SPEED_OPTIMIZATION |
Enables speed optimization for pixel buffer writes. |
U8G2_WITH_INTERSECTION |
Enables speed optimization by early intersection tests for high level graphics primitives. |
U8G2_WITH_CLIP_WINDOW_SUPPORT |
Enables support for a custom clip window. If disabled, clipping will happen only against the display boundaries. |
U8G2_WITH_FONT_ROTATION |
Enables string output to all four directions. If disabled, strings can be written only from left to right. |
U8G2_WITH_UNICODE |
Enables support for Unicode Basic Multilingual Plane. |
By default all the above features are enabled. The following table gives an idea on the flash memory reduction, if one or more features are disabled:
Flash | Reduction | Disabled Feature |
---|---|---|
8732 | default, all features active | |
8500 | -2.65% | no U8G2_WITH_CLIP_WINDOW_SUPPORT
|
8316 | -4.76% | no U8G2_WITH_FONT_ROTATION
|
8606 | -1.44% | no U8G2_WITH_UNICODE
|
8692 | -0.45% | no U8G2_WITH_INTERSECTION
|
8328 | -4.62% | no U8G2_WITH_INTERSECTION no U8G2_WITH_CLIP_WINDOW_SUPPORT
|
8718 | -4.86% | no U8G2_WITH_HVLINE_SPEED_OPTIMIZATION
|
8026 | -8.08% | no U8G2_WITH_FONT_ROTATION no U8G2_WITH_INTERSECTION no U8G2_WITH_CLIP_WINDOW_SUPPORT
|
Numbers are derived from:
- Arduino 1.84, U8g2 2.23, Arduino Uno
- U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI