63 lines
4.4 KiB
Plaintext
63 lines
4.4 KiB
Plaintext
[video output=day172 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Extracting Kerning Tables from Windows" vod_platform=youtube id=xUQRWBpYcsk annotator=Miblo annotator=debiatan]
|
|
[0:48][Recap and plan for today]
|
|
[2:43][There's a bug that prevents the fonts from loading]
|
|
[3:37][Writing fonts in a separate asset file]
|
|
[6:10][Stepping through the asset packer]
|
|
[12:53][We were not setting the horizontal advance correctly. For the moment, we'll just hardcode it to be the width of the current character]
|
|
[16:35][We were using the incorrect AssetType for our font glyphs]
|
|
[18:50][Testing and still not loading]
|
|
[19:01][Stepping through the asset loading code]
|
|
[21:16][Take it back][quote 182]
|
|
[21:45][On getting older][quote 183]
|
|
[22:16][Debugging LoadFont]
|
|
[22:43][We were not calling LoadFont yet!]
|
|
[23:39][Implementing PushFont]
|
|
[27:00][The fonts are back!]
|
|
[28:17][Let's look for the correct kerning pair values]
|
|
[29:46][Reviewing the GetKerningPairs docs]
|
|
[31:10][Figuring out the number of kerning pairs]
|
|
[32:09][Getting the kerning pairs]
|
|
[33:20][Structure of tagKERNINGPAIRs]
|
|
[36:03][What is the default advance?]
|
|
[41:18][Question the ABCs][quote 184]
|
|
[41:33][Checking the system header files to see which functions and struct offer wide-character alternatives]
|
|
[43:23][Debugging the LoadFont crash]
|
|
[45:30][GetCharABCWidthsW expects a range, not a count]
|
|
[46:00][Our fonts look nicer now]
|
|
[47:06][Using the ABC's A information to modify the alignment of our glyphs]
|
|
[48:13][(Blackboard) Diagram of the alignment point calculation]
|
|
[49:32][Our fonts look even better]
|
|
[51:13][The fonts still look bad, but it's Windows' fault]
|
|
[52:28][See how Segoe Condensed looks][quote 185]
|
|
[53:06][Windows fonts make a fontographer cry][quote 186]
|
|
[54:27][We still have to see how our glyph bounding box detection interacts with the system's kerning information]
|
|
[57:01][The alignment based on the bounding boxes was already correct and we didn't need the ABCs]
|
|
[1:00:30][Modifying the TextOutW call in the asset packer to allow Windows to paint glyphs to the left of the specified drawing point in the font Device Context]
|
|
[1:03:14][Q&A][:speech]
|
|
[1:03:37][@Robrobby][Could you use another text sample like "AVA WA Ta"]
|
|
[1:04:22][Learn something new about Arial and Helvetica]
|
|
[1:06:22][@bkboggy][How do you know so much about fonts?]
|
|
[1:07:26][@ChronalDragon][Do you typically license fonts for use in games? Or does the loophole about rendering them to bitmaps mean you can just use whatever you want?]
|
|
[1:07:48][Recommend Google Fonts[ref
|
|
site="Google"
|
|
page="Google Fonts"
|
|
url="https://www.google.com/fonts"][ref
|
|
site=GitHub
|
|
page="Google Fonts Files"
|
|
url=https://github.com/google/fonts]]
|
|
[1:10:26][@abnercoimbre][Is fonts a topic you enjoy? An author once wrote: "If music is the subjective application of physics, then font rasterisation is almost certainly the subjective application of computer science." Do you agree?]
|
|
[1:11:10][@QuikliGames][Probably doesn't make sense to look at kerning for lowercase to Uppercase. I doubt many fonts bother with those cases]
|
|
[1:12:05][@ijustwantfood][Would Times New Roman be any better?]
|
|
[1:12:10][@JamesWidman][What are some examples of font / typesetting systems that can do kerning well? Is Knuth's TeX the only game in town?]
|
|
[1:14:14][@bkboggy][Hmm... good point. More game designers should have a guy / gal who knows about fonts, because I see lots of games where it's hard to read quest text / chat text]
|
|
[1:15:18][@abnercoimbre][Regarding the abstract text, I agree! Which is why I asked. Given your experience, maybe you could've read more into that than I could]
|
|
[1:15:51][@Robrobby][The down-left corner of the "A" is cut, but you search bounds by the pixels, so why did this happen?]
|
|
[1:16:33][@quartertron][Have you played Facade and / or met the designers?]
|
|
[1:18:09][Clear everything to black instead of white]
|
|
[1:20:54][@Robrobby][You said Molly Rocket's upcoming game has crazy font functions - can you say one example what about fonts can be crazy? Just wondering]
|
|
[1:21:12][@quartertron][What's behind the curtain?]
|
|
[1:21:24][@garlandobloom][Facade was kinda interesting. One time I typoed the first thing I said to the guy when he opened the door and he just scowled, shut the door in my face and then the game faded to black and ended]
|
|
[1:21:46][Check our edges]
|
|
[1:22:23][Close things down here][:speech]
|
|
[/video]
|