As previous answers said, the coloring is to indicate whether the files are considered executable or not.
The "execute" permission (=bit) in Linux and most other Unixes has one meaning for files and another for directories.
For directories, if you have execute permission to it, you can see its contents.
If you don't, you can't cd to the directory, nor you can list files in it, even if you have both read and write access to directory.
For regular files (as opposed to device files and other special Unix file types), the execute bit means that if you use the filename on command line, the O/S (or more precisely: shell) will try to "execute" or run the file as a command. Conversely, if you don't have execute permission on the file, you can't run it from command line.
So, if you, for example, remove the x permission from all users on /bin/cat file (which is a Unix command) you yourself or anybody else and any program that tries to use "cat" command will fail.
Those are then the OS commands, such as "cat" and "grep", which have executeble files usally in /*/bin/ directories -- /bin, /usr/bin, /sbin, /usr/sbin etc.
And then there can be uncompiled, interpreted scripts, which are either written in some programming language, such as Python or shell scripts (basically, commands you write as if from commandline when sshing to server).
Now, when you set execute bit on the script file (for example, file foobar), and try to execute it by your shell: "./foobar", the shell tries to analyze the file and find the correct program to pass the script to.
This the shell does by trying to read the file's first line and finding the "shebang" notation of which program this is supposed to run.
So, if your foobar was a text file with the first line like this:
Then shell would try to execute command:
/usr/bin/python foobar , basically invoking python interpreter and passing the name of your foobar file to it as a Python script.
If shell wouldn't find such first line in your file, it would then try to execute foobar itself as if it contained shell commands.
If the file with executable bit does not contain valid shell commands though, the shell would simply complain.
So this is what would happen, if you have TTF files with exec bit set and tried to run it from command line:
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
So, for fonts, it is probably neater, if the exec bit is not set, but doesn't really change anything.
P.S. Just some extraneous information. If you do remove the execute bit on some command or script, it might still be passed to any other program as an argument.
If that other program knows, how to execute your command, your removal of exec bit didn't really matter. For example, the foobar Python script would still be run by Python interpreter, if you simply did from command line:
Same with the example of the system commands, such as "cat". If you remove exec bit from "cat", you can still pass it to a new instance of shell for execution:
$sh -c 'cat myfile'
will work, even if you have removed exec bit from cat and