2012-06-18 11 views
5

Ruby on RailsPrawn宝石と私は、中国語、日本語、キリル文字を持っていると間違って表示されるという問題を思いつきました。 私はそれが"私はフォントを生成しているので、私は指定する必要がありますので、どのフォントをpdfテキストでレンダリングすべきかを尋ねました。"中国語、キリル文字を処理するpdfを生成するための任意のフォント...?

これは問題ではありませんが、私の文書にはgTLD supportsの可能なすべての異なる文字が含まれることになります。

質問1:

あなたは可能文字(アジア、ヨーロッパ、シンボル、...)限り多く含まれるPDFドキュメントを生成するための任意のフォントを知っていますか?理想的には、gTLDがサポートするすべての文字。

は、私は、デフォルトでエビgkai00mp.ttfを含むが、その中国の文字に焦点を当てていることを知っていると私はそれらすべてを含めるように可否を探しています(ポケモンのように、それらすべてをキャッチするようになった。私は、私は知っていますあまりにも多くを求めていますが、クライアントはこの文書を開いたときに、まだ...)

もう一つの問題は、次のとおりです。

質問2

は、PDFでの私のフォントを含むエビによって生成されたPDFですそれで、他のコンピュータがそれを開くと、そのフォントは存在しますか?これはデフォルトの標準ですか?または、この機能を確実に/強制する必要がありますか?

+0

[クロスポストしない](http://superuser.com/questions/438257/pdf-fonts-that-include-all-possible-gtld-chars)ください。私はあなたの質問がここでは少し異なりますが、本質的には同じことを知っています。この問題を根底で、すなわちRubyとPrawnに取り組むことが最善でしょう。 – slhck

+0

@slhck、それは同じ質問ですが、私は答えが異なるグループを形成するのを聞いていません。ここで、Prawn(または他のpdf変換)の宝石を扱っていた開発者からの回答を期待し、スーパーユーザではなく、私は理論的な解決策が、プログラム環境でPDFを使って作業している人たちのフォームを聞きたいと思っています...それだけで私はSUより少ない回答しか期待していません。 – equivalent8

答えて

8

[OK]をクリックします。 SuperUserに私は(もっと理論的な方法での回答に焦点を当てた)同様の質問をし、そして主な結論は、その答えた:

は、Unicodeの全体をサポートして単一のフォントはありませんが。

しかし、幸いなことにpdfはフォールバックフォントをサポートしており、プルーンも宝石です。ここ

は私のソリューションです:

1 /あなたのフォールバックフォントを設定

def fallback_fonts 
    ["dejavu", "times", 'kai', 'action_man'] 
end 

2 /コール

font("Helvetica", size: 14) do #keyword "Helvetica" is specified in Prawn by default 
    text "址 foo", :fallback_fonts => fallback_fonts 
end 

ここでは、デフォルトではPrawnに含まれているフォントを使用していますが、この方法で異なる文字セットを持つ複数のフォントを追加し、フォールバックとして指定することができます

たとえば、あなたのRailsのルートは、そこからそれらを含めるだけです。

注記 "Kai"フォントでは、私はスタイリングなしで通常、斜体、太字、bold_italicに同じフォントを指定しています。私はこれを目的にしています。私が経験したことから、gkai00mpフォントに太字または斜体がありません。したがって、斜体/太字のcharがレンダリングされると、通常のスタイルで印刷されます(レンダリングしないよりも優れています)。

私は

font_families.update(
     "kai" => { 
     :normal => { :file => kai, :font => "Kai" } 
     } 
    ) 

...フォント(exaple「カイ」)のために太字/斜体を指定していない...あなたはフォールバックをします会へのスタイルの文字をレンダリングしようとすると...あなたは非A入れたい場合は:

text "<b>址 foo</b>", :fallback_fonts => fallback_fonts, :inline_format=>true 

...私は

Prawn::Errors::UnknownFont in Foo 

    is not a known font. 

ノート2を取得しますこれはしかし、フォームのルビー1.9を動作しますあなたは、ファイルの先頭にエンコーディングを配置する必要があり、ファイル

# coding: utf-8 

class Foo 
... 
end 

ルビーするsciiの文字。 Rubyのは1.8.xのソースはruby 1.9 walkthrough by P.C. にその上で(もっとASCIIだけを扱うことができますが、Railsの中で、あなたはI18N(国際化)

ノート3

エビは本当に素晴らしいドキュメント、githubのからわずかgitのクローンエビを持って使用する必要がありますそして./manuals 2014年

2

Googleは能登のフォント(https://www.google.com/get/noto/)をリリースしましたをチェックし、それが言語のすべての種類のサポートが含まれています。あなたが希望する言語をサポートするために、TTF、OTFフォントを使用するか、または完全なコレクションのTTCを埋め込むことができます。 を中国語、日本語、韓国語の場合、NotoSansCJK完璧に動作します。

+0

面白い、これを知っておいてよかった。私はもはやこの質問に関連したプロジェクトでは働いていませんが、次回はこのポータブルを見て、あなたのソリューションを使用しようとします。 – equivalent8

関連する問題