I do not see that your question is attached to any particular work or book, so I will switch your topic to "reference". :)
The best way to find a synonym to describe something is by using a thesaurus. These are reference books that do the same thing as dictionaries, except that they go straight to the synonym of the word that you are looking for.
The synonym for a coldhearted person is:
Someone with an "ugly heart", is described arbitrarily because there is no such thing as an "ugly" heart. First, because "ugly" is an aesthetic term entirely in the eye of the beholder, and because hearts, the organs, are neither pretty nor ugly by nature. They are healthy or functional.
Therefore, based on what the wrongdoing is, describe the "ugly heart" accordingly. For example, someone who has the unkind and uncaring tendencies may very well be:
These terms should be good enough for you to describe "ugly heart" and "cold hearted" as needed.