どんな言語でも文字より先に話し言葉があったので、同音意義語というのは必ずあります。
漢字は同じ音でも書き分けられるようになっていると考えられていますが、一度にすべての漢字が出来上がったわけではありませんから、同音語が同じ文字を共用することがあっても不自然ではありません。
文字ができる以前は同音異義語であっても、意味の使い分けは出来たのですから文字を作ったとき、共通の文字であっても意味は通じたはずです。
たとえば「沙」という字は「すな」という意味とそこから派生した「より分ける」という意味を持っています。
「沙」が「すな」という意味の文字として作られたのは、石が水に洗われて小さく削られて「すな」になると考えられたからだといいます。
ところが、この考え方はまわりくどいので、単純に石の小さいのが「すな」だとしたのが「砂」という字なのでしょう。
「沙」の場合は石が水に洗われて小さく削られるということから、「より分ける」という意味が派生したのですが、「砂」からはこのような意味が派生しないので、「砂」は「すな」の意味だけに使われています。
それでも「沙」の字も「すな」という意味を失っていないので、同じ意味の言葉に二つの字が対応しています。
このような例は他にもあって、「女」という字は「ジョ」という発音の「おんな」という意味の言葉と、「なんじ」という意味の言葉で共用された文字です。
今通用している「汝」という文字は中国の「ジョ」という川の名前に使われていたものだそうです。
これは川だからサンズイにジョという発音に当てられている「女」をつけたものですが、この文字ができたので「なんじ」という意味の言葉に対する文字にくっつけたのです。
「おんな」と「なんじ」では紛らわしい場合もありますが、川の名前と「なんじ」のほうが紛らわしくないからでしょう。
「求」という字はもとは「かわごろも」という意味で、その後「もとめる」という意味が派生したのが、かわごろもという意味をよりハッキリさせる裘という字が出来たので、「もとめる」のほうが主役になったそうです。
「然」という字も元は「もえる」という意味の「ネン」という語に当てられた字で、「しかり」という意味の「ネン」という意味の言葉も同居したので、
「もえる」の意味の字を独立させようとして「燃」という字が出来たとのことです。
そういえば「然」は下に火をあらわす「れんが」がついているので「もえる」という意味なのですが、これに火偏をつけた「燃」は火が二重になって不自然な文字形になってしまっています。
発音が同じなら文字も同じでもとりあえずよいとするのは自然の成り行きで、何が何でも別の字を割り当てることはないのですが、できたら区別のマークをつけたいというのが人情です。
そこで共有部分に意味の別を表わす印をつける方法が考えられます。
たとえば日本人が「くも」という字を作ろうとするとして「空のくも」を表わす「云」という字を「くも」と読み、雨をつけて「雲」、「虫のくも」なら虫偏に「云」をつけたような文字を作るという要領です。
話し言葉の音が土台になって、意味の区別を暗示するマークをつけるというやり方で、いわゆる形声文字の造字法です。