ASCII文字と日本語とでフォントを変更
Windows XPの標準機能(?)である、font = ["欧文フォント", "日本語フォント"]
指定時に欧文は欧文フォントで、日本語は日本語フォントで表示できた機能の
Windows Vistaでの疑似的再現。
※Vistaでは第1フォントで表示できない場合はそれで終わりになってしまいます。
(第1フォントが存在しない場合のみ、第2フォントが適用される。)
※draw_textベースモジュール、draw_text拡張 カスタムが必要です。
変更点
2008:11:23
・ベースモジュールを別スクリプトとして定義
2009:04:24
・draw_text2を別モジュール化
#==============================================================================
# ASCII文字と日本語とでフォントを変更 by 貪藻矢射妥←
#------------------------------------------------------------------------------
#
# Windows XPの標準機能(?)である、font = ["欧文フォント", "日本語フォント"]
# 指定時に欧文は欧文フォントで、日本語は日本語フォントで表示できた機能の
# Windows Vistaでの疑似的再現。
#
# ※Vistaでは第1フォントで表示できない場合はそれで終わりになってしまいます。
# (第1フォントが存在しない場合のみ、第2フォントが適用される。)
#
#==============================================================================
# 変更履歴
#
# 2008:11:23
# ・ベースモジュールを別スクリプトとして定義
#
# 2009:04:24
# ・draw_text2を別モジュール化
module DIAMOND
include DRAW_MSG
#--------------------------------------------------------------------------
# ● 文字の描画 ASCII文字と日本語とでフォントを変更 Ver
# rectr : 全体の表示領域
# text : 表示文字
# font : 表示フォント群
# ["第1フォント", "第2フォント"(,"デフォルトフォント")]
# align : 表示位置
#--------------------------------------------------------------------------
def draw_text_twin(rectr, text, font, align=0)
if font.size != 3
font[2] = Font.default_name
end
font1 = [font[0], font[2]]
font2 = [font[1], font[2]]
root_font = self.contents.font.name
# 表示待ちのメッセージがある場合
if text != nil
# c に 1 文字を取得 (文字が取得できなくなるまでループ)
while text != ""
c = text.slice!(/./m)
# ASCII文字の場合
if c[1] == nil
self.contents.font.name = font1
else
self.contents.font.name = font2
end
# 文字を描画
draw_text2(rectr, c, align)
# x に描画した文字の幅を加算
rectr[0] += self.contents.text_size(c).width
end
end
self.contents.font.name = root_font
end
end
|
○使用方法
self.contents.draw_text(x, y, width, heigth, text, align)
の代わりに
rectr = [x, y, width, heigth]
draw_text_twin(rectr, text, font[, align])
を指定する
変数 |
内容 |
rectr |
文字の描画位置です
※Rect.new()ではなく、ただの配列で持ちます |
text |
表示文字。説明はいらないかと・・・ |
font |
表示フォント群
["第1フォント", "第2フォント"(,"デフォルトフォント")] |
align |
表示位置(省略可能です。) |
※表示フォント群のデフォルトフォントは省略可能です。
(その場合、デフォルトのフォントが自動的に代入される。)
※実は第4フォント以降を設定しても意味がないという使い勝手の悪い作り・・・
※ちなみに、日本語でも常用外漢字などで特定のフォントでは表示できない漢字の
場合、やっぱり何も表示されずに終わってしまいます。
(こればっかりは本当にどうしよもない・・・)
戻る