A long time ago I was thinking about a code to create a stroke around the letters to achieve better results than Hiero stroke.
So I did it and I like to share with you others. I didn't search on cocos2d forum if there's another method already, if so please excuse me.
The code can create a stroke on a CCLabel given a color and a size, and returns a CCRenderTexture to put behind the original CCLabel, giving this result:

I'm not using the latest version of Cocos2D, and haven't test its performance with dynamic labels (since I'm using it on static hints). That been said, here's the code:
+(CCRenderTexture*) createStroke: (CCLabel*) label size:(float)size color:(ccColor3B)cor
{
CCRenderTexture* rt = [CCRenderTexture renderTextureWithWidth:label.texture.contentSize.width+size*2 height:label.texture.contentSize.height+size*2];
CGPoint originalPos = [label position];
ccColor3B originalColor = [label color];
[label setColor:cor];
ccBlendFunc originalBlend = [label blendFunc];
[label setBlendFunc:(ccBlendFunc) { GL_SRC_ALPHA, GL_ONE }];
CGPoint center = ccp(label.texture.contentSize.width/2+size, label.texture.contentSize.height/2+size);
[rt begin];
for (int i=0; i<360; i+=15)
{
[label setPosition:ccp(center.x + sin(CC_DEGREES_TO_RADIANS(i))*size, center.y + cos(CC_DEGREES_TO_RADIANS(i))*size)];
[label visit];
}
[rt end];
[label setPosition:originalPos];
[label setColor:originalColor];
[label setBlendFunc:originalBlend];
[rt setPosition:originalPos];
return rt;
}
And here's an example of how to use it:
CCLabel* label = [CCLabel labelWithString: @"Some Text"
dimensions:CGSizeMake(305,179) alignment:UITextAlignmentLeft
fontName:@"SomeFont" fontSize:23];
[label setPosition:ccp(167,150)];
[label setColor:ccWHITE];
CCRenderTexture* stroke = [SomeUtilityClass createStroke:label size:3 color:ccBLACK];
[self addChild:stroke];
[self addChild:label];


