I've looked at the tipa code, and basically what they did was redefine \:, etc. to produce the characters. With that in mind...
Add this to your tex document \newcommand{\setTIPAcommands}{ \def\*\char"FE50 %Replace FE50 with your choice of unicode codepoint, I've chosen the small punctuation set because I haven't encountered them in the wild and I can't imagine someone entering these in by hand (as opposed to using a font's OpenType small caps feature). \def\;\char"FE51 %Ditto %etc... } Change your mapping definitions like the following U+FE51 latin_small_letter_t > latin_small_letter_t_with_retroflex_hook (I've used the unicode here, but you can redefine it, maybe semicolon_operator?) (Also, I've changed the bidirectional assignment to one-way... I seem to recall the bidirectional assignment was for things like ligatures in connected scripts, or contextual reassignments, where you're trying to assign a semantic equivalency between the two sides. Which is not what we're trying to hack here. Is it an important distinction? Not that I've seen. But then again, I have never tried searching for a retroflex t in Acrobat, so I couldn't tell you.) NB: The tipa manual mentions that these commands are not 100% safe. Keep that in mind if your code begins breaking in magical ways. -------------------------------------------------- Subscriptions, Archive, and List information, etc.: http://tug.org/mailman/listinfo/xetex