Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

多分、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のフォントの設定方法知っている人いたら教えてください〜〜〜〜😱

yujiG
なんだこのクソコミットは🤬って思うと、大概僕です😮
linkbal
街コンポータルサイト「machicon JAPAN」やマッチングサービス「CoupLink」などを開発・運営しています。
https://linkbal.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away