Skip to main content

Printing Text

Printing text on Inkplate is simple and requires only a few functions. The library also supports custom fonts.

ℹ️
For complete examples of text printing, most Arduino projects in the library include some form of text output.

Simple text printing​

To print text, use setCursor followed by print. If you're using the default font, you may want to use setTextSize to increase the font size:

#include "Inkplate.h"
Inkplate inkplate(INKPLATE_3BIT);
void setup() {
inkplate.begin();
inkplate.clearDisplay();
inkplate.display();
inkplate.setTextColor(BLACK);
inkplate.setCursor(100,100);
inkplate.setTextSize(6);
inkplate.print("Hi (size 6)!");
inkplate.setCursor(100,150);
inkplate.setTextSize(5);
inkplate.print("Inkplate (size 5)!");
inkplate.setCursor(100,200);
inkplate.setTextSize(4);
inkplate.print("Hi inkplate (in size 4)!");
inkplate.setCursor(100,250);
inkplate.setTextSize(3);
inkplate.print("Hi inkplate (in size 3)!");
inkplate.setCursor(100,300);
inkplate.setTextSize(2);
inkplate.print("Hi inkplate (in size 2)!");
inkplate.setCursor(100,350);
inkplate.setTextSize(1);
inkplate.print("Hi inkplate (in size 1)!");
inkplate.display();
}
void loop() {
}
Expected output on Inkplate display
Expected output on Inkplate display.

inkplate.setTextSize()

Increases the text size by a given factor.

Returns value: None

Function parameters:

TypeNameDescription
uint8_tsSize factor. 1 is the default size, 2 is twice as large, 3 is three times larger, etc.

inkplate.print()

Prints text at the previously set cursor position. This is the standard Arduino print function used in many native Arduino objects and libraries.

Returns value: size_t, number of bytes printed.

Function parameters:

TypeNameDescription
const char *_cThe C-style string to print on the display.

Text background color​

To change the text color, use setTextColor. This function can also optionally set a background color, which prints a rectangle in that color behind the text. This can improve visibility in some cases.

inkplate.setTextColor()

Sets the color of the text. Must be called before printing.

Returns value: None

Function parameters:

TypeNameDescription
uint16_tcText color.
uint16_tbgOptional background color. Default is transparent.

Custom fonts​

The default font appears blocky because it is optimized for minimal memory usage. You can use custom fonts by downloading them from the Adafruit GFX official repository. Adafruit provides well-documented examples of using custom fonts here.

After downloading a font, place it in your sketch folder, include it, and use setFont:

#include "Inkplate.h"
#include "FreeMono9pt7b.h"
Inkplate inkplate(INKPLATE_3BIT);
void setup() {
inkplate.begin();
inkplate.clearDisplay();
inkplate.display();
inkplate.setFont(&FreeMono9pt7b);
inkplate.setCursor(100,100);
inkplate.setTextColor(BLACK);
inkplate.setTextSize(3);
inkplate.print("Hello World!");
inkplate.display();
}
void loop() {
}
Expected output on Inkplate display
Expected output on Inkplate display.

inkplate.setFont()

Sets a custom font for text printing. Must be called before printing.

Returns type: None

Function parameters:

TypeNameDescription
const GFXfont *fPointer to the GFXfont structure of the font to be set.

TextBox​

You can manually define the area in which text will appear by using the drawTextBox() function.

#include "Inkplate.h" // Include the Inkplate library in the sketch
#include "Roboto_Light_36.h"
Inkplate inkplate(INKPLATE_1BIT); // Create an object of the Inkplate library and set the library to 1 Bit mode (BW)

// Define the text you will show in the text box
const char* text = "This is an example of a text written in a textbox. When a word doesn't fit into the current row, it goes to the next one."\
" If the text reaches the lower bound, it ends with three dots (...) to mark that the text isn't displayed fully";

void setup()
{
inkplate.begin(); // Initialize the Inkplate library (you should call this function ONLY ONCE)
inkplate.clearDisplay(); // Clear the frame buffer of the display
inkplate.display(); // Display the clear image

// Create a text box without any optional parameters
// x0 - x coordinate of the upper left corner
// y0 - y coordinate of the upper left corner
// x1 - x coordinate of the bottom right corner
// y1 - y coordinate of the bottom right corner
// text - text we want to display
inkplate.drawTextBox(100,100,300,300,text);

// Create a text box with all parameters
// x0 - x coordinate of the upper left corner
// y0 - y coordinate of the upper left corner
// x1 - x coordinate of the bottom right corner
// y1 - y coordinate of the bottom right corner
// text - text we want to display
// textSizeMultiplier - factor by which we want to enlarge the size of the font
// font - address of the selected custom font
// verticalSpacing - number of pixels between each row of text
// showBorder - create a visible rectangle around the box
// fontSize - size of the used font in pt
int offset = 32; // Note: Some custom fonts are drawn from bottom to top, which requires an offset; use an offset that best suits the font you use
inkplate.drawTextBox(400,100 + offset,600,300,text,1,&Roboto_Light_36,27,false,36);

// Display both text boxes
inkplate.display();
}
void loop()
{
// Nothing...
}
Expected output on Inkplate display
Expected output on Inkplate display.

inkplate.drawTextBox()

This function creates a TextBox.

Returns type: void

Function parameters:

TypeNameDescription
uint16_tx0X coordinate of the upper left corner.
uint16_ty0Y coordinate of the upper left corner.
uint16_tx1X coordinate of the bottom right corner.
uint16_tx2Y coordinate of the bottom right corner.
const char*textText we want to display.
uint16_ttextSizeFactor by which we want to enlarge the size of the font.
const GFXfont* fontAddress of the selected custom font.
uint16_tverticalSpacingNumber of pixels between each row of text.
boolshowBorderCreate a visible rectangle around the box.
uint16_tfontSizeSize of the used font in pt.

Full examples​

Check out the full examples:

Inkplate4TEMPERA_TextBox.ino

This example shows you how to use the TextBox function with and without special parameters