Use large variables without using much memory I've wired up a dot matrix, and I display characters on the screen by using something like the example code below.

The Char_B variable is a global variable in a library used by the Arduino, and displayPixels() is called from inside the library.

bool Char_B[8][8] = {
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,1,1,1,0,0,0}
};

displayPixels(1000, Char_B);


However, each time I declare a new character like the array above, I use a relatively massive amount of memory. Is there any way to reduce memory usage? Keep in mind I am willing to change the structure of the array if necessary, since I'll need well over 100 characters loaded onto the Arduino to write text.
The data structure will take 64 bytes as sizeof bool is 1 byte not a bit. The first option is to pack each line (or column) in a byte (or bytes). The prefix 0b is for binary constant value (in gcc). 

uint8_t Char_B[8] = {
0b01111000,
...
0b01111000
};


The second option is to move the data structure to program memory.

const uint8_t Char_B[8] PROGMEM = { ... };


This will require reading each line with a special function.

for (int line = 0; line &lt; sizeof(Char_B); line++) {
  uint8_t pixels = (uint8_t) pgm_read_byte(Char_B + line);
  ...
}