LoginSignup
2

More than 5 years have passed since last update.

RMagickで日本語のフォントが全然使えない件

Last updated at Posted at 2018-07-15

多分、Macの環境設定でどこか失敗していて、フォントを指定できても日本語が全然出力されない:frowning2:

試行錯誤せど、試行錯誤せど、上手くいかん🙅‍♀️

。。。

ここで、神降臨
komasaru/rmagick_available_fonts.rb
実行可能なフォントを全て画像に出力するという、、、、!!(暇なのかな?)

出力を日本語にして、エラーはrescueするように書き換えて、、、

kami.rb
require 'RMagick'

F_SIZE = 24               # フォントサイズ (pt)
FILE   = "font_list_jp.png"  # 出力ファイル名

class RmagickAvailableFonts
  # フォント一覧画像作成
  def make_image
    fonts = Magick.fonts                                               # フォント一覧
    image = Magick::Image.new(600, (F_SIZE + 20) * fonts.size + 10) {  # 画像オブジェクト
      self.background_color = '#DDDDCC'
    }
    draw  = Magick::Draw.new                                           # 描画オブジェクト

    begin
      # 全フォントについて LOOP
      fonts.each_with_index do |f, i|
        begin
          # コンソール出力
          puts "#{sprintf("%3d", i + 1)}: #{f.name}"

          # 描画
          # (次のフォントは 20pt 下へずらす)
          draw.annotate(image, 0, 0, 10, 10 + (F_SIZE + 20) * i, "#{i + 1}: ああ") do
            self.font      = f.name                    # フォント名
            self.fill      = 'black'                   # フォント塗りつぶし色(黒)
            self.stroke    = 'transparent'             # フォント縁取り色(透過)
            self.pointsize = F_SIZE                    # フォントサイズ
            self.gravity   = Magick::NorthWestGravity  # 描画開始位置(左上)
          end
        rescue => e
          p "「#{f.name}」は失敗した"
        end
      end

      # 画像作成
      image.write(FILE)
    rescue => e
      STDERR.puts "[ERROR][#{self.class.name}.make_image] #{e}"
      exit 1
    end
  end
end

# フォント一覧画像作成
obj_main = RmagickAvailableFonts.new
obj_main.make_image

日本語対応フォントを2つ発見した!!
image.png
image.png

確認して見ると、

require 'RMagick'

p Magick.fonts[2]
# <struct Magick::Font name="AppleMyungjo", description="AppleMyungjo Regular", family="AppleMyungjo", style=UndefinedStyle=0, stretch=UndefinedStretch=0, weight=0, encoding=nil, foundry=nil, format="ttf"> 

p Magick.fonts[13]
# <struct Magick::Font name="ArialUnicode", description="Arial Unicode MS", family="Arial Unicode", style=UndefinedStyle=0, stretch=UndefinedStretch=0, weight=0, encoding=nil, foundry=nil, format="ttf"> 

[2]は伸ばし棒が文字化けしてしまったので、[13]を使うことにした。
(まあ、モックなら何でも良いかなと)

誰か、Rmagickのフォントの設定方法知っている人いたら教えてください〜〜〜〜😱

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
2