Wie sagst Du denn der Treiber-Lib dass Du nur 102 Spalten hast ? Laut Deinem Quellcode geht die von 128 Spalten aus, es gibt ja auch keine Einstellung für 102.
Daraus errechnet der Treiber aber die Adressierung.
Funktioniert denn beim 8x8 Font das Beschreiben des kompletter Displays ohne Probleme ?
Das Bild sieht so aus, als ob der Treiber den 16x16 Font nicht als solchen betrachtet und damit an falscher Position liest.
Gib doch mal "ABCDE" an Position 1,1 aus, vielleicht findet man dann mehr raus.