package Ġcom . key t ote ch . fon k ster Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Type face Ċ import Ġkotlinx . coroutines . experimental . Global Scope Ċ import Ġkotlinx . coroutines . experimental . async Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġjava . io . File ĊĊ Ċ /** Ċ Ġ* ĠF on k ster Ċ Ġ* Ċ Ġ* ĠDynamic ally Ġloading Ġfonts Ġfrom ĠURL . Ċ Ġ* Ċ Ġ* Ġ@ property Ġcontext Ġ- ĠBase Ġcontext Ċ Ġ* Ġ@ property Ġfont Url Ġ- Ġurl Ġof Ġthe Ġfont Ġfile Ċ Ġ* Ġ@ property Ġfont FileName Ġ- Ġname Ġof Ġthe Ġfile Ġto Ġstore Ġlocally Ċ Ġ* Ċ Ġ* Ġ@ author ĠB og dan ĠU sty ak Ġ( bo gd an . ust y ak @ gmail . com ) Ċ Ġ*/ Ċ class ĠF on k ster ( private Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġfont Url : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġfont FileName : ĠString ) Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoads Ġfont Ġfrom ĠURL ĊĠĠĠĠ Ġ* ĠUses ĠKotlin 's Ġcor outines Ġto Ġsync Ġjob . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtype face Ġof Ġthe Ġfont ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtype Face (): ĠType face ? Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal FilePath Ġ= Ġcontext . files Dir . absolute Path Ġ+ Ġ"/" Ġ+ Ġfont FileName ĊĠĠĠĠĠĠĠ Ġval Ġloaded Font Path Ġ= ĠGlobal Scope . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Downloader (). download ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal FilePath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. await () ĊĠĠĠĠĠĠĠ Ġif Ġ( loaded Font Path Ġ!= Ġnull Ġ&& ĠFile ( loaded Font Path ). exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType face . create FromFile ( File ( loaded Font Path )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }