package Ġv mode v . clear keep . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġim . vector . R Ċ Ċ class ĠCustom Font TextView Ġ: ĠAppCompat TextView Ġ{ ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Custom Font ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor Ġ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Custom Font ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Custom Font ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġattribute Array Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Custom Font TextView ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfont Name Ġ= Ġattribute Array . getString ( R . style able . Custom Font TextView _ custom Font ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġtext Style Ġ= Ġattrs . getAttribute Int Value ( ANDROID _ SCHEMA , Ġ" text Style ", ĠType face . NORMAL ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcustom Font Ġ= Ġselect Type face ( context , Ġ Ġfont Name ) ĊĠĠĠĠĠĠĠ Ġtype face Ġ= Ġcustom Font ĊĊĠĠĠĠĠĠĠ Ġattribute Array . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Type face ( context : ĠContext , Ġfont Name : ĠString ?): ĠType face ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( null == font Name ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFont Cache . getType face (" SF Pro Text - Regular . ttf ", Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFont Cache . getType face ( font Name , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e Ġ: Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFont Cache . getType face (" SF Pro Text - Regular . ttf ", Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }