OpenType Feature to Replace Initial Forms

It depends on what you want, but init and fina for Latin can be done with calt. I took some code from an earlier post and made some adjustments to enable init through calt:

script latn {
  feature ContextualAlternates;
}

class @uppercase [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z];
class @uppercaseinit [A.init B.init C.init D.init E.init F.init G.init H.init I.init J.init K.init L.init M.init N.init O.init P.init Q.init R.init S.init T.init U.init V.init W.init X.init Y.init Z.init];
class @latin_all [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z A.init B.init C.init D.init E.init F.init G.init H.init I.init J.init K.init L.init M.init N.init O.init P.init Q.init R.init S.init T.init U.init V.init W.init X.init Y.init Z.init];

feature ContextualAlternates calt {
  lookup ChainingContextInit;
}

lookup ChainingContextInit {
  ignore context (@latin_all) @latin_all;
  context @uppercase;
  sub 0 SingleSubstitutionInitUpper;
}

lookup SingleSubstitutionInitUpper {
  sub @uppercase -> @uppercaseinit;
}

Character Variants support custom naming fields, which you can define with FontCreator. Just keep in mind the code editor doesn’t support it yet.