1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TyranoScriptの禁則処理時の文字表示を改善する

Last updated at Posted at 2019-01-05

2019.01.18追記
ティラノスクリプトV474以上をお使いの場合は本記事の部分はすでに改善されています。
https://twitter.com/shikemokumk/status/1086124376091545600

三行でまとめると

  • TyranoScriptのメッセージ改行で気になる挙動があった。
    • 画像の通り、文字表示時に「いるが、」の「が」の字が行末に一瞬表示されるが、そのあと次の行に移動してしまう。
  • 原因は「、」や「。」を文頭においてはならないという日本語ルールを守るため。
  • noymer/tyranoscript-text-line-breakを使えば改善する。

ezgif-4-e5c998a6ae53.gif

概要

2018年冬コミで仮想国のリブラというゲームの体験版を頒布しました。
ゲーム作成にはTyranoScriptを利用しました。簡単にノベルゲームが作れる優れもので、エンジニアとしてもwebベースの技術が使われているので非常にとっつきやすいです。
しかし時折メッセージの行末で気になる挙動がありました。
画像の通り、文字表示時に「いるが、」の「が」の字が行末に一瞬表示されるが、そのあと次の行に移動してしまう、というものです。

原因

  • TyranoScriptにおいて、メッセージは一文字ずつ文字を追加して表示している。

  • 例文として「ノイズキャンセリングイヤフォンをして読書している女子もいるが、騒がしいのは音声だけじゃない。」というメッセージを表示する時、
    「......いるが」までは一行に収まるのだが「、」を足すと一行に収まらなくなる。

  • 「、」を二行目の文頭に表示するのは「禁則処理」1という日本語のルール反する。よって「、」を追加したタイミングで、「......いるが、」の「が、」が二行目に移動してしまう。

  • これで「が」が一行目末尾から二行目の頭に移動する。

対策(プラグイン実装説明)

  • 一文字ずつ文字を追加して表示するのではなく、まず全部の文字を見えない状態で追加して、そのあと一文字ずつ見えるようにすれば良い。そうすればあらかじめ「......いるが、」の「が、」は二行目の状態で文章が表示される。
  • noymer/tyranoscript-text-line-breakを使えば改善する。

--
以下からは技術的説明になります

before

after

締め

  • TyranoScript本体にもプルリクエストを投げるといいかなー、と思ってます。
  1. 禁則処理とは、句読点(。、)や閉じ括弧(」』)】など)と言った文字は、文章の行頭に位置させてはならないというルールのこと。禁則処理 - Wikipedia

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?