A friend of mine recently asked me how one would convert a .bmp font to a .ttf. I said I was unsure, but it got me thinking to how I would code a program to do that. How would someone who wants to create a .bmp to .ttf converter go about it? Is there some sort of documentation somewhere explaining how the .ttf file format works? And in addition to that, what about other file formats? Where do the people who code programs that create .jpegs or play .mp3s learn about how to properly read/write from those file formats? Is the information publicly available by somewhere?