After a little more work I found it.
fonts = bpy.context.blend_data
scene = bpy.data.scenes['Scene']
col.prop_search(scene, "Font", fonts, "fonts")
For anyone else trying to use this, here's a quick breakdown.
The second argument is a variable to store the selected font in (see the link in the question for an example). The first argument is where blender looks for that variable (in this case, the variable was created with
bpy.types.Scene.Font = bpy.props.StringProperty(), so it needed to be passed bpy.data.scenes['Scene']) . The last argument is what it populates the drop down list with, and the argument before that is where it looks for that property.
my problem was I was searching for the variable in the fonts instead of the scene where I created it, where of course it didn't exist.