Weird behavior with PROGMEM and escaped chars

sterretje:
You can put a space between '\x86' and 'aa'; don't know if it suites you. What is 'aa' supposed to be; part of the 'replacement string' or text? I suspect the latter.

Yeah, "aa" is an example of text. It can be any text like "does not", "is not", "airplane", "star trek", and so on.
If I put an extra space the I'm going to waste 1 byte per every special char, and many rows have two or even three special chars (I have 60 rows, so I'm going to loose around 100 bytes).

sterretje:
By the way, if you're worried about flash memory usage, why do you seem to piss away flash memory by using fixed width strings and only use part of this fixed width (in your example)? It's probably a fine balance, but usually one stores single (not: an array of) strings in PROGMEM and next stores an array of pointers to those strings; this array can be in RAM or PROGMEM. If you have lots of short strings and only a few long ones, it pays of.

Yeah, I thought about that. That is the next evolution step of the program. It will save another 190 bytes in my case.
Also, I will eliminate the NULL char terminating the string 'cause I'm going to read chars byte by byte.

Just one drawback: storing an array of pointers forces you to store the length of the text somewhere/somehow. So you'r going to use 2 bytes per text-descriptions. In my case (60 rows) you need 120 bytes extra.
A better approach is to use a special char as separator and loop over the mono-dimensional array until you reach the right text message.
(But I still have to check if this will not slow down too muchthe printing ops on a TFT display...)

Anyway thanks for the help guys! You're awesome!