Th example looks like the character '0', 8 bits wide and 16 bits high, though it could be the 16x8 due to '0's symmetry. Find the '2' array, for instance and plot the 1-bits on a piece of graph paper (even a hand-drawn grid will do). Once you should see the character shape you'll know how the bits/dots are arranged in the array.
If your LED array has a square pitch (same spacing vertically and horizontally), 16-bit high characters may appear rather tall and skinny. If so, you could re-plot the characters to suit yourself. If you do decide to hand code them, look at your display hardware. It probably (but not necessarily) accepts 8 horizontally-adjacent bits at a time. But regardless, you can simplify your display code if one array-byte contains 8 bits that will be output at once.
There's a lot missing from your question but I'll pick some assumptions to base an answer on.
Y = array_index;
X = (6-bit_position) + (is_right_hand_character ? 8 : 0);
based on assumptions that:
- you want the display coordinates of a given bit in the array;
- the origin (0,0) of your display is the upper left hand corner LED;
- the first character starts in column 0; the second in column 8; The
leftmost bit to display is in bit-6 of each byte and bit 7 (MSb) is
- you'll use zero-based coordinates.
The 'Y' coordinate is pretty straight-forward - byte-0 is the first byte.
The 'X' coordinate is found by subtracting the position of the bit of interest from 6, and maybe adding 8, since bit-6 goes into column-0 or column-8 for the left or right character, respectively.