Italian is the exception that proves the rule. The orthography is well-designed (transparent, without too much fluff), but not even then it could avoid ⟨ch gh⟩ for /k g/ before ⟨e i⟩, so it could reserve ⟨c(i) g(i)⟩ for /tʃ dʒ/.
It’s all related: modern European languages typically have a lot more sounds than Latin did, so Latin itself never developed letters for them. Across the Middle Ages you saw a bunch of local solutions for that, like:
Italian - refer to the etymology to pick a digraph, then solve the /k tʃ g dʒ/ mess with ⟨h⟩.
Occitan - spam ⟨h⟩ everywhere. (Portuguese borrowed from it.)
English - spam ⟨h⟩ too.
Hungarian - spam ⟨y⟩ instead.
Polish - spam ⟨z⟩, plus a few acute accents (Polish has the retroflex series to handle too, not just the palatal/palato-alveolar like the four above)
Italian is the exception that proves the rule. The orthography is well-designed (transparent, without too much fluff), but not even then it could avoid ⟨ch gh⟩ for /k g/ before ⟨e i⟩, so it could reserve ⟨c(i) g(i)⟩ for /tʃ dʒ/.
It’s all related: modern European languages typically have a lot more sounds than Latin did, so Latin itself never developed letters for them. Across the Middle Ages you saw a bunch of local solutions for that, like: