That is because font is defined and initialized in GLCD.h. This way font will be inside the scope of the C file where #include "GLCD.h" is processed first.
Note that the header guards are not working in the scope of the next C file. They are there to prevent header include loops.
Move the definition of font to the C file, and use "extern const unsigned char font[]" inside the header. That is, if you want it to be public.
It probably doesn't need to be public, since it's for the GLCD lib itself, put it at the top of GLCD.c and don't put it in the header.
You can force it to throw an error when it is externally linked by putting static in front. This also applies to functions.
Same goes for map.