Handmade Hero»Episode Guide
Making a Stand-Alone Font Extractor
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:01Note our capability to rebuild all of our assets except fonts
🗩
0:01Note our capability to rebuild all of our assets except fonts
🗩
0:01Note our capability to rebuild all of our assets except fonts
🗩
2:04Cross-platform font processing
🗩
2:04Cross-platform font processing
🗩
2:04Cross-platform font processing
🗩
5:08Reacquaint ourselves with our current .hha representation of fonts
📖
5:08Reacquaint ourselves with our current .hha representation of fonts
📖
5:08Reacquaint ourselves with our current .hha representation of fonts
📖
8:05Exporting fonts to .png format for packing into .hha
📖
8:05Exporting fonts to .png format for packing into .hha
📖
8:05Exporting fonts to .png format for packing into .hha
📖
10:08Spec out a directory structure for developer resources such as fonts
🗹
10:08Spec out a directory structure for developer resources such as fonts
🗹
10:08Spec out a directory structure for developer resources such as fonts
🗹
11:38Set up to write fonts out to .png and then into .hht
📖
11:38Set up to write fonts out to .png and then into .hht
📖
11:38Set up to write fonts out to .png and then into .hht
📖
15:23General thoughts on complexity in asset processing systems deriving from complex inter-relationships and structure, as we will find in fonts
🗩
15:23General thoughts on complexity in asset processing systems deriving from complex inter-relationships and structure, as we will find in fonts
🗩
15:23General thoughts on complexity in asset processing systems deriving from complex inter-relationships and structure, as we will find in fonts
🗩
18:18Create hha_font.cpp based on test_asset_builder.cpp
18:18Create hha_font.cpp based on test_asset_builder.cpp
18:18Create hha_font.cpp based on test_asset_builder.cpp
25:11Handle command-line arguments and respecify WriteFonts() as ExtractFont()1,2
25:11Handle command-line arguments and respecify WriteFonts() as ExtractFont()1,2
25:11Handle command-line arguments and respecify WriteFonts() as ExtractFont()1,2
39:42Introduce the notion of a CHAR_SET_CREATOR to facilitate the creation of various character-set extraction procedures, for localisation
39:42Introduce the notion of a CHAR_SET_CREATOR to facilitate the creation of various character-set extraction procedures, for localisation
39:42Introduce the notion of a CHAR_SET_CREATOR to facilitate the creation of various character-set extraction procedures, for localisation
51:23Enable ExtractFont() to call LoadGlyphBitmap() on all the glyphs, making the latter operate on passed in dimensions retrieved from a GetTextMetrics() system call,3,4 and return a glyph_result
51:23Enable ExtractFont() to call LoadGlyphBitmap() on all the glyphs, making the latter operate on passed in dimensions retrieved from a GetTextMetrics() system call,3,4 and return a glyph_result
51:23Enable ExtractFont() to call LoadGlyphBitmap() on all the glyphs, making the latter operate on passed in dimensions retrieved from a GetTextMetrics() system call,3,4 and return a glyph_result
1:20:41Clean up compile errors
1:20:41Clean up compile errors
1:20:41Clean up compile errors
1:29:17Introduce Include() and IncludeRange() for CHAR_SET_CREATOR functions to call, and a codepoint_mask for ExtractFont() to take
1:29:17Introduce Include() and IncludeRange() for CHAR_SET_CREATOR functions to call, and a codepoint_mask for ExtractFont() to take
1:29:17Introduce Include() and IncludeRange() for CHAR_SET_CREATOR functions to call, and a codepoint_mask for ExtractFont() to take
1:41:03Run hhfont for the first time
🏃
1:41:03Run hhfont for the first time
🏃
1:41:03Run hhfont for the first time
🏃
1:42:55Print out some font extraction information
1:42:55Print out some font extraction information
1:42:55Print out some font extraction information
1:44:22Run hhafont on some real input, and crash beautifully
🏃
1:44:22Run hhafont on some real input, and crash beautifully
🏃
1:44:22Run hhafont on some real input, and crash beautifully
🏃
1:45:06Add hhfont to remedybg and step through it to a crash on fprintf()
🏃
1:45:06Add hhfont to remedybg and step through it to a crash on fprintf()
🏃
1:45:06Add hhfont to remedybg and step through it to a crash on fprintf()
🏃
1:48:50Clear the Mask.CodepointFromGlyph, and prevent Include() from doubly-incrementing through its loop
1:48:50Clear the Mask.CodepointFromGlyph, and prevent Include() from doubly-incrementing through its loop
1:48:50Clear the Mask.CodepointFromGlyph, and prevent Include() from doubly-incrementing through its loop
1:50:02Run hhafont successfully
🏃
1:50:02Run hhafont successfully
🏃
1:50:02Run hhafont successfully
🏃
1:50:24Fix Include() to only add glyphs whose code point is not 0
1:50:24Fix Include() to only add glyphs whose code point is not 0
1:50:24Fix Include() to only add glyphs whose code point is not 0
1:51:10Run hhafont to see a more likely glyph count
🏃
1:51:10Run hhafont to see a more likely glyph count
🏃
1:51:10Run hhafont to see a more likely glyph count
🏃
1:51:25Q&A
🗩
1:51:25Q&A
🗩
1:51:25Q&A
🗩
1:51:51centhusiast Q: Are you going to implement the PNG writer?
🗪
1:51:51centhusiast Q: Are you going to implement the PNG writer?
🗪
1:51:51centhusiast Q: Are you going to implement the PNG writer?
🗪
1:53:12centhusiast Q: Does the Windows API use Hungarian notation?5
🗪
1:53:12centhusiast Q: Does the Windows API use Hungarian notation?5
🗪
1:53:12centhusiast Q: Does the Windows API use Hungarian notation?5
🗪
1:54:04recyrillic Q: We had a yellow 4coder flash today. Did we know about that color of flash already?
🗪
1:54:04recyrillic Q: We had a yellow 4coder flash today. Did we know about that color of flash already?
🗪
1:54:04recyrillic Q: We had a yellow 4coder flash today. Did we know about that color of flash already?
🗪
1:54:53lucid_frost Q: Do you think you still improve a lot as a programmer (as opposed to when you first started)? I'd be curious to know if there are specific things you work on to keep improving
🗪
1:54:53lucid_frost Q: Do you think you still improve a lot as a programmer (as opposed to when you first started)? I'd be curious to know if there are specific things you work on to keep improving
🗪
1:54:53lucid_frost Q: Do you think you still improve a lot as a programmer (as opposed to when you first started)? I'd be curious to know if there are specific things you work on to keep improving
🗪
1:59:30skytrias Q: Is it hard to write a level editor? What are the steps? I just want to set positions via mouse, save them so that they're used once exited
🗪
1:59:30skytrias Q: Is it hard to write a level editor? What are the steps? I just want to set positions via mouse, save them so that they're used once exited
🗪
1:59:30skytrias Q: Is it hard to write a level editor? What are the steps? I just want to set positions via mouse, save them so that they're used once exited
🗪
2:00:10Demo the game's asset editing UI
🏃
2:00:10Demo the game's asset editing UI
🏃
2:00:10Demo the game's asset editing UI
🏃
2:02:34gayonara Q: What do you mean by better language?
🗪
2:02:34gayonara Q: What do you mean by better language?
🗪
2:02:34gayonara Q: What do you mean by better language?
🗪
2:04:56centhusiast Q: I really like your programming style of returning a struct from a function and I have been using it a lot. Is it true that it was not possible to return a struct from a function in the early days of C?
🗪
2:04:56centhusiast Q: I really like your programming style of returning a struct from a function and I have been using it a lot. Is it true that it was not possible to return a struct from a function in the early days of C?
🗪
2:04:56centhusiast Q: I really like your programming style of returning a struct from a function and I have been using it a lot. Is it true that it was not possible to return a struct from a function in the early days of C?
🗪
2:06:52basedyam Q: If you were making a game with a lot of text on-screen, what text rendering technique do you think you'd go for?
🗪
2:06:52basedyam Q: If you were making a game with a lot of text on-screen, what text rendering technique do you think you'd go for?
🗪
2:06:52basedyam Q: If you were making a game with a lot of text on-screen, what text rendering technique do you think you'd go for?
🗪
2:08:43spranklz1 Q: How do you visualize your logic so easily? Sometimes I'll write a complicated function and it will take me, potentially, hours to debug (or fully understand); but that never seems to be a problem for you
🗪
2:08:43spranklz1 Q: How do you visualize your logic so easily? Sometimes I'll write a complicated function and it will take me, potentially, hours to debug (or fully understand); but that never seems to be a problem for you
🗪
2:08:43spranklz1 Q: How do you visualize your logic so easily? Sometimes I'll write a complicated function and it will take me, potentially, hours to debug (or fully understand); but that never seems to be a problem for you
🗪
2:11:22se5a1 Q: I keep running into problems that I cannot figure out, but if I drop it and come back to it at a later date (weeks / months), I can sometimes figure out what's going wrong within 10 minutes. Any suggestions on how to improve my problem solving in this regard?
🗪
2:11:22se5a1 Q: I keep running into problems that I cannot figure out, but if I drop it and come back to it at a later date (weeks / months), I can sometimes figure out what's going wrong within 10 minutes. Any suggestions on how to improve my problem solving in this regard?
🗪
2:11:22se5a1 Q: I keep running into problems that I cannot figure out, but if I drop it and come back to it at a later date (weeks / months), I can sometimes figure out what's going wrong within 10 minutes. Any suggestions on how to improve my problem solving in this regard?
🗪
2:14:59centhusiast Q: What font do you recommend for a native desktop app? A font that looks pleasant to the eye. I have a hard time finding one. Thanks for your help!
🗪
2:14:59centhusiast Q: What font do you recommend for a native desktop app? A font that looks pleasant to the eye. I have a hard time finding one. Thanks for your help!
🗪
2:14:59centhusiast Q: What font do you recommend for a native desktop app? A font that looks pleasant to the eye. I have a hard time finding one. Thanks for your help!
🗪
2:15:43flightlesshippo Q: What's the hardest programming problem you've found yourself dealing with?
🗪
2:15:43flightlesshippo Q: What's the hardest programming problem you've found yourself dealing with?
🗪
2:15:43flightlesshippo Q: What's the hardest programming problem you've found yourself dealing with?
🗪
2:16:03nickito97 Q: Do you ever use Valgrind? Would you recommend it for C (or maybe C++) code? Is there a decent Windows alternative?
🗪
2:16:03nickito97 Q: Do you ever use Valgrind? Would you recommend it for C (or maybe C++) code? Is there a decent Windows alternative?
🗪
2:16:03nickito97 Q: Do you ever use Valgrind? Would you recommend it for C (or maybe C++) code? Is there a decent Windows alternative?
🗪
2:17:42ud_0 Q: What language / environment do you recommend for introducing young kids to programming?
🗪
2:17:42ud_0 Q: What language / environment do you recommend for introducing young kids to programming?
🗪
2:17:42ud_0 Q: What language / environment do you recommend for introducing young kids to programming?
🗪
2:21:23nickito97 Q: Do you think learning to program with C is a bad idea?
🗪
2:21:23nickito97 Q: Do you think learning to program with C is a bad idea?
🗪
2:21:23nickito97 Q: Do you think learning to program with C is a bad idea?
🗪
2:22:00overture2112 Q: How often do you work on random small projects that aren't work-related (i.e. not Handmade Hero, Molly Rocket stuff, etc)?
🗪
2:22:00overture2112 Q: How often do you work on random small projects that aren't work-related (i.e. not Handmade Hero, Molly Rocket stuff, etc)?
🗪
2:22:00overture2112 Q: How often do you work on random small projects that aren't work-related (i.e. not Handmade Hero, Molly Rocket stuff, etc)?
🗪
2:22:40Close it down
🗩
2:22:40Close it down
🗩
2:22:40Close it down
🗩