I'm trying to follow along an Illustrator tutorial on how to personalize a label. In it, the brand's name uses two colors that are applied alternately to each letter. See below image:

haus wine

The text "haus wine" is made using the type tool. It can still be edited to whatever text I want to. So it hasn't been converted to shape or anything like that.

My question is: Is there a way to select alternating characters that are created using the type tool so I can fill it with a color without affecting the characters in between? From the example above, if I want to fill the letter h, u, i and e with the light yellow fill, without affecting the letter a, s, w, and n, I would have to do it individually on each letter. It would be nice to be able to do a multiple select when we're in type tool mode. Hope this makes sense.

  • 1
    You can write a script.
    – joojaa
    Commented Sep 1, 2020 at 4:06
  • 4
    Are you really creating so much type like this that you need it automated? If there's that much type.. wouldn't the alternating colors decrease readability considerably?
    – Scott
    Commented Sep 1, 2020 at 5:17
  • @Scott, no not really. I guess this is more of a hypothetical question. Sometimes my curiosity gets the better of me :)
    – tibodi
    Commented Sep 2, 2020 at 2:34
  • @joojaa, ok thanks I didn't know that!
    – tibodi
    Commented Sep 2, 2020 at 2:36

1 Answer 1


I think you could split Selected Words Into Characters using a script-as suggested in the comments.

Copy that text before you run the script if you want to keep the original text.

The Adobe community has a thread about it: (https://community.adobe.com/t5/illustrator/how-to-divide-all-textframes-in-one-character-per-textframe/td-p/3205429?page=1)

The script divides the text and we can select each character as individuals characters.

Here is the script:

#target Illustrator
//  script.name = splitSelectedWordsIntoCharacters.jsx;
//  script.description = splits selected texFrames into separate characters;
//  script.required = select point text textFrames before running;
//  script.parent = CarlosCanto;  // 4/13/11
//  script.elegant = false;
var idoc = app.activeDocument;
var sel = idoc.selection; // get selection
var selCount = sel.length; // count items
var tWord = []; // to hold the textFrames

for (j=selCount ; j>0 ; j--) // loop thru selection & get 
textFrames backwards
    tWord[j-1] = sel[j-1];

for (k = 0 ; k<tWord.length ; k++) // loop thru textFrames
    var xpos = tWord[k].position[0]; // get x
    var ypos = tWord[k].position[1]; // get y
    var charCount = tWord[k].characters.length; // count characters

    for (i=charCount-1 ; i>=0 ; i--) // loop thru characters backwards
            var ichar = tWord[k].duplicate(); // duplicate textFrame
            ichar.contents = tWord[k].characters[i].contents; // get last character
            tWord[k].characters[i].remove(); // remove last character from original word
            var width = tWord[k].width; // get the new width (without the last character)
            ichar.position = [xpos+width,ypos]; // position the character = original position + new width
    tWord[k].remove(); // remove textFrame (it is empty by now)


enter image description here

  • Thank you. I'll give this a try when I become a bit more advanced in the program :)
    – tibodi
    Commented Sep 15, 2020 at 23:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.