Is that the right order?

1. aalt

2. locl

3. frac

4. c2sc

5. smcp

6. fina

7. onum

8. case

9. lnum

10. pnum

11. tnum

12. sups

13. sinf

14. numr

15. dnom

16. sso1

17. salt

18. liga

19. hist

20. dlig

21. calt

22. ordn

23.ornm

24. zero

25.cpsp

26.kern

There is no "right order," but of course there are better orders than others...

I would advise putting 'sups', 'numr' and the like ahead of 'onum'. The way you have it there, you (probably) would have to make both default and oldstyle numbers as input to 'numr' etc. which is just cluttering up your code. For similar reasons, you might want to have 'ordn' before 'smcp'.

You probably want 'numr' and 'dnom' ahead of 'frac'. (If you have arbitrary fractions in 'frac' you can use a lookup from 'numr'.)

I think you'd want 'hist' before 'liga' (depending on what's actually in there).