ページ 1 / 2
ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月15日(月) 16:03
by kyassy
すいません、質問させて下さい。
プラグイン
Lunatlazur_ActorNameWindow.js
を使わせていただいて、メッセージウィンドウの上に名前を表示するようにしました。
次に、
プラグイン
Rubi_riru.js
を使わせていただいて、ルビを付けるようにしたところ
画像のように、ウィンドウの横幅が広がり選択肢などとかぶってしまうようになってしまいます。
ウィンドウの縦幅は少々変わるのは良いのですが、
横幅はそのままにしたいのです。
すいませんが、どうにかならないでしょうか?
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月15日(月) 20:12
by ムノクラ
実験したのですが、再現できませんでした。
・コアスクリプトのバージョン
・各プラグインの
・バージョン
・ダウンロード場所
・具体的な設定事例
を教えてください。
未実験ですが、下記のようなルビ機能のプラグインもあります。
▼Torigoya Text Ruby
https://plugin.fungamemake.com/archives/1521
メッセージにルビ記法を追加します
▼MPP 文章の表示拡張
https://plugin.fungamemake.com/archives/2201
[文章の表示]の機能を拡張したり表示の演出を追加します。
名前ウィンドウもあるようです。
「MPP 文章の表示拡張」1つのプラグインなら、問題なく動きそうな気がします。
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月16日(火) 17:27
by kyassy
ムノクラ様
わざわざ実験まで…ありがとうございます。
バージョンですが、
〇RPGツクールMV…Ver:1.6.2
〇Rubi_riru.js…Ver:1.04
https://forum.tkool.jp/index.php?thread ... 82%8A.120/
〇Lunatlazur_ActorNameWindow.js…Ver:1.0.0
https://lunatlazur.com/rpgmv-plugins/actor-name-window/
上記のような順番でやると、名前の枠だけがルビを付けると端まで伸びてしまい、選択肢などとかぶってしまいます。
ムノクラ様のおっしゃるプラグインの変えてこちらもやってみようと思います。
わざわざありがとうございます。
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月16日(火) 18:53
by ムノクラ
そもそもプラグインが古いようですね。
▼ルビ振り Rubi_riru.js
https://plugin.fungamemake.com/archives/13211
*2019年1月7日 Ver1.06。ルビ振りが作動しない不具合を修正。
あと、どういうイベントを組んだのかを見せていただけないと、再現が分からないのですが…
スクリーンショットを出していただければ、分かると思います。
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月20日(土) 14:39
by kyassy
ムノクラ様
お返事が遅くなりました。
バージョンを新しくして
もう一度再現してみましたが、ルビを付けるとやはり名前枠が横に広がってしまいます。
スクショを添付してみます。
Rubi_riru.jsの69行目に自動ルビ振りの登録をしてから実行しています。
ここが原因でしょうか…?
もし分かりましたら、急ぎませんのでお願い致します。
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月20日(土) 14:40
by kyassy
残りのスクショを添付致します。
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月20日(土) 18:17
by ジャングル
試しにやってみたら直りました。
Lunatlazur_ActorNameWindow.js の103行目を修正してください。
this.textWidth(this._text) を this.textWidth(this._text) / 2 にします。
コード: 全て選択
return Math.ceil(this.textWidth(this._text) + this.padding * 2 + this.standardPadding() * 4);
//↓↓↓↓
return Math.ceil(this.textWidth(this._text) / 2 + this.padding * 2 + this.standardPadding() * 4);
テキストの幅が広がっているので半分にします。
微調整はここでテキストの幅をいじってください。
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月22日(月) 00:23
by kyassy
ジャングル様
返答ありがとうございます。
確かに!名前の枠幅を調整できる事が分かりました。
ありがとうございます。
ところが、また漢字が多い名前(文字数が多い)人物にルビを付けたところ
逆に枠の幅が狭く名前が切れてしまいます。
これはもうしょうがないのでしょうか…?
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月22日(月) 06:15
by ジャングル
済みません。
101行目のメソッドを次のように修正してください。
文字数が増えておりその分ウィンドウ幅が増えていたので、元の文字だけを取り出してそれをウィンドウ幅に適用させました。
コード: 全て選択
Window_ActorName.prototype.windowWidth = function () {
var prevText = this._text.match(/[^R\[]+(?=,)/);
this.resetFontSettings();
return Math.ceil(this.textWidth(/*this._text*/prevText) + this.padding * 2 + this.standardPadding() * 4);
};
\R[山田太郎,やまだたろう]
ルビ付きのテキストはこんな形になっていると思うので、r[ の後の , までの文字列を取り出して prevText 変数に入れてその幅を textWidth() に与えています。
※split()2回でも取得できます。
var prevText = this._text.split(",")[0].split("[")[1]
★追記:
何度も済みません。上記のコードは漢字が予め定義されているなど複数個の漢字がある場合に2つ目以降に対応できません。
次のコードをお使いください。
コード: 全て選択
var prevText;
Window_ActorName.prototype.windowWidth = function () {
if (!prevText) { prevText = this._text; }
if (prevText.match(/[rR]\[/)) {
var otherText = [];
var prevText = this._text.split(/[rR]/).map(function(x) {
x = x.replace(//g, "");
var other = x.split("]")[1];
if (typeof other !== "undefined") {
otherText[otherText.length] = other;
}
var tag = x.match(/[^(?:r\[)(?:R\[)]+(?=,)/);
return (tag)?tag[0]:x;
});
prevText = prevText.join("");
prevText += otherText.join("");
}
this.resetFontSettings();
return Math.ceil(Math.min(this.textWidth(prevText) + this.padding * 2 + this.standardPadding() * 4, Graphics.boxWidth));
};
こちらは、予め定義されていても、あるいはその場で定義しても機能します。
★追記2:
漢字以外の文字が入っていてもカウントするようにしました↑
また、予め定義とその場で定義が混ざっていても対応するようにしました
Re: ルビを付けると名前枠が広がり困ってます…。
Posted: 2019年7月22日(月) 18:56
by ジャングル
ルビの方のプラグインを書き換えました。
今のRubi_riru.jsと添付ファイルを置き換えたら機能します(Lunatlazur_ActorNameWindow.jsはデフォルトのまま使用してください)
★この改変したプラグインは、↑のスクリプトよりも信頼度の高い出来になっています。
(アクターネームの取得を適切な場所で行いました)
※Rubi_riru.jsを置き換える場合は、先にバックアップをしておいてください。
※添付ファイルは2箇所のみの簡単な修正です(70行目、145行目のみです)
コード: 全て選択
// 70行目(幅の調整)
riru_Ruby_Message_processstartMessage =
Window_Message.prototype.startMessage;
Window_Message.prototype.startMessage = function() {
riru_Ruby_Message_processstartMessage.call(this);
if(p_auto_Ruby)this._textState.text = this.convertEscapeCharacters($gameMessage.createRubytext($gameMessage.allText()));
if(p_Jisage==0||(p_Jisage==2&&$gameMessage.ruby_e_hantei(this._textState.text)))this._textState.y += 6+ruby_c_size;
// アクターネーム用改変★
if (SceneManager._scene._messageWindow && SceneManager._scene._messageWindow._nameWindow) {
SceneManager._scene._messageWindow._nameWindow.windowWidth = function () {
this.resetFontSettings();
return Math.ceil(Math.min(this.textWidth(this._prevText/*this._text*/) + this.padding * 2 + this.standardPadding() * 4, Graphics.boxWidth));
};
}
};
// 145行目(テキストの幅を取得)
this._prevText = text_length_text; // 元の文字列をウィンドウに保存
プラグインの順番ですが次のようにしてください。
Lunatlazur_ActorNameWindow.js
Rubi_riru.js
↓これは一部のアルファベットのときにバグが出ました(最新版をお試しください)