キャラの位置に合わせた吹き出し

キャラクターのセリフを表示させる際、ウィジェットで作った吹き出しをその喋っているキャラクターの頭上に表示させたいのですが、自分は特定の位置に常に固定させたものしか作れずどうすればできるかと悩んでいます。
やりたいことは、
・セリフがきたキャラクターの頭上に吹き出しを表示する。ただし、その頭上に表示できるスペースがなければ代わりに顔の下に表示する。
・吹き出しの矢印部分は常に顔の中央辺りをキープする。
・吹き出しは画面からはみ出さないようにする。
といったことになります。
あと、できればですが、セリフの文字数に合わせて吹き出しのサイズを変更できないかとも考えています。
良い方法が分かる方がいましたら、ご回答よろしくお願いします。