1) well I concluded that one cannot actually build an array that will fit the page no matter the character pitch (CPI) that the end user selects. This refers to pre-printed fanfold paper. Once the user decides to change CPI then they ought to reconfigure the positions of the text inside each line, which means they need to reconfigure the columns distance. I give the user such a capability by providing line number and position within that line for each text that I am going to print, on a settings section.
2) I end up doing the second. I create a two-dimensional array and send each line followed by a CR and an LF escp command.