There is some confusion and controversy around the definition of homonyms, homophones, homographs and heteronyms. In this article we will explore the difference between those terms.
Homonym comes from the Greek homo which means “same” and onym which means “name.” When we talk about words, however, what should we use to define their names? The spelling or the pronunciation? Probably both. Homonyms, therefore, can be defined as two or more words that share the same spelling, or the same pronunciation, or both, but have different meanings.
Since there are several “types” of homonyms (e.g., same spelling but different pronunciation, same pronunciation but different spelling, same spelling and same pronunciation), further categorization is needed. We can say that homonyms represent the big category, from which 3 sub-categories emerge:
Homophones: two or more words that share the same pronunciation but have different meanings. They may or may not be spelled on the same way.
Examples: write and right, desert (to abandon) and desert (a thing deserved)
Homographs: homonyms that share the same spelling. They may or may not have the same pronunciation.
Examples: present (a gift) and present (to introduce), row (argument) and row (propel with oars)
Heteronyms: those are homonyms that share the same spelling but have different pronunciations. That is, they are homographs which are not homophones.
Example: desert (to abandon) and desert (arid region)
The Wikipedia article on homonyms has a quite useful graph illustrating all the different combinations. As you can see some homophones are also homographs, and some homographs are also heteronyms.