Dans le passé, bien avant l'école obligatoire, la lecture du "gn" posait problème car cela se prononçait tantôt /gn/ comme dans "stag-na-tion", tantôt /ɲ/ ("ni") comme dans "compagnon". Pour aider les lecteurs, on s'est alors mis à ajouter dans la graphie une lettre "i" juste avant le "gn" pour indiquer qu'il fallait prononcer /ɲ/ ("ni"). Au fil du temps, on a abandonné cette aide à la lecture et l'écriture du son /ɲ/ est revenue à "gn".
Ainsi, le nom de famille de l'auteur des Essais, Michel Eyquem de Montaigne, se prononçait à son époque comme le substantif "montagne" d'aujourd'hui. La graphie est restée - les écrits restent - et... l'on prononce aujourd'hui le "ai" non plus "a" mais "è". L'adjectif moderne que l'on utilise pour qualifier un élément de l'oeuvre de Montaigne est d'ailleur "montagien/montagnienne" et s'écrit donc sans "i".
Autre exemple, le nom "poignet" se disait, se lisait à l'origine "pognet" ("po-ni-et"). On utilise encore en argot le mot "pogne" pour désigner le poing ou la main).
Voilà l'histoire du "oi" de "oignon" qui se prononce "o" et non /wa/. Le "i" est resté dans l'écriture mais ici la prononciation n'a pas évolué pour devenir celle du "wa" de la graphie. Sans doute est-ce dû à la grande fréquence du mot à l'oral.
La réforme de l'orthographe de 1990 recommande l'utilisation de "ognon"... mais a maintenu la graphie "ign" du substantif "seigneur"... Pourquoi n'avoir pas recommandé "segneur" ? Ou mieux "sénieur", qui rapprocherait le mot français du latinisme utilisé en français "senior" et de la famille de mots "sénat", "sénile"...