Yet another update
Your kerning problem is caused by the fact that the footnote mark is set inside an \hbox. This destroys the kerning between 'A' and '¹'. Consider this code using my patched \realsuperscript macro from below:
A{\addfontfeatures{VerticalPosition=Superior}1}.
A{\textsuperscript{1}}.
A\footnote{1}.}
When we show this we get:
.\TU/SourceSerifPro(0)/m/n/12 A
.\TU/SourceSerifPro(1)/m/n/12 ¹
.\TU/SourceSerifPro(0)/m/n/12 .
.\glue(\spaceskip) 3.72801 plus 4.19398 minus 0.31067
.\TU/SourceSerifPro(0)/m/n/12 A
.\kern-1.68 (font)
.\TU/SourceSerifPro(0)/m/n/12 ¹
.\TU/SourceSerifPro(0)/m/n/12 .
.\glue(\spaceskip) 3.72801 plus 4.19398 minus 0.31067
.\TU/SourceSerifPro(0)/m/n/12 A
.\penalty 10000
.\hbox(9.936+0.0)x4.44, direction TLT
..\TU/SourceSerifPro(0)/m/n/12 ¹
.\insert253, natural size 12.00003; split(8.4,3.60004); float cost 20000
..\hbox(8.4+3.60004)x390.0, glue set 367.63995fil, direction TLT
...\localpar
....\localinterlinepenalty=0
....\localbrokenpenalty=0
....\localleftbox=null
....\localrightbox=null
...\hbox(8.28+0.0)x18.00003, glue set 14.30003fil, direction TLT
....\glue 0.0 plus 1.0fil minus 1.0fil
....\hbox(8.28+0.0)x3.7, direction TLT
.....\TU/SourceSerifPro(0)/m/n/10 ¹
...\hbox(8.4+0.0)x0.0, direction TLT
....\rule(8.4+0.0)x0.0
...\TU/SourceSerifPro(0)/m/n/10
...\penalty 10000
...\rule(0.0+3.60004)x0.0
...\penalty 10000
...\glue(\parfillskip) 0.0 plus 1.0fil
...\glue(\rightskip) 0.0
.\TU/SourceSerifPro(0)/m/n/12 .
We can see that
- In the first case there is a font change and no kerning is inserted.
- In the second case there is no font change and kerning is inserted.
- In the third case there is a
\penalty and and then '¹' is placed inside an \hbox and therefore no kerning is inserted even though there is no font change.
- I the third case the
\hbox with the footnote mark and the final period is separated by the float material for the footnote text. Therefore any kerning between '¹' and '.' is lost.
So to work around this two things are needed:
- Adjust the
\@makefnmark macro (previously adjusted from the default by the realscripts package) to remove the penalty and not to use the \hbox. This could have unwanted side effects, of course :).
- Use
A\footnotemark.\footnotetext{…} instead of A\footnote{…}.
The first could be achieved by using something like:
\makeatletter
\def\@makefnmark{\unpenalty{\footnotemarkfont\textsuperscript{\@thefnmark}}}
\makeatother
MWE
Here's a full MWE (I added some directlua to add kerning between '1' and '.'):
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\directlua {
fonts.handlers.otf.addfeature {
name = "supkern",
type = "kern",
data = {
["¹"] = { ["."] = -180 },
},
}
}
\usepackage{realscripts}
\usepackage[english]{babel}
\babelfont[english]{rm}[Ligatures=TeX,Numbers={Proportional,OldStyle},RawFeature=+supkern]{Source
Serif Pro}
\makeatletter
\def\@makefnmark{\unpenalty{\footnotemarkfont\textsuperscript{\@thefnmark}}}
\makeatother
\ExplSyntaxOn
\cs_new:Nn \__realscripts_numtosup:n
{
\str_set:Nn \l_tmpa_str {#1}
\str_map_inline:Nn \l_tmpa_str
{
\str_if_in:nnTF {0123456789} {##1}
{
\int_set:Nn \l_tmpa_int {##1}
\if_case:w \l_tmpa_int ⁰
\or: ¹
\or: ²
\or: ³
\or: ⁴
\or: ⁵
\or: ⁶
\or: ⁷
\or: ⁸
\or: ⁹
\fi:
}
{ {\addfontfeature{VerticalPosition=Superior}##1} }
}
}
\cs_generate_variant:Nn \__realscripts_numtosup:n { x }
\DeclareDocumentCommand \realsuperscript {m} {
\fontspec_if_fontspec_font:TF
{
\fontspec_if_opentype:TF
{ \fontspec_if_feature:nTF {+sups}
{ \__realscripts_numtosup:x{#1} }
{ \fakesuperscript{#1} }
}
{ \fontspec_if_aat_feature:nnTF {10} {1}
{ \__realscripts_numtosup:x{#1} }
{ \fakesuperscript{#1} }
}
}
{ \fakesuperscript{#1} }
}
\ExplSyntaxOff
\begin{document}
\null\vfill
A{\addfontfeatures{VerticalPosition=Superior}1}.
A¹.
A{\textsuperscript{1}}.
A\footnote{1}.
\setcounter{footnote}{0}
A\footnotemark.\footnotetext{1}
\end{document}

Update
Here's a nasty hack that tries to deal with the kerning update to your question.
I still use realscripts, but have redefined the \realsuperscript macro to substitute numbers with hard coded superscripts, i.e., 0→⁰, 1→¹, etc. Other characters still use the font sups feature, but on a character by character basis.
You could do something similar for the \realsubscript macro if you needed it.
It does seem to give better kerning. See the two A¹⁶³ lines.
Note that this works out of the box with Source Serif Pro, but other fonts may not have appropriate kerning pairs built into the font. You could define them though and they should work.
MWE
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\usepackage{realscripts}
\usepackage[english]{babel}
\babelfont[english]{rm}[Ligatures=TeX,Numbers={Proportional,OldStyle}]{Source
Serif Pro}
\frenchspacing
\ExplSyntaxOn
\cs_new:Nn \__realscripts_numtosup:n
{
\str_set:Nn \l_tmpa_str {#1}
\str_map_inline:Nn \l_tmpa_str
{
\str_if_in:nnTF {0123456789} {##1}
{
\int_set:Nn \l_tmpa_int {##1}
\if_case:w \l_tmpa_int ⁰
\or: ¹
\or: ²
\or: ³
\or: ⁴
\or: ⁵
\or: ⁶
\or: ⁷
\or: ⁸
\or: ⁹
\fi:
}
{ {\addfontfeature{VerticalPosition=Superior}##1} }
}
}
\cs_generate_variant:Nn \__realscripts_numtosup:n { x }
\DeclareDocumentCommand \realsuperscript {m} {
\fontspec_if_fontspec_font:TF
{
\fontspec_if_opentype:TF
{ \fontspec_if_feature:nTF {+sups}
{ \__realscripts_numtosup:x{#1} }
{ \fakesuperscript{#1} }
}
{ \fontspec_if_aat_feature:nnTF {10} {1}
{ \__realscripts_numtosup:x{#1} }
{ \fakesuperscript{#1} }
}
}
{ \fakesuperscript{#1} }
}
\ExplSyntaxOff
\begin{document}
\null\vfill
In text numbers: 0123456789
To be\footnote{xxx}, or not to be\footnote{xxx}: that is the question\footnote{xxx}:
Whether ‘tis nobler in the mind to suffer\footnote{xxx}
The slings and arrows of outrageous fortune\footnote{xxx},
Or to take arms against a sea of troubles\footnote{xxx},
And by opposing end them\footnote{xxx}? To die: to sleep\footnote{xxx};
No more\footnote{xxx}; and by a sleep\footnote{xxx} to say we end\footnote{xxx}
The heart-ache\footnote{xxx} and the thousand natural shocks\footnote{xxx}
That flesh is heir to, ‘tis a consummation\footnote{xxx}
Devoutly to be wish’d\footnote{xxx}. To die, to sleep\footnote{xxx};
A{\addfontfeatures{VerticalPosition=Superior}163}.
A{\textsuperscript{163}}.
\end{document}

Original answer
I suggest you use the realscripts package which will make use of the OpenType superior features of your font.
MWE
I've substituted with Source Serif Pro because I don't own your font.
\documentclass[a4paper,12pt]{article}
\usepackage{fontspec}
\usepackage{realscripts}
\usepackage[english]{babel}
\babelfont[english]{rm}[Ligatures=TeX,Numbers={Proportional,OldStyle}]{Source
Serif Pro}
\frenchspacing
\begin{document}
\null\vfill
In text numbers: 0123456789
To be\footnote{xxx}, or not to be\footnote{xxx}: that is the question\footnote{xxx}:
Whether ‘tis nobler in the mind to suffer\footnote{xxx}
The slings and arrows of outrageous fortune\footnote{xxx},
Or to take arms against a sea of troubles\footnote{xxx},
And by opposing end them\footnote{xxx}? To die: to sleep\footnote{xxx};
No more\footnote{xxx}; and by a sleep\footnote{xxx} to say we end\footnote{xxx}
The heart-ache\footnote{xxx} and the thousand natural shocks\footnote{xxx}
That flesh is heir to, ‘tis a consummation\footnote{xxx}
Devoutly to be wish’d\footnote{xxx}. To die, to sleep\footnote{xxx};
A{\addfontfeatures{VerticalPosition=Superior}163}.
A{\textsuperscript{163}}.
\end{document}

\documentclass{...}and ending with\end{document}. – DG' Feb 08 '19 at 21:37realscriptspackage? This will adjust\textsuperscriptso that it does use the .superior glyphs of the font. – David Purton Feb 08 '19 at 22:15realscriptsreally uses .superior glyphs, if present in the font? For I adjusted some kerning for .superior numbers and period, but I don't see any effect... – user41063 Feb 08 '19 at 23:01\texsuperscriptbut not with the footnote marks in the text. – David Purton Feb 09 '19 at 21:51\footnotebreaks kerning in a way that my\textsuperscriptbelow doesn't. – David Purton Feb 10 '19 at 02:21