Гайд MSDF font rendering

ты продолжаешь во первых грубить, во вторых ты мог за место этого просто ответить на те два вопроса, но нет
Бедни, терпи тряпка, не скули, не ной, не оправдывайся
 
Это кто ещё чсв, ты че считаешь себя выше других пастеров югейма, ты такой же как и они, с хуя ли ты решил что ты особенный
прежде чем вставить свою мысль обдумай её, для начала ты не общался со мной, поэтому не имеешь понятия о том кто я, пастер или кодер или вообще кто-то другой, основываясь на этом ты не можешь делать выводы, поэтому твое сообщение бессмысленно
даже не понимаю с какой целью ты это написал, это даже не байт
 
прежде чем вставить свою мысль обдумай её, для начала ты не общался со мной, поэтому не имеешь понятия о том кто я, пастер или кодер или вообще кто-то другой, основываясь на этом ты не можешь делать выводы, поэтому твое сообщение бессмысленно
даже не понимаю с какой целью ты это написал, это даже не байт
прежде чем вставить свою мысль обдумай её, для начала ты не общался со мной, поэтому не имеешь понятия о том прав я или нет или вообще кто-то другой, основываясь на этом ты не можешь делать выводы, поэтому твое сообщение бессмысленно
даже не понимаю с какой целью ты это написал, это даже не байт
 
а смысл ResourceLocation'a, именно он нужен? без него не обойтись? просто я делаю чит туда, где нельзя засунуть в ассетсы что-то
Нет, использовать его не обязательно. Добираться до файлов и читать их можно любым удобным способом.
 
Нет, использовать его не обязательно. Добираться до файлов и читать их можно любым удобным способом.
щас пытаюсь разобраться в коде, но не понимаю как перенести этот код из 1.16.5 на 1.8.9
для чего нужна текстурка, откуда он ее берет, как он это делает?
для примера в обычных шрифтах берется BufferedImage и через него все это происходит
 
щас пытаюсь разобраться в коде, но не понимаю как перенести этот код из 1.16.5 на 1.8.9
для чего нужна текстурка, откуда он ее берет, как он это делает?
для примера в обычных шрифтах берется BufferedImage и через него все это происходит
Ты слишком неопытен. Оставь эту тему и вернись к ней позже.
 
Ты слишком неопытен. Оставь эту тему и вернись к ней позже.
мне просто лень каждую строчку кода разжевывать из поста и из майнкрафта самого, проще задать вопрос, но я так понял видимо придется через трудный путь идти
 
вопрос блять что с кернингами?? почему h чуть не входит в символ T, k тоже прям около c
1694812936514.png
 
еще столкнулся с такой проблемой, например не во всех шрифтах есть все символы, к примеру в шрифте нету B буквы английской, и если ты введёшь любую последующую букву после B (я использую лист GlyphData чтобы получать переменные по типу advance и т.д., у определенного чарактера), то вылезет ексепшен IndexOutOfBounds, т.е. проще говоря он не добавляет в лист те символы которых нету, есть идеи как пофиксить?
 
еще столкнулся с такой проблемой, например не во всех шрифтах есть все символы, к примеру в шрифте нету B буквы английской, и если ты введёшь любую последующую букву после B (я использую лист GlyphData чтобы получать переменные по типу advance и т.д., у определенного чарактера), то вылезет ексепшен IndexOutOfBounds, т.е. проще говоря он не добавляет в лист те символы которых нету, есть идеи как пофиксить?
нихуя непонятно
 
нихуя непонятно
ну вот смотри, я сделал фонт рендерер и там рендерю стринги через char, т.к. чар хранит в себе вроде как размер интежера, то начинается он с нуля и до макс валью, символы имеют кейкоды, но в чарсетах мы указываем только алфавит и цифры (пробовал указывать символы начинающиеся до 32 (пробела), не выходит т.к. это не буквы или цифры, это просто символы которых в шрифте не должно быть), соответственно на выходе в джсон у нас не будут какие-либо символы которые мы не указали в чарсетах, а значит джсон начинаться будет только с 32, т.к. это кейкод пробела, а у пробела меньше всего индекс кейкода среди других символов которые мы ввели в charsets.txt.
в коде мы парсим джсон и оттуда достаем данные кей код символа: адвансы и т.д., но при рендере стринга я использую чар, но чар начинается с 0, а джсон с 32, то размер Map<Integer, GlyphData> будет столько, сколько символов было в джсоне, и при попытке получить через глиф дату методом .get((int) char); не получается, т.к. чар имеет больший размер чем размер листа (мапы), но я же ввожу чарактер туда, т.е. для примера:

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

я ввожу char и чар это пробел, кейкод пробела - 32 и чар возвращает именно его, а получать способом get не получится, ибо нужно вводить ИНДЕКС
ты че ебанулся? я все ещё не понимаю о чем идёт речь.
 
ты че ебанулся? я все ещё не понимаю о чем идёт речь.
да сука ты че сам спастил откуда-то, уже 3 раз пытаюсь объяснить, попытайся понять я заебался переписывать с новой головой
вот есть нахуй у нас charsets, мы туда записываем только пробел алфавит и цифры, у символов есть кейкоды,пробел имеет самый наименьший кейкод среди всех них - его значение 32, но для рендера стринга мы используем for(int i = 0; i < text.length(); i++) text.charAt(i), чар - тот же интежер, только он хранит кейкод символа поэтому кастовать char можно в int
в твоем MsdfFont имеется переменная с типом данных List<GlyphData> glyphData, я пытался парсить данные advance и т.д., которые хранит этот класс в каждом юникоде через
Java:
Expand Collapse Copy
for(int i = 0; i < text.length(); i++) {
    char ch = text.charAt(i);
    GlyphData data = glyphData.get((int) ch);
}
но, в листе имеются не все символы, т.к. он парсит джсон, в котором записаны юникоды только которые смог вытащить из файла шрифта, которые мы указали в чарсетах, но чар же имеет все кейкоды, т.к. это почти тот же интежер
вот для примера что я имею в виду:
кейкод пробела (в чаре) - 32
индекс пробела в листе - 0
и получу я по итогу не пробел, а @, т.к. его кейкод - 64 и его индекс будет 32 в листе, т.к. до пробела в листе ничего нет
если один хуй ниче не поймешь просто скажи, я напишу те в тг и там по пальцам объясню
 
Последнее редактирование:
в твоем MsdfFont имеется переменная с типом данных List<GlyphData> glyphData
в моем коде такого нет
мы туда записываем только пробел алфавит и цифры,
мы можем записать туда любые нужные символы, которые поддерживает наш шрифт
у символов есть кейкоды,
кейкоды не относится к символам, KEYCODE это в идентификатор клавиши на клавиатуре. Да, у символов юникода есть численные идентификаторы, которые можно посмотреть в
Пожалуйста, авторизуйтесь для просмотра ссылки.
, но это называется не кейкод.
но, в листе имеются не все символы, т.к. он парсит джсон, в котором записаны юникоды только которые смог вытащить из файла шрифта, которые мы указали в чарсетах, но чар же имеет все кейкоды, т.к. это почти тот же интежер
вот для примера что я имею в виду:
кейкод пробела (в чаре) - 32
индекс пробела в листе - 0
и получу я по итогу не пробел, а @, т.к. его кейкод - 64 и его индекс будет 32 в листе, т.к. до пробела в листе ничего нет
если один хуй ниче не поймешь просто скажи, я напишу те в тг и там по пальцам объясню
Ну так блять в этом и проблема, зачем ты написал этот код вообще?
 
в моем коде такого нет

мы можем записать туда любые нужные символы, которые поддерживает наш шрифт

кейкоды не относится к символам, KEYCODE это в идентификатор клавиши на клавиатуре. Да, у символов юникода есть численные идентификаторы, которые можно посмотреть в
Пожалуйста, авторизуйтесь для просмотра ссылки.
, но это называется не кейкод.

Ну так блять в этом и проблема, зачем ты написал этот код вообще?
ну это понятно, я поэтому и упомянул чуть позже файл с чарсетами
блять видимо я сам добавить решил
я назвал это кейкодом, чтобы было сразу понятно что я имел в виду
так а через что реализовывать то тогда? сколько думаю ниче не лезет в голову из нормальных идей

блять ладно дикий рофл я сам уже догадался как, просто не посмотрев у тебя полностью код побежал реализовывать свою идею, создал переменную лист GlyphData и через него пытался сделать
 
Последнее редактирование:
ну это понятно, я поэтому и упомянул чуть позже файл с чарсетами
блять видимо я сам добавить решил
я назвал это кейкодом, чтобы было сразу понятно что я имел в виду
так а через что реализовывать то тогда? сколько думаю ниче не лезет в голову из нормальных идей

блять ладно дикий рофл я сам уже догадался как, просто не посмотрев у тебя полностью код побежал реализовывать свою идею, создал переменную лист GlyphData и через него пытался сделать
а что ты делаешь блять? я же дал готовый код
 
на глифах, при большом скейле, на некоторых шрифтах, появляются битые точки (снизу текста или сверху)
 
Назад
Сверху Снизу