This project implemented a simple page for browsing/selecting google font list. The font picker can preview the font with text from the text box real-time.
Built the endpoints of google font services and wrapped URLSession and requests into a network controller.
Saved the downloaded ttf files in the app data folder and the file urls into WebFont models.
Implemented two logic controllers (aka font stores) for downloading and saving Google web fonts and for retrieving local font files and converting to UIFont objects respectively, and then added a FontManager Singleton to retain remote and local font stores and web fonts using Facade design pattern.
Implemented the font picker using MVC design pattern, the canvas as a container view controller and the font picker as its child view controller. So the font picker can be added into the canvas and removed later on demand.
Bind URLSession, NotificationCenter, and KVO for data using Combine.