一人もくもく会 α verでサービス開始しました。
請求書作成システム α verでサービス開始しました。

cocos2d-jsにてfirefoxでLabelTTFがずれる

firefoxだとLabelTTFの文字が全部上にずれて上端が切れていて愕然とした。
ただ、WEB版のいいところはjsが完全に独立しているため
どんなに弄ってもAndroidiPhoneの動作に全く影響を与えない所。

というところで処理を追ってみたところ、
下記のようにオフセットを弄るとそれなりの表示になった。
(修正後、jsがキャッシュされていると反映されないのでうまいことやってください。
動的読み込みなのでしつこいほどキャッシュされます。
自分はパラメータを付けてキャッシュされないようにしてチェックしました)

frameworks/cocos2d-html5/cocos2d/core/labelttf/CCLabelTTFCanvasRenderCmd.js
の234行目あたり。

if (this._isMultiLine) {
    var locStrLen = this._strings.length;
    if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM)
        yOffset = lineHeight - transformTop * 2 + locContentSizeHeight - lineHeight * locStrLen;
    else if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_CENTER)
        yOffset = (lineHeight - transformTop * 2) / 2 + (locContentSizeHeight - lineHeight * locStrLen) / 2;

    for (var i = 0; i < locStrLen; i++) {
        var line = this._strings[i];
        var tmpOffsetY = -locContentSizeHeight + (lineHeight * i + transformTop) + yOffset;
        // ↓ここと、
        if (cc.sys.browserType == 'firefox') {
            tmpOffsetY += 5;
        }
        if (locStrokeEnabled)
            context.strokeText(line, xOffset, tmpOffsetY);
        context.fillText(line, xOffset, tmpOffsetY);
    }
} else {
    if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM) {
        //do nothing
    } else if (locVAlignment === cc.VERTICAL_TEXT_ALIGNMENT_TOP) {
        yOffset -= locContentSizeHeight;
    } else {
        yOffset -= locContentSizeHeight * 0.5;
    }
    // ↓あとここです。
    if (cc.sys.browserType == 'firefox') {
        yOffset += 5;
    }
    if (locStrokeEnabled)
        context.strokeText(node._string, xOffset, yOffset);
    context.fillText(node._string, xOffset, yOffset);
}