You need to split the character string a bit more carefully. The easiest would be to use a list of Glyph names instead of a string.
font = Glyphs.font
names_1st = ["blackDiamond", "blackSquare", "triangularbullet", "bullet"]
names_2nd = ["A", "Aacute", "Abreve", "Acircumflex", "Adieresis", "Agrave", "Amacron", "Aogonek", "Aring", "Atilde", "AE", "C", "Cacute", "Ccaron", "Ccedilla", "Ccircumflex", "D", "Dcaron", "Dcroat", "Eth", "J", "J.ss02 ", "J", "acutecomb", "Jacute.ss02 Ĵ", "Jcircumflex.ss02 ", "K", "Kcommaaccent", "L", "Lacute", "Lcaron", "Lcommaaccent", "Lslash", "O", "Oacute", "Obreve", "Ocircumflex", "Odieresis", "Odotbelow", "Ograve", "Ohungarumlaut", "Omacron", "Oogonek", "Oslash", "Oslashacute", "Otilde", "T", "Tcaron", "Tcommaaccent", "W", "Wacute", "Wcircumflex", "Wgrave", "Y", "Yacute", "Ycircumflex", "Ydieresis", "Ygrave", "Z", "Zacute", "Zcaron", "Zdotaccent", "k", "kcommaaccent", "racute", "rcaron", "rcommaaccent", "t", "tbar", "tcaron", "tcedilla", "tcommaaccent", "v", "w", "wacute", "wcircumflex", "wdieresis", "wgrave", "x", "y", "y.ss04 ", "yacute", "yacute.ss04 ", "ycircumflex", "ycircumflex.ss04 ", "ydieresis", "ydieresis.ss04 ", "ygrave", "ygrave.ss04 ", "ymacron", "ymacron.ss04 ", "ytilde", "ytilde.ss04 ", "z", "zacute", "zcaron", "zdotaccent"]
pairs = []
for name1 in names_1st:
glyph1 = font.glyphs[name1]
if not glyph1:
continue
char1 = font.characterForGlyph(glyph1)
for name2 in names_2nd:
glyph2 = font.glyphs[name2]
if not glyph2:
continue
char2 = font.characterForGlyph(glyph2)
pairs.append(chr(char1) + chr(char2) + chr(char1))
string = '\n'.join(pairs)
print(string)
font.currentTab.text = string