ルビを付けると名前枠が広がり困ってます…。

アバター
kyassy
記事: 13
登録日時: 2017年4月16日(日) 22:57
連絡を取る:

ルビを付けると名前枠が広がり困ってます…。

投稿記事by kyassy » 2019年7月15日(月) 16:03

すいません、質問させて下さい。

プラグイン
Lunatlazur_ActorNameWindow.js
を使わせていただいて、メッセージウィンドウの上に名前を表示するようにしました。

次に、

プラグイン
Rubi_riru.js
を使わせていただいて、ルビを付けるようにしたところ
画像のように、ウィンドウの横幅が広がり選択肢などとかぶってしまうようになってしまいます。

ウィンドウの縦幅は少々変わるのは良いのですが、
横幅はそのままにしたいのです。

すいませんが、どうにかならないでしょうか?
添付ファイル
しつもん.jpg

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by ムノクラ » 2019年7月15日(月) 20:12

実験したのですが、再現できませんでした。

・コアスクリプトのバージョン
・各プラグインの
 ・バージョン
 ・ダウンロード場所
・具体的な設定事例

を教えてください。

未実験ですが、下記のようなルビ機能のプラグインもあります。

▼Torigoya Text Ruby
https://plugin.fungamemake.com/archives/1521
メッセージにルビ記法を追加します

▼MPP 文章の表示拡張
https://plugin.fungamemake.com/archives/2201
[文章の表示]の機能を拡張したり表示の演出を追加します。
名前ウィンドウもあるようです。

「MPP 文章の表示拡張」1つのプラグインなら、問題なく動きそうな気がします。
最後に編集したユーザー ムノクラ on 2019年10月24日(木) 22:17 [ 編集 1 回目 ]
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
kyassy
記事: 13
登録日時: 2017年4月16日(日) 22:57
連絡を取る:

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by kyassy » 2019年7月16日(火) 17:27

ムノクラ様

わざわざ実験まで…ありがとうございます。

バージョンですが、
〇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/

上記のような順番でやると、名前の枠だけがルビを付けると端まで伸びてしまい、選択肢などとかぶってしまいます。

ムノクラ様のおっしゃるプラグインの変えてこちらもやってみようと思います。
わざわざありがとうございます。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by ムノクラ » 2019年7月16日(火) 18:53

そもそもプラグインが古いようですね。

▼ルビ振り Rubi_riru.js
https://plugin.fungamemake.com/archives/13211
*2019年1月7日 Ver1.06。ルビ振りが作動しない不具合を修正。

あと、どういうイベントを組んだのかを見せていただけないと、再現が分からないのですが…
スクリーンショットを出していただければ、分かると思います。
最後に編集したユーザー ムノクラ on 2019年10月24日(木) 22:17 [ 編集 1 回目 ]
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
kyassy
記事: 13
登録日時: 2017年4月16日(日) 22:57
連絡を取る:

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by kyassy » 2019年7月20日(土) 14:39

ムノクラ様

お返事が遅くなりました。
バージョンを新しくして
もう一度再現してみましたが、ルビを付けるとやはり名前枠が横に広がってしまいます。

スクショを添付してみます。

Rubi_riru.jsの69行目に自動ルビ振りの登録をしてから実行しています。
ここが原因でしょうか…?

もし分かりましたら、急ぎませんのでお願い致します。
添付ファイル
image_D.png
image_C.png
image_B.png
image_A.png
アバター
kyassy
記事: 13
登録日時: 2017年4月16日(日) 22:57
連絡を取る:

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by kyassy » 2019年7月20日(土) 14:40

残りのスクショを添付致します。
添付ファイル
image_F.png
image_E.png
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by ジャングル » 2019年7月20日(土) 18:17

試しにやってみたら直りました。
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);


テキストの幅が広がっているので半分にします。
微調整はここでテキストの幅をいじってください。
アバター
kyassy
記事: 13
登録日時: 2017年4月16日(日) 22:57
連絡を取る:

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by kyassy » 2019年7月22日(月) 00:23

ジャングル様

返答ありがとうございます。
確かに!名前の枠幅を調整できる事が分かりました。

ありがとうございます。

ところが、また漢字が多い名前(文字数が多い)人物にルビを付けたところ
逆に枠の幅が狭く名前が切れてしまいます。

これはもうしょうがないのでしょうか…?
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by ジャングル » 2019年7月22日(月) 06:15

済みません。
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:
漢字以外の文字が入っていてもカウントするようにしました↑
また、予め定義とその場で定義が混ざっていても対応するようにしました
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: ルビを付けると名前枠が広がり困ってます…。

投稿記事by ジャングル » 2019年7月22日(月) 18:56

ルビの方のプラグインを書き換えました。
今の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
 
↓これは一部のアルファベットのときにバグが出ました(最新版をお試しください)
添付ファイル
Rubi_riru.js
(14.53 KiB) ダウンロード数: 27 回
最後に編集したユーザー ジャングル on 2019年7月23日(火) 06:52 [ 編集 1 回目 ]

“MV:質問” へ戻る