The game does not support nested markup. However, there is a really wonky way to do what you want.
Simply put you can abuse how the link markup behaves to span over the icon.
That's how I managed to create the clickable icon in Chat2Clipboard:
Lua Code:
local ICON_SIZE = 12
local COPY_LINK_TYPE = "copyText"
local COPY_LINK_ICON = zo_iconFormat("Chat2Clipboard/images/copy.dds", ICON_SIZE, ICON_SIZE)
local REVERSE_BLANK_ICON = zo_iconFormat("blank.dds", -7, ICON_SIZE)
-- we use a negative image width to go outside the visible area, then place a link with a dot and space as text and then the actual icon
-- the combination of char - space spans the link through the image until the next char appears in the string
local COPY_LINK_FORMAT = ("%s|Hignore:%s:%%d:%%d|h. |h%s"):format(REVERSE_BLANK_ICON, COPY_LINK_TYPE, COPY_LINK_ICON)