Гайд MSDF font rendering

Пользователь
Статус
Оффлайн
Регистрация
18 Фев 2022
Сообщения
594
Реакции[?]
100
Поинты[?]
40K
ты продолжаешь во первых грубить, во вторых ты мог за место этого просто ответить на те два вопроса, но нет
Бедни, терпи тряпка, не скули, не ной, не оправдывайся
 
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
521
Реакции[?]
53
Поинты[?]
20K
Это кто ещё чсв, ты че считаешь себя выше других пастеров югейма, ты такой же как и они, с хуя ли ты решил что ты особенный
прежде чем вставить свою мысль обдумай её, для начала ты не общался со мной, поэтому не имеешь понятия о том кто я, пастер или кодер или вообще кто-то другой, основываясь на этом ты не можешь делать выводы, поэтому твое сообщение бессмысленно
даже не понимаю с какой целью ты это написал, это даже не байт
 
Пользователь
Статус
Оффлайн
Регистрация
18 Фев 2022
Сообщения
594
Реакции[?]
100
Поинты[?]
40K
прежде чем вставить свою мысль обдумай её, для начала ты не общался со мной, поэтому не имеешь понятия о том кто я, пастер или кодер или вообще кто-то другой, основываясь на этом ты не можешь делать выводы, поэтому твое сообщение бессмысленно
даже не понимаю с какой целью ты это написал, это даже не байт
прежде чем вставить свою мысль обдумай её, для начала ты не общался со мной, поэтому не имеешь понятия о том прав я или нет или вообще кто-то другой, основываясь на этом ты не можешь делать выводы, поэтому твое сообщение бессмысленно
даже не понимаю с какой целью ты это написал, это даже не байт
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
а смысл ResourceLocation'a, именно он нужен? без него не обойтись? просто я делаю чит туда, где нельзя засунуть в ассетсы что-то
Нет, использовать его не обязательно. Добираться до файлов и читать их можно любым удобным способом.
 
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
521
Реакции[?]
53
Поинты[?]
20K
Нет, использовать его не обязательно. Добираться до файлов и читать их можно любым удобным способом.
щас пытаюсь разобраться в коде, но не понимаю как перенести этот код из 1.16.5 на 1.8.9
для чего нужна текстурка, откуда он ее берет, как он это делает?
для примера в обычных шрифтах берется BufferedImage и через него все это происходит
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
щас пытаюсь разобраться в коде, но не понимаю как перенести этот код из 1.16.5 на 1.8.9
для чего нужна текстурка, откуда он ее берет, как он это делает?
для примера в обычных шрифтах берется BufferedImage и через него все это происходит
Ты слишком неопытен. Оставь эту тему и вернись к ней позже.
 
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
521
Реакции[?]
53
Поинты[?]
20K
Ты слишком неопытен. Оставь эту тему и вернись к ней позже.
мне просто лень каждую строчку кода разжевывать из поста и из майнкрафта самого, проще задать вопрос, но я так понял видимо придется через трудный путь идти
 
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
521
Реакции[?]
53
Поинты[?]
20K
вопрос блять что с кернингами?? почему h чуть не входит в символ T, k тоже прям около c
1694812936514.png
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
521
Реакции[?]
53
Поинты[?]
20K
еще столкнулся с такой проблемой, например не во всех шрифтах есть все символы, к примеру в шрифте нету B буквы английской, и если ты введёшь любую последующую букву после B (я использую лист GlyphData чтобы получать переменные по типу advance и т.д., у определенного чарактера), то вылезет ексепшен IndexOutOfBounds, т.е. проще говоря он не добавляет в лист те символы которых нету, есть идеи как пофиксить?
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
еще столкнулся с такой проблемой, например не во всех шрифтах есть все символы, к примеру в шрифте нету B буквы английской, и если ты введёшь любую последующую букву после B (я использую лист GlyphData чтобы получать переменные по типу advance и т.д., у определенного чарактера), то вылезет ексепшен IndexOutOfBounds, т.е. проще говоря он не добавляет в лист те символы которых нету, есть идеи как пофиксить?
нихуя непонятно
 
Пользователь
Статус
Оффлайн
Регистрация
23 Авг 2021
Сообщения
521
Реакции[?]
53
Поинты[?]
20K
нихуя непонятно
ну вот смотри, я сделал фонт рендерер и там рендерю стринги через char, т.к. чар хранит в себе вроде как размер интежера, то начинается он с нуля и до макс валью, символы имеют кейкоды, но в чарсетах мы указываем только алфавит и цифры (пробовал указывать символы начинающиеся до 32 (пробела), не выходит т.к. это не буквы или цифры, это просто символы которых в шрифте не должно быть), соответственно на выходе в джсон у нас не будут какие-либо символы которые мы не указали в чарсетах, а значит джсон начинаться будет только с 32, т.к. это кейкод пробела, а у пробела меньше всего индекс кейкода среди других символов которые мы ввели в charsets.txt.
в коде мы парсим джсон и оттуда достаем данные кей код символа: адвансы и т.д., но при рендере стринга я использую чар, но чар начинается с 0, а джсон с 32, то размер Map<Integer, GlyphData> будет столько, сколько символов было в джсоне, и при попытке получить через глиф дату методом .get((int) char); не получается, т.к. чар имеет больший размер чем размер листа (мапы), но я же ввожу чарактер туда, т.е. для примера:

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

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

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

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

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

блять ладно дикий рофл я сам уже догадался как, просто не посмотрев у тебя полностью код побежал реализовывать свою идею, создал переменную лист GlyphData и через него пытался сделать
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2022
Сообщения
70
Реакции[?]
10
Поинты[?]
10K
ну это понятно, я поэтому и упомянул чуть позже файл с чарсетами
блять видимо я сам добавить решил
я назвал это кейкодом, чтобы было сразу понятно что я имел в виду
так а через что реализовывать то тогда? сколько думаю ниче не лезет в голову из нормальных идей

блять ладно дикий рофл я сам уже догадался как, просто не посмотрев у тебя полностью код побежал реализовывать свою идею, создал переменную лист GlyphData и через него пытался сделать
а что ты делаешь блять? я же дал готовый код
 
Начинающий
Статус
Оффлайн
Регистрация
16 Сен 2022
Сообщения
19
Реакции[?]
0
Поинты[?]
0
на глифах, при большом скейле, на некоторых шрифтах, появляются битые точки (снизу текста или сверху)
 
Сверху Снизу