Befunge-98, 109 bytes (FUNGE / ANY)
:5%!2>j#4_;\$&\#;\:0`!#@_:::88*/88**-\88*/2%*442**+,:88*/:2/-88**-\1+:5%!2>j#4_;442**3k:4k,#;:55*%!2>j#4_;a,; Input (115 characters):
2022 1141 1134 935 2021 102 1141 1262 103 101 998 1141 1390 1639 997 102 1141 1646 1127 101 102 949 1134 935 2021 0 Input is the integer version of a binary number with the format aaaaabbbbbb where aaaaa is a reversed map of the character to print (for example, the second row in the N is NN N, so the mask is 10011), and bbbbbb is the ascii character to print, minus 32.
I also created a befunge-98 program to create my inputs:
4k~44p34p24p14p04p v +1.+-**244g4%5\**88_@#`0:&::< Output (255 characters):
FFFFF U U N N GGG EEEEE F U U NN N G E FFFF U U N N N G GG EEEE F U U N NN G G E F UUU N N GGG EEEEE (255 - (115 + 109)) / 255 = 12% compression
Explanation:
:5%!2>j#4_;\$&\#;\:0`!#@_ Get input if it is available, else end program :::88*/88**-\88*/2%*442**+, Output the current input character (or a space, if the mask dictates so) :88*/:2/-88**- Throw away current mask bit \1+ Swap loop iterator to top of stack, increment it :5%!2>j#4_;442**3k:4k,#; If iterator % 5 == 0, print five spaces :55*%!2>j#4_;a,; If iterator % 25 == 0, print newline character This is probably pretty golfable; I've spent barely any time thinking about potential reductions.
Theoretically this can print any sequence of 5x5 ascii art.