ruby-graphvizの画像で日本語のみが文字化けする問題
ご閲覧いただき、ありがとうございます。
様々なサイトを見て試しましたが、解決の糸口を見つけられず、どうしてもgraphvizの日本語の文字化けが解消されなかったので質問しました。
解消したいこと
ruby-graphvizを使った画像生成ににおいて、日本語のみが文字化けしてしまう問題を解決したいです。英語は文字化けしません。
日本語が一文字ずつが、以下のように文字化けします。
65
BD
これらを、ひとまとまりで、□で囲まれています。
試したこと
- nodeやedgeのフォント指定する
【結果】半角英字のみフォントが適応されるが、日本語は文字化け。
(例:「Amazonで買う」というテキストのうち、amazonの部分だけがフォント適応される。)
ソースコード
アクションでgenerate_graphを定義し、ブラウザにアクセスしたときに画像を表示しています。
require "ruby-graphviz"
def generate_graph
@problem = Idea.includes([:children]).first
return unless @problem
g = GraphViz.new(:G, type: :digraph, fontname: 'MEIRYO')
g.node[:fontname] = "MEIRYO"
g.edge[:fontname] = "MEIRYO"
# 親子関係を示す再帰メソッドを定義
def add_idea_and_children(graph, idea)
node = graph.add_nodes(idea.name)
idea.children.each do |child|
child_node = add_idea_and_children(graph, child)
graph.add_edges(node, child_node) if child_node
end
node
end
add_idea_and_children(g, @problem)
image_data = g.output(png: String)
send_data(image_data, type: 'image/png', disposition: 'inline')
end
バージョンなど
ruby 3.2.2
Rails 7.1.2
使用しているgem
ruby-graphviz
0