私もこういう階層に手を入れるのは好きなんですが, なかなか小回りがききにくいというのもあるので ちょっと手軽なフェイク的なものを.
\textitの直前が空白ではないときに \textitの中の最初の文字がf,j,pのときに それぞれ5pt,10pt,15ptの\hskipを入れています.
\futureletで取得したトークンに\meaningをつけて \edefして文字列を取得する手法を真似させてもらいました. ちょっと泥臭いのとthe characterのケースは省いているのと フォントの大きさとか関係なくアキが固定なのは手抜きです.
\documentclass{article}
\makeatletter
\def \DeclareTextFontCommand@leftic #1#2{%
\DeclareRobustCommand#1[1]{%
\ifmmode
\nfss@text{#2##1}%
\else
\hmode@bgroup
\text@command{##1}%
#2\check@icl\left@ic##1\check@icr
\expandafter
\egroup
\fi
}%
}
\DeclareTextFontCommand@leftic{\textit}{\itshape}
\@namedef{fakeic@the letter f}{5pt}
\@namedef{fakeic@the letter j}{10pt}
\@namedef{fakeic@the letter p}{15pt}
\def\dofakeic{\edef\meaning@next@token{\meaning\token@next}%
\hskip\csname fakeic@\meaning@next@token\endcsname}
\def\left@ic{%
\ifnum\lastnodetype=11\relax
\else
\expandafter\futurelet\expandafter\token@next\expandafter\dofakeic
\fi
}
\makeatother
\begin{document}
[\textit{f}]
[\textit{j}]
[\textit{p}]
aaa \textit{f} aaa \textit{f}
aaa \textit{j} aaa\textit{j}
aaa \textit{p} aaa\textit{p}
\end{document}