6

Rの書体とPDF出力に問題があります。このWindowsマシンには、Helveticaがなく、デバイスで使用されているフォントは、以下に示すようにArialのようです。単純な問題は、Arialが(私が望むように)使用されているが、PDFファイルを編集するとHelveticaが使用されているということです。Rに正しい名前をPDFファイルに書き込むようにするにはどうすればよいですか。pdf(...,family="Arial")このファミリは不明であるため、機能しません(grDevicesバージョン2.15.1)。

または、後でこのフォントをPDFに置き換えて、必要なフォントでファイルを作成できますか?

R-PDF-出力 R出力:Arial書体

この記事との比較:ArialとHelvetica ここに画像の説明を入力してください

4

4 に答える 4

3

R-3.1.0以降、これははるかに簡単です。ここで、Arialフォントを取得するには、次のように設定しfamily="ArialMT"ます。

pdf("Arial.pdf", height=0.3, width=1.45, family="ArialMT")
grid::grid.text("CGJQRSafrst1237")
dev.off()

2014年4月のR-3.1.0リリースノートからの引用:

pdf()およびpostscript()デバイス用の新しいファミリ「ArialMT」があります。これは、Monotype TrueTypeフォント(ジャーナルから要求されることがある)にアクセスできるビューアでのみ正しくレンダリングされます。

PDFが表示される場所で正しくレンダリングされるようにするには、必要なArialフォントもドキュメントに埋め込む必要があります。これを行う簡単な方法の1つは次のとおりです。

library(extrafont)
loadfonts()  ## Really only needed the first time you use extrafont
## Modify this to point to the corresponding Ghostscript executable on your own machine
Sys.setenv(R_GSCMD = "C:/Program Files/gs/gs9.07/bin/gswin64c.exe")
embed_fonts("Arial.pdf")
于 2016-03-24T16:10:29.537 に答える
2

コメントの1つに記載されているように、ベース14フォントを埋め込む必要はなく、Helveticaはこれらのフォントの1つです。PDFコンシューマーはそのようなフォントの代わりを提供することになっており、Arial(またはArial MT)はHelveticaの場所。

私はRに精通していませんが、後でフォントを埋め込むことができるようです

編集:この質問の回答 は、後でghostscriptを使用してフォントを埋め込む方法を説明しています。GSがHelvetica(またはArial)を目的のフォントのバージョンにマップしていることを確認してください。私にそれを検索させてくれたGavinSimpsonに感謝します:)

于 2012-10-24T13:50:15.713 に答える
2

で使用する新しいフォントファミリを設定する必要がありますpdf()。これには、使用するフォント用のAdobe Font Metricファイル(*.afmファイル)が必要です。.ttyファイルをファイルに変換するか、まだ持っていない場合は、interwebでArialのファイルを.afm見つけることができます。.afm

Arial <- Type1Font(family = "Arial",
                   metrics = c("ArialMT.afm",
                               "arial-BoldMT.afm", 
                               "Arial-ItalicMT.afm",
                               "Arial-BoldItalicMT.afm"))

文字ベクトルに関連ファイルmetricsへのパスが含まれている場合、ファイルは次の順序で指定する必要があります。.afm

  1. 素顔
  2. 太字
  3. イタリック体
  4. 太字のイタリック体

この関数を使用して、pdfFonts()これらの新しいフォントにマッピングを追加します

pdfFonts(Arial = Arial)

Arial以前に作成されたオブジェクトはどこにありますかType1Font()

最後のステップは、次のように定義された既存のファミリの1つを参照するfamily引数を使用することです。pdf()pdfFonts()

pdf("testArial.pdf", family = "Arial")
plot(1:10, 1:10)
dev.off()

システムにArialがなく、ファイルが多すぎるため、これを試したことはありませんが.afm、いくつかのソースからこれをまとめました。

  1. Paul Murrell and Brian Ripley(2006)PostScriptおよびPDFグラフィックスの非標準フォント。Rニュース6(2):41-47。 PDF
  2. 今年初めのRメーリングリストへのDavidL.Carlsonによる投稿

システムのセットアップ方法に応じた代替手段は、CairoベースのPDFデバイスです。これは、システムの機能を使用して、名前だけに基づいてフォントを識別およびロードするためです。詳細について?cairo_pdfは、の「カイロフォント」セクションを?X11参照してください。

于 2012-10-24T12:18:05.283 に答える
1

デフォルトでは、Rはフォントを埋め込みません。Helveticaを使用することを指定するだけです。フォントを埋め込むのがおそらく最善です。cairo_pdfこれを行うには、デバイスを使用するかextrafont、通常のデバイスと一緒にパッケージを使用するかの2つの方法がありpdfます。cairo_pdfははるかに単純ですが、出力は。とは微妙に異なりますpdf

于 2012-10-24T12:28:18.697 に答える