查看: 1750|回复: 3

[已经过期] 怎样让字体能够自动替换?

[复制链接]
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2015-5-25 18:42:32 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
问题如图所示:
RPG Maker VX Ace 提问区 - Powered by Discuz!.jpg
怎样让这些“□”替换成其他字体下的日文字呢?
用头画头像,用脚写脚本
梦石
3
星屑
3605
在线时间
2492 小时
注册时间
2014-10-5
回帖
1694

开拓者剧作品鉴家

发表于 2015-5-25 19:27:38 | 显示全部楼层
找一个日文字体粘贴进去(但是中文还有木有就不清楚了)

点评

但是这个要怎么操作呢?我不懂脚本。  发表于 2015-5-25 19:47
请参考中英双字体脚本,把英文字符替换为所有片假字  发表于 2015-5-25 19:45
不是这个意思……我是希望中文能够用一种字体,日文能够自动替换成另一种……  发表于 2015-5-25 19:40
回复

使用道具 举报

梦石
3
星屑
3605
在线时间
2492 小时
注册时间
2014-10-5
回帖
1694

开拓者剧作品鉴家

发表于 2015-5-25 19:50:32 | 显示全部楼层
本帖最后由 长弓巡洋集团 于 2015-5-25 19:53 编辑

[pre lang="ruby"]$_PS0 = {} if $_PS0 == nil  
$_PS0["Draw_Text_DF"] = 20120127.2
module PS0
  module Draw_Text_DF
    DO_PRE_CHECK = true
    Font.default_name = "simhei"
    ENG_FONT = "calibri"#(变为日文字体)
    DO_CHANGE = 0
    DRAW_TYPE = 0
    REG1 = "0-9A-Za-z "  #(在这行写入需要的片假名)               
    REG2 = ";:?!@#%^&*(){}[]=-+_/|,.<>" #(在这行写入需要的平假名)   
    REG3 = "\"\'\$\\"  #(在这行写入需要的特殊符号)   
    REG = /[#{REG1 + (REG2+REG3).gsub!(/./) { "\\" + $& }}]/
  end
end
class Bitmap
  alias old_draw_text draw_text
  def draw_text(*args)
   if self.font.name != Font.default_name && PS0::Draw_Text_DF::DO_CHANGE == 1
    old_draw_text(*args)
  else
     last_font_name = self.font.name
     if args[0].is_a?(Rect)
     rect, str, align = args[0..2]
     x, y, width, height = rect.x, rect.y, rect.width, rect.height
    else
      x, y, width, height, str, align = args[0..5]
    end
    str = str.to_s
    align = 0 if align.nil?
    if PS0::Draw_Text_DF::DO_PRE_CHECK == true
      if str.scan(PS0::Draw_Text_DF::REG).size == 0
        old_draw_text(*args)
      elsif str.scan(PS0::Draw_Text_DF::REG).size == str.size
        change_to_eng_font
        old_draw_text(*args)
      else
        case PS0::Draw_Text_DF::DRAW_TYPE
        when 0 ; draw_text_1by1(x, y, width, height, str, align)
        when 1 ; draw_text_npass(x, y, width, height, str, align)
        end
      end
    else
      case PS0::Draw_Text_DF::DRAW_TYPE
      when 0 ; draw_text_1by1(x, y, width, height, str, align)
      when 1 ; draw_text_npass(x, y, width, height, str, align)
      end
    end

    self.font.name = last_font_name
  end
  end
  def draw_text_1by1(x, y, width, height, str, align)
    last_font_name = self.font.name
    ox = 0
    if align == 0
      bx = x
    else
      str1 = str.clone.gsub!(PS0::Draw_Text_DF::REG)            { "" }
      str2 = str.clone.gsub!(/(?!#{PS0::Draw_Text_DF::REG})./)  { "" }
      str_width = text_size(str1).width
      change_to_eng_font
      str_width += text_size(str2).width
      case align
      when 0
        bx = x
      when 1
        bx = x + (width - str_width) / 2
      when 2
        bx = x + (width - str_width)
      end
    end
    str += "\P"
    while (!(c = str.slice!(/./m)).nil?)
      self.font.name = last_font_name
      change_to_eng_font if c.slice(PS0::Draw_Text_DF::REG)
       if c == "\P"
        c = ""
      else
        old_draw_text((bx + ox), y, width, height, c, 0)
        ox += text_size(c).width
      end
    end
  end
  def change_to_eng_font
    self.font.name = PS0::Draw_Text_DF::ENG_FONT
  end
end[/pre]

看括号里的注释
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

 楼主| 发表于 2015-5-25 20:21:26 | 显示全部楼层
@长弓巡洋集团
怎样让字体能够自动替换? - RPG Maker VX Ace 提问区 - 66RPG - Powered by Discuz!..png
在REG里输入假名以后就变成这样了……为什么呢?

点评

中日通吃的东西,例如微软雅黑和幼圆都不错  发表于 2015-6-18 14:22
好吧……  发表于 2015-5-26 22:30
后面也要改,那就无解了(战力不够)  发表于 2015-5-26 06:53
用头画头像,用脚写脚本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部