It shouldn't be too difficult, but it will take a little bit of time like anything else.
You'll want to do something like this...
-> Database table to store font name, description, permalink/UID (like: times-new-roman) so you can auto load the font file like $permalink.$extension where the permalink comes from DB and extension is the font file type. You could also just store a raw file name in your table. I prefer to use a permalink/UID so that I can do things like... site.com/load-font?id=$permalink and then autoload everything I need based on the $_GET['id']...
-> Directory to store font files (you might even have multiple sub directories if fonts have different styles like bold, italic, etc...
===> folder/fontfile, fontfile2, fontfile3
===> folder/fontfile/boldfile, italicfile ... folder/fontfile2/boldfile, italicfile...
-> PHP page to show the fonts... simple example:
foreach($fonts as $font){
echo $font['name'] . "<br>" . $font['description'] . "<br><a href='load.php?id={$font['permalink']}'>Use This Font</a>";
}
-> PHP page to load 1 font:
if(isset($_GET['id'])){
// check if font is real in database
// check if font file exists
// load the font in if not already
// show HTML page, probably with textarea for typing in font, and preview div that shows the text w/ the font choice as its style
}
This is the jist of it... Very simple