package Ġorg . jetbrains . sk ia . sh aper Ċ Ċ import Ġorg . jetbrains . sk ia . Font Feature Ċ import Ġorg . jetbrains . sk ia . Font Mgr Ċ Ċ class ĠSh aping Options ( ĊĠĠĠ Ġinternal Ġval Ġfont Mgr : ĠFont Mgr ?, ĊĠĠĠ Ġinternal Ġval Ġfeatures : ĠArray < Font Feature ?> ?, ĊĠĠĠ Ġinternal Ġval Ġis Left To Right : ĠBoolean , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġenabled , Ġfallback Ġfont Ġruns Ġwill Ġnot Ġbe Ġbroken Ġby Ġwhitespace Ġfrom Ġoriginal Ġfont ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġis Approx imate Spaces : ĠBoolean , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġenabled , Ġfallback Ġfont Ġruns Ġwill Ġnot Ġbe Ġbroken Ġby Ġpunctuation Ġfrom Ġoriginal Ġfont ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġis Approx imate P unctuation : ĠBoolean Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġenabled , Ġfallback Ġfont Ġruns Ġwill Ġnot Ġbe Ġbroken Ġby Ġwhitespace Ġfrom Ġoriginal Ġfont ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġenabled , Ġfallback Ġfont Ġruns Ġwill Ġnot Ġbe Ġbroken Ġby Ġpunctuation Ġfrom Ġoriginal Ġfont ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Features ( features : ĠArray < Font Feature ?> ?): ĠSh aping Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSh aping Options ( font Mgr , Ġfeatures , Ġis Left To Right , Ġis Approx imate Spaces , Ġis Approx imate P unctuation ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Features ( features String : ĠString ?): ĠSh aping Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( features String Ġ== Ġnull ) Ġwith Features ( null Ġas ĠArray < Font Feature ?> ?) Ġelse Ġwith Features ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFont Feature . Companion . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( o : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( o Ġ=== Ġthis ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( o Ġ! is ĠSh aping Options ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġother Ġ= Ġo ĊĠĠĠĠĠĠĠ Ġif Ġ(! other . can Equal ( this Ġas ĠAny )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Left To Right Ġ!= Ġother . is Left To Right ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Approx imate Spaces Ġ!= Ġother . is Approx imate Spaces ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( is Approx imate P unctuation Ġ!= Ġother . is Approx imate P unctuation ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġ` this $_ font Mgr `: ĠAny ? Ġ= Ġfont Mgr ĊĠĠĠĠĠĠĠ Ġval Ġ` other $_ font Mgr `: ĠAny ? Ġ= Ġother . font Mgr ĊĠĠĠĠĠĠĠ Ġif Ġ( if Ġ(` this $_ font Mgr ` Ġ== Ġnull ) Ġ` other $_ font Mgr ` Ġ!= Ġnull Ġelse Ġ` this $_ font Mgr ` Ġ!= Ġ` other $_ font Mgr `) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġfeatures . content Deep Equals ( other . features ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġcan Equal ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġis ĠSh aping Options ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPR IME Ġ= Ġ 5 9 ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġif Ġ( is Left To Right ) Ġ 7 9 Ġelse Ġ 9 7 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġif Ġ( is Approx imate Spaces ) Ġ 7 9 Ġelse Ġ 9 7 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġif Ġ( is Approx imate P unctuation ) Ġ 7 9 Ġelse Ġ 9 7 ĊĠĠĠĠĠĠĠ Ġval Ġ` $_ font Mgr `: ĠAny ? Ġ= Ġfont Mgr ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġ(` $_ font Mgr ` ?. hashCode () Ġ?: Ġ 4 3 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġfeatures . content Deep HashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Sh aping Options (_ font Mgr =" Ġ+ Ġfont Mgr Ġ+ Ġ", Ġ_ features =" Ġ+ Ġfeatures . content Deep ToString () Ġ+ Ġ", Ġ_ left To Right =" Ġ+ Ġis Left To Right Ġ+ Ġ", Ġ_ approx imate Spaces =" Ġ+ Ġis Approx imate Spaces Ġ+ Ġ", Ġ_ approx imate P unctuation =" Ġ+ Ġis Approx imate P unctuation Ġ+ Ġ")" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Font Mgr (_ font Mgr : ĠFont Mgr ?): ĠSh aping Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( font Mgr Ġ=== Ġ_ font Mgr ) Ġthis Ġelse ĠSh aping Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ font Mgr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Left To Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Approx imate Spaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Approx imate P unctuation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Left To Right (_ left To Right : ĠBoolean ): ĠSh aping Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Left To Right Ġ== Ġ_ left To Right ) Ġthis Ġelse ĠSh aping Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Mgr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ left To Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Approx imate Spaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Approx imate P unctuation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġenabled , Ġfallback Ġfont Ġruns Ġwill Ġnot Ġbe Ġbroken Ġby Ġwhitespace Ġfrom Ġoriginal Ġfont ĊĠĠĠĠ Ġ* Ġ@ return Ġ` this `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Approx imate Spaces (_ approx imate Spaces : ĠBoolean ): ĠSh aping Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Approx imate Spaces Ġ== Ġ_ approx imate Spaces ) Ġthis Ġelse ĠSh aping Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Mgr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Left To Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ approx imate Spaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Approx imate P unctuation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġenabled , Ġfallback Ġfont Ġruns Ġwill Ġnot Ġbe Ġbroken Ġby Ġpunctuation Ġfrom Ġoriginal Ġfont ĊĠĠĠĠ Ġ* Ġ@ return Ġ` this `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Approx imate P unctuation (_ approx imate P unctuation : ĠBoolean ): ĠSh aping Options Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Approx imate P unctuation Ġ== Ġ_ approx imate P unctuation ) Ġthis Ġelse ĠSh aping Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfont Mgr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeatures , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Left To Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Approx imate Spaces , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ approx imate P unctuation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT Ġ= ĠSh aping Options ( null , Ġnull , Ġtrue , Ġtrue , Ġtrue ) ĊĠĠĠ Ġ} Ċ }