簡單來說,分封制的規矩。所謂「封號」,就是封給你的名號,其源流是跟分封制掛鈎的。所謂分封制,就是把一塊土地分給諸侯,令其世代統治,而諸侯們的稱號,就由封地的地名和自己的爵位組成,比如齊國國君是侯爵,即為齊侯。後世的封號其實都脫胎於分封制,不論是男性還是女性的封號,地名在前多為主流,美稱只是後來出現的新玩意,始終沒能取代地名,只不過在具體實施方面,不同的朝代有著不同的規矩。再說公主,這一詞來源於周朝,正是分封制背景下誕生的。《公羊傳》載:天子嫁女子於諸侯,必使諸侯同姓者主之,故謂之公主。根據《春秋》記載,周天子的女兒被稱作王姬,王姬出嫁當有同姓諸侯主婚,《春秋》作為魯國史書,詳細記載了許多次魯國國君給王姬主婚的事件,而在魯國國內,國君被尊崇為公,在臣民的眼中,這就是「公主」的婚事,久而久之,就有了用公主來指代周天子女兒的慣例。
到了戰國時期,周天子已經不被諸侯放在眼裡了,就連國君的女兒也被稱為公主,《史記·吳起列傳》記載:「公叔為相,尚魏公主。」不過戰國時期似乎沒有給公主封地的傳統,也可能是沒有流傳,畢竟戰國時期出名的公主並不多。秦朝壓根就不實行分封制,秦始皇自然沒給女兒封地,而且崇尚男女平等的秦二世上位後,把一幫哥哥姐姐全都處死了,秦朝公主也沒有露臉的機會。第一位比較有名的公主是漢高祖劉邦的女兒魯元公主,她的封地(或稱食邑)是從他的哥哥齊王劉肥的封地裡割出來的,應是魯地,至於「元」,應該是她的諡號。《史記·呂太后本紀》載:「(高后元年四月)魯元公主薨,賜諡為魯元太后。
漢朝公主多以一縣之地為封邑,比如漢文帝的女兒館陶公主就是以館陶縣為封邑,當然,這是很富裕的一個縣。不過西漢公主出嫁後,如果丈夫也有爵位的話,其封號會隨丈夫的封地而變,館陶公主嫁給了堂邑侯陳午,又稱堂邑公主。有的時候,更出名的可能並非公主本來的封地,而是丈夫的封地,比如漢景帝的女兒平陽公主,她的食邑是陽信,嫁給平陽侯曹壽後才改稱。這一點被東吳給學到了,孫權的兩個女兒,一個稱全公主(丈夫全琮),一個稱朱公主(丈夫朱據)。從西晉開始,由於新設的郡越來越多,一個郡管轄的面積大大縮小,有些甚至還沒以前的縣大,公主的封號就開始有郡名了,比如晉惠帝的女兒弘農公主。
南北朝後期,由於男性爵位出現了國公這一等級,相應的,公主封號也出現了國公主,除了本朝國號不封外,其餘國家按歷史上的強弱進行分裂,強者地位高,弱者地位低,但都屬於公主中地位最高一列。唐朝以後,國公主成為潮流,被當作公主封號的最高級,宋朝還搞出一套升級流程,開始封美稱,比如昭慶、延慶、福康、德康等,出嫁的時候晉封國公主,一般是弱國,後面可以晉封強國。