package Ġcom . q ande el abb ass i . dro psy čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . content . res . Resources . NotFoundException č Ċ import Ġandroid . graphics . Type face č Ċ import Ġandroid . util . Log č Ċ import Ġjava . io . Buffered OutputStream č Ċ import Ġjava . io . File č Ċ import Ġjava . io . File OutputStream č Ċ import Ġjava . io . InputStream č Ċ import Ġjava . util .* čĊč Ċ /** čĊ Ġ* ĠCreated Ġby Ġq ande el . ras he ed Ġon Ġ 8 / 1 2 / 2 0 2 0 Ġat Ġ 1 0 : 4 3 ĠPM . čĊ Ġ*/ č Ċ object ĠFont Cache Ġ{ čĊĠĠĠ Ġprivate Ġval Ġfont Cache Ġ= ĠHashMap < String , ĠType face ?> () čĊĠĠĠ Ġfun ĠgetType face ( font name : ĠString , Ġcontext : ĠContext ): ĠType face ? Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġtype face Ġ= Ġfont Cache [ font name ] čĊĠĠĠĠĠĠĠ Ġif Ġ( type face Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype face Ġ= Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Font From Res ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . getIdentifier ( font name , Ġ" raw ", Ġcontext . packageName ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Cache [ font name ] Ġ= Ġtype face čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġtype face čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġget Font From Res ( context : ĠContext , Ġresource : ĠInt ): ĠType face ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtf : ĠType face ? čĊĠĠĠĠĠĠĠ Ġvar ĠinputStream : ĠInputStream ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream Ġ= Ġcontext . resources . open Raw Resource ( resource ) čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNotFound Exception ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" test ", Ġ" Could Ġnot Ġfind Ġfont Ġin Ġresources !") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġout Path Ġ= Ġcontext . cacheDir . toString () Ġ+ Ġ"/ tmp " Ġ+ ĠSystem . currentTimeMillis () Ġ+ Ġ". raw " čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( inputStream !!. available ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb os Ġ= ĠBuffered OutputStream ( File OutputStream ( out Path )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl : ĠInt čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( inputStream . read ( buffer ). also Ġ{ Ġl Ġ= Ġit Ġ} Ġ> Ġ 0 ) Ġb os . write ( buffer , Ġ 0 , Ġl ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġb os . close () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtf Ġ= ĠType face . create FromFile ( out Path ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclean Ġup čĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( out Path ). delete () čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Test ", Ġ" Error Ġreading Ġin Ġfont !") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ ĠLog . d (" test ", Ġ" Successfully Ġloaded Ġfont .") čĊĠĠĠĠĠĠĠ Ġreturn Ġtf čĊĠĠĠ Ġ} č Ċ }