Я уже писал, что заколбасил продвинутый формат битмапных шрифтов для эмбедов. С поддержкой кернинга, неплохим сжатием, и утилитами для сборки этих самых шрифтов из TTF. По результатам обкатки обнаружилось, что яваскриптовые рендереры лажают с хинтингом (подкручиванием букв под пиксельную сетку, для повышения точности). Когда стали копать глубже, стало понятно что за обозримое время библиотеки починить не реально.
Поэтому пошли другим путем, скомпилировали FreeType в WebAssembly. Стало хорошо.
Все билды завернули в докер, усилий по установке - ноль.
Для монохромных шрифтов заюзали специальный монохромный хинтер. Получилось подозрительно хорошо, даже не ожидал.
Для “стандартных” шрифтов по умолчанию включили “легкий” хинтер. Он улучшает только горизонтальные линии, но при этом не ломает кернинг.
Это все по-прежнему умеет работать в браузере (лично мне не надо, но разработчики LVGL просили).
Сейчас готовится новый релиз (6.1) lvgl, где наконец-то добавят поддержку моей компрессионной магии. К сожалению, у авторов не было времени нормально оптимизировать декомпрессор, поэтому скорость рендеринга просела в два раза. Так что если вы специалист по битам - есть шанс улучшить и прославиться. RLE-подобные декомпрессоры заметных просадок давать не должны. Это я как бывалый оптимизатор говорю.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"5d88614f9970730077118ed5","hid":23967,"title":"Переделали генерилку эмбедных фонтов на FreeType","html":"<p><a href=\"https://github.com/littlevgl/lv_font_conv\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://github.com/littlevgl/lv_font_conv\" target=\"_blank\" rel=\"nofollow noopener\">github.com/littlevgl/lv_font_conv</a></p>\n<p>Я уже писал, что заколбасил продвинутый формат битмапных шрифтов для эмбедов. С поддержкой кернинга, неплохим сжатием, и утилитами для сборки этих самых шрифтов из TTF. По результатам обкатки обнаружилось, что яваскриптовые рендереры лажают с хинтингом (подкручиванием букв под пиксельную сетку, для повышения точности). Когда стали копать глубже, стало понятно что за обозримое время библиотеки починить не реально.</p>\n<p>Поэтому пошли другим путем, скомпилировали FreeType в WebAssembly. Стало хорошо.</p>\n<ul>\n<li>Все билды завернули в докер, усилий по установке - ноль.</li>\n<li>Для монохромных шрифтов заюзали специальный монохромный хинтер. Получилось подозрительно хорошо, даже не ожидал.</li>\n<li>Для “стандартных” шрифтов по умолчанию включили “легкий” хинтер. Он улучшает только горизонтальные линии, но при этом не ломает кернинг.</li>\n<li>Это все по-прежнему умеет работать в браузере (лично мне не надо, но разработчики LVGL просили).</li>\n</ul>\n<!--cut-->\n<p>Сейчас готовится новый релиз (6.1) <a href=\"https://github.com/littlevgl/lvgl\" class=\"link link-ext\" data-nd-link-orig=\"https://github.com/littlevgl/lvgl\" target=\"_blank\" rel=\"nofollow noopener\">lvgl</a>, где наконец-то добавят поддержку моей компрессионной магии. К сожалению, у авторов не было времени нормально оптимизировать декомпрессор, поэтому скорость рендеринга просела в два раза. Так что если вы специалист по битам - есть шанс улучшить и прославиться. RLE-подобные декомпрессоры заметных просадок давать не должны. Это я как бывалый оптимизатор говорю.</p>\n","user":"39c21abc3df9550077797d18","ts":"2019-09-23T06:08:15.000Z","st":1,"cache":{"comment_count":0},"views":475,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}