ну вот смотри, я сделал фонт рендерер и там рендерю стринги через char, т.к. чар хранит в себе вроде как размер интежера, то начинается он с нуля и до макс валью, символы имеют кейкоды, но в чарсетах мы указываем только алфавит и цифры (пробовал указывать символы начинающиеся до 32 (пробела), не выходит т.к. это не буквы или цифры, это просто символы которых в шрифте не должно быть), соответственно на выходе в джсон у нас не будут какие-либо символы которые мы не указали в чарсетах, а значит джсон начинаться будет только с 32, т.к. это кейкод пробела, а у пробела меньше всего индекс кейкода среди других символов которые мы ввели в charsets.txt.
в коде мы парсим джсон и оттуда достаем данные кей код символа: адвансы и т.д., но при рендере стринга я использую чар, но чар начинается с 0, а джсон с 32, то размер Map<Integer, GlyphData> будет столько, сколько символов было в джсоне, и при попытке получить через глиф дату методом .get((int) char); не получается, т.к. чар имеет больший размер чем размер листа (мапы), но я же ввожу чарактер туда, т.е. для примера:
я ввожу char и чар это пробел, кейкод пробела - 32 и чар возвращает именно его, а получать способом get не получится, ибо нужно вводить ИНДЕКС