ExifTool can extract the font name and rename the file for you for .ttf/.ttc fonts.
As you say, fonts may not be consistent in where the name is located, as well as having variations in the file. For example, a font on my Windows system
C:\>exiftool -G1 -a -s -*fontname* C:\Windows\Fonts\SitkaZ.ttc
[Font1] FontName : Sitka Small Bold Italic
[Font1] PostScriptFontName : SitkaSmall-BoldItalic
[Font1] FontName-en-US : Sitka Small Bold Italic
[Font1] PostScriptFontName-en-US : SitkaSmall-BoldItalic
[Font2] FontName : Sitka Text Bold Italic
[Font2] PostScriptFontName : SitkaText-BoldItalic
[Font2] FontName-en-US : Sitka Text Bold Italic
[Font2] PostScriptFontName-en-US : SitkaText-BoldItalic
[Font3] FontName : Sitka Subheading Bold Italic
[Font3] PostScriptFontName : SitkaSubheading-BoldItalic
[Font3] FontName-en-US : Sitka Subheading Bold Italic
[Font3] PostScriptFontName-en-US : SitkaSubheading-BoldItalic
[Font4] FontName : Sitka Heading Bold Italic
[Font4] PostScriptFontName : SitkaHeading-BoldItalic
[Font4] FontName-en-US : Sitka Heading Bold Italic
[Font4] PostScriptFontName-en-US : SitkaHeading-BoldItalic
[Font5] FontName : Sitka Display Bold Italic
[Font5] PostScriptFontName : SitkaDisplay-BoldItalic
[Font5] FontName-en-US : Sitka Display Bold Italic
[Font5] PostScriptFontName-en-US : SitkaDisplay-BoldItalic
[Font6] FontName : Sitka Banner Bold Italic
[Font6] PostScriptFontName : SitkaBanner-BoldItalic
[Font6] FontName-en-US : Sitka Banner Bold Italic
[Font6] PostScriptFontName-en-US : SitkaBanner-BoldItalic
They can also be inconsistent with the names
C:\>exiftool -G1 -a -s -e C:\Windows\Fonts\18cents.ttf -*fontname*
[Font] FontName : New
[Font] PostScriptFontName : New
[Font] FontName-en-US : 18thCentury
[Font] PostScriptFontName-en-US : 18thCentury
An additional thing is that the name tags can be specific to certain languages. For example, you can have FontName-fi, FontName-de-DE, or PostScriptFontName-es-MX.
Because of all of these variations, it would be very difficult to create a perfect exiftool command. But this would be a basic example of a command, assuming -en-US as the default language
exiftool -ext ttf -ext ttc "-FileName=!Manual rename %f.%e" "-FileName<PostScriptFontName-en-US.%e" "-FileName<FontName-en-US.%e" "-FileName<PostScriptFontName.%e" "-FileName<FontName.%e" /path/to/files/
This command gives priority renaming from back to front of the command depending upon the tags in the file, i.e. "-filename<FontName.%e" will be used if FontName exists, otherwise PostScriptFontName, then FontName-en-US, etc. If none of the tags exists, then it will prepend !Manual rename to the front of the filename for manual processing. See Note #1 under the -TAG[+-^]=[VALUE] option.
The -ext (-extension) option is used to limit processing to .ttf/.ttc files. The -r (-recurse) option can be added to recurse into subdirectories.
You can do a test run by using Testname instead of FileName.
exiftool -ext ttf -ext ttc "-Testname=!Manual rename %f.%e" "-Testname<PostScriptFontName-en-US.%e" "-Testname<FontName-en-US.%e" "-Testname<PostScriptFontName.%e" "-Testname<FontName.%e" /path/to/files/