[video member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Finishing Sparse Unicode Support" vod_platform=youtube id=kXQMyg4Prfo annotator=Miblo annotator=debiatan] [0:23][Recap and plan for today] [1:10][Reviewing the the current status of the test asset builder] [4:55][On type-safe memory allocations] [7:13][Reserving space for the null glyph] [10:39][Happy Birthday, Windows][quote 197] [13:18][Running the asset builder] [13:50][Reviewing the asset loading code] [14:30][We don't address Unicode codepoints directly anymore] [15:16][Unpacking the dense glyph table] [16:18][Using an unnecessarily big Unicode mapping table for the moment] [19:53][Storing the highest used codepoint in the asset file] [22:25][Hunt for ONE_PAST_MAX_FONT_CODEPOINT][quote 198] [23:03][Genius day at Handmade Hero][quote 199] [23:26][Casey's mommy says he's very good at programming][quote 200] [24:39][We normally wouldn't be doing finicky suballocations by hand] [26:20][Adding extra finalization code after font loading] [28:10][Building the Unicode mapping table] [32:50][Implementing ZeroArray helper function] [34:10][Guarding against overflows by double casting] [35:27][Substituting codepoints with glyphs] [37:25][Implementing the glyph lookup routine] [38:26][Debugging today's and yesterday's changes] [38:54][No fonts visible. Let's inspect the font loading code] [39:33][OnePastHighestCodepoint was set but not saved to the asset file] [42:38][Another small error in font loading code] [43:20][Our font is back!] [43:28][Displaying the handmade owl unicode codepoints] [44:08][We egged Casey on][quote 201] [51:10][The kanji codepoints are there but not kerned properly] [52:20][Q&A][:speech] [53:39][@ChronalDragon][So, are we done with fonts now? Moving on to other parts of the debug?] [54:32][@ijustwantfood][So what will we be moving onto next week?] [55:13][@InstantKafka][Any chance you could use a different font for the editor? Hard to tell difference between 0s and 8s] [55:34][@Manicthenobody][It's possible that that's how it is supposed to be kerned] [56:57][@cubercaleb][Maybe it's just twitch, but the letters in Red look a bit off on the edges] [59:38][@elxenoaizd][Might be a basic question but why do we need our own font rendering? Doesn't Windows have its own font rendering functions we could call?] [1:01:14][@SeaOfSorrows][I saw you were wearing something around your forearms. Is that to treat Tendinitis? I heard about this condition from typing too much] [1:01:27][@abnercoimbre][People don't understand why a font rendering system can be complex because they think in terms of pixels. Any comments on this (only if there are no other questions)?] [1:01:59][@butwhynot1][Can you check if your numbers are monospaced? For example, 111111 should be the same width as 999999] [1:03:17][@ChronalDragon][What happened to ZoomIt?] [1:04:21][@krabba][Not a question but I think ZoomIt is just on the desktop] [1:05:48][@andsz_][The ones and nines don't line up the same way in game and in notepad] [1:06:57][@elxenoaizd][How do you have the background black in Mischief? I found it a bit tricky to change the background color for some reason, surprisingly!] [1:07:17][@nicstop][How do you prefer to traverse trees, loops or recursion? Why?] [1:07:46][@elxenoaizd][If you want to start your own game project, do you start from scratch, use Frameworks / API / SDKs (SFML, SDL, etc.) or use an engine (custom made by you, or one that already exists)?] [1:08:41][@butwhynot1][They don't line up relative to each other though] [1:09:25][@InstantKafka][Any plans to add scripting or modding hooks?] [1:09:53][@cubercaleb][Off-topic: How do you grep with your Emacs config?] [1:10:41][@abnercoimbre][Sure. Some (reasonably) think of the screen as a grid of pixels and that font rendering is directly plastering that font on the screen. So nvm, they just haven't understood beyond bitmap fonts] [1:11:46][@constantinopol][What font do you use in Emacs?] [1:12:19][@nickrolfe][Why did you use GlyphIndexFromCodePoint instead of an array of (mostly null) pointers to achieve sparseness?] [1:13:18][@Mr4thDimention][How valuable do you think non-mono-spaced fonts would be in, say, an editor?] [1:14:10][@DryZilla][Could you recommend a website or YouTuber that could teach me coding? I really want to learn] [1:16:45][@elxenoaizd][I like to limit the scope of my functions to be defined only where they're used. How do you workaround the fact that C doesn't have locally defined functions? Do you use functors?] [1:17:48][@constantinopol][Vertical cursor navigation is easier to follow in a mono font] [1:18:05][@cubercaleb][Tried to use grep in Emacs: the program crashed] [1:18:26][@elxenoaizd][How do you handle introspection / metadata to build your editor inspection tools?] [1:19:05][Wind it down][:speech] [/video]