facebook

任意のフォントを利用する方法

RapidReportでは、帳票内で利用されるフォントを指定するには、 [フォント]>[フォント名]プロパティにフォントの種類を表すキーを指定します。 デフォルトで用意されているキーは[gothic]、[mincho]の2つです。 それぞれのキーに対応付けられる実際のフォントは、 各レンダラのSettingオブジェクトが持つFontMapというハッシュに定義されています。

各FontMapのデフォルトの内容を以下に示します。

レンダラ フォントのキー フォント
PDFレンダラ gothic MS-Gothic(論理フォント)
mincho MS-Mincho(論理フォント)
Excel(XLS/XLSX)
レンダラ
gothic MS ゴシック
mincho MS 明朝
直接印刷・プレビュー gothic MS ゴシック
mincho MS 明朝

利用するレンダラのFontMapに要素を追加することで、 任意のフォントを利用することが可能になります。

PDFレンダラでのフォント設定

PDFレンダラの設定オブジェクトであるPdfRendererSettingでは、デフォルトで MS-Gothic/MS-Mincho というフォントが設定されています。
※ バージョン4系では異なる設定が行われていました。互換性を確保する方法などについては「レンダラの仕様」を参照してください。

これは、PDFを閲覧する環境に MSゴシック/明朝 がインストールされているならこれを採用するという論理フォントですが、 あくまで物理フォントを埋め込んでいるわけではないため、実際にどのフォントが利用されるかは閲覧する環境に依存します。
※ Windows用のAdobeAcrobatReaderであれば MSゴシック/明朝 が採用されることを確認しています。

目的のフォントがインストールされていない環境や、任意の閲覧ソフトが利用された場合でも、 確実に指定したフォントでPDFの描画が行われるようにするには、フォントを埋め込む必要があります。

フォントの埋め込みを行うには、BaseFontオブジェクトを作成してFontMapに設定します。 例えば、[gothic]と[mincho]にそれぞれ[MSゴシック]と[MS明朝]を埋め込みフォントとして割り当てるには、 以下のように書きます。 (システムのフォントフォルダのパスが"C:\Windows\Fonts"であるという前提とします)

  // C#
  PdfRendererSetting setting = new PdfRendererSetting();
  setting.FontMap["gothic"] = BaseFont.CreateFont("C:\\Windows\\Fonts\\msgothic.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  setting.FontMap["mincho"] = BaseFont.CreateFont("C:\\Windows\\Fonts\\msmincho.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  PdfRenderer renderer = new PdfRenderer(stream, setting);
  ' VisualBasic
  Dim setting As PdfRendererSetting = New PdfRendererSetting()
  setting.FontMap("gothic") = BaseFont.CreateFont("C:\Windows\Fonts\msgothic.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
  setting.FontMap("mincho") = BaseFont.CreateFont("C:\Windows\Fonts\msmincho.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
  Dim renderer PdfRenderer = New PdfRenderer(stream, setting)
  // Java
  PdfRendererSetting setting = new PdfRendererSetting(); 
  setting.fontMap.put("gothic", BaseFont.createFont("C:\\Windows\\Fonts\\msgothic.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
  setting.fontMap.put("mincho", BaseFont.createFont("C:\\Windows\\Fonts\\msmincho.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
  PdfRenderer renderer = new PdfRenderer(stream, setting);

[gothic]と[mincho]以外にキーを追加することもできます。 例えば、[meiryo]というキーでメイリオフォントを利用するには以下のように書きます。

  // C#
  PdfRendererSetting setting = new PdfRendererSetting();
  setting.FontMap.Add("meiryo", BaseFont.CreateFont("C:\\Windows\\Fonts\\meiryo.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
  PdfRenderer renderer = new PdfRenderer(stream, setting);
  ' VisualBasic
  Dim setting As PdfRendererSetting = New PdfRendererSetting()
  setting.FontMap.Add("meiryo", BaseFont.CreateFont("C:\Windows\Fonts\meiryo.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED))
  Dim renderer PdfRenderer = New PdfRenderer(stream, setting)
  // Java
  PdfRendererSetting setting = new PdfRendererSetting(); 
  setting.fontMap.put("meiryo", BaseFont.createFont("C:\\Windows\\Fonts\\meiryo.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
  PdfRenderer renderer = new PdfRenderer(stream, setting);

BaseFont.CreateFontメソッドの詳細については、iTextまたはiTextSharpのドキュメントを参照してください。

※ PDFレンダラで外字を利用する方法については「レンダラの仕様」をご覧ください。

XLSレンダラでのフォント設定

XLSレンダラで、[meiryo]というキーでメイリオフォントを利用する例を以下に示します。

  // C#
  XlsRendererSetting setting = new XlsRendererSetting();
  setting.FontMap.Add("meiryo", "メイリオ");
  XlsRenderer renderer = new XlsRenderer(workbook, setting);
  ' VisualBasic
  Dim setting As New XlsRendererSetting
  setting.FontMap.Add("meiryo", "メイリオ")
  Dim renderer As New XlsRenderer(workbook, setting)
  // Java
  XlsRendererSetting setting = new XlsRendererSetting();
  setting.fontMap.put("meiryo", "メイリオ");
  XlsRenderer renderer = new XlsRenderer(workBook, setting);

直接印刷・プレビューでのフォント設定

.NETで直接印刷・プレビューを行うPrinterオブジェクトに、 [meiryo]というキーでメイリオフォントを利用する例を以下に示します。

  // C#
  GdiRendererSetting setting = new GdiRendererSetting();
  setting.FontMap.Add("meiryo", "メイリオ");
  Printer printer = new Printer(pages, setting);  
  ' VisualBasic
  Dim setting As New GdiRendererSetting
  setting.FontMap.Add("meiryo", "メイリオ")
  Dim printer As New Printer(pages, setting)  

レポートデザイナでのフォント設定

レポートデザイナで任意のフォントを選択可能にするには、 レポートデザイナの実行バイナリと同じ場所にある設定ファイル[setting.json]に、fontプロパティを追加します (extフォルダ内に任意のJSONファイルを作成して記述する方法でも設定可能です)。

例えば、[meiryo]というキーでメイリオフォントを利用する場合は、以下の赤字の部分を追加します。

  {
    font: [
      {key:"meiryo", font_name:"メイリオ"}
    ]
  }

デザイナを実行する環境に当該のフォントがインストールされていない場合は、 font_nameは省略することができます。省略した場合は[MS ゴシック]が利用されます。

複数のフォントを追加する場合はカンマ区切りで書きます。

  {
    font: [
      {key:"key1", font_name:"フォント1"},
      {key:"key2", font_name:"フォント2"},
      ...
    ]
  }

なお、設定ファイルが存在しない場合は作成してください。 ファイル全体は中カッコで囲む必要があり、 また、エンコーディングをUTF-8とする必要があります。

[setting.json]の書き方についての完全なドキュメントは「レポートデザイナの設定」にあります。