Turning on UseEDID is often a good idea to let the monitor and core negotiate the right settings, but many screens report the wrong screen size and consequently the font DPI is calculated incorrectly giving you the tiny (or huge) fonts. Also add in "UseEDIDDPI" "false" and "DPI" "100 x 100" for example to get you over that hump.
If after turning on EDID it still doesn't allow you to get the resolution you want, it probably means that the mode validation process that X goes through is failing at some point. Often refresh rate or some other timing issue. Your best bet is to carefully read the /var/log/Xorg.0.log file as this details all the steps that the mode validation goes through and will log an error message where it fails and tell you what failed. Usually you will see something like it trying to validate the timings for the resolution you selected and failing for one reason or another. Then later on trying to select that resolution and failing because it isn't in the "mode pool" of resolutions it has validated, and thus saying it is defaulting to a pre-coded resolution (could be 800x600, can't remember). So solving the validation issue will fix all that up.
With some screens EDID may report timing limits that make it difficult or impossible for X to automatically calculate a modeline timing that will give you the resolution you are looking for, and so it fails to default. Either turning off some of the validation checks and ignoring the timing limits of the screen (could be inadvisable), or creating your own custom modeline would fix this - go to the mythtv modeline database as this has heaps of brand/model specific modelines you can use. Also, be aware that some TVs and screens have menu options that allow you to change how it constructs the screen from the timings - i got rid of my overscan issue on my TV that was supposed to perfectly support 1080p by choosing the "Just Scan" option in the screen size section instead of 16:9!