メインコンテンツまでスキップ

ユーザーフォント

yagisan-reportsでは、標準フォントとしてBIZ UDゴシック・BIZ UD明朝を同梱しています。 これ以外の任意のフォントを使用したい場合は、ユーザーフォント機能を使用します。

警告

一般的にフォントファイルは著作権法の保護対象です。 ユーザーフォント機能を使用する場合は、必ず使用するフォントの利用規約やライセンス等に従ってください。

使用できるフォント形式

  • TTF/OTF形式のフォントファイルが使用可能です。
    • バリアブルフォントやWebフォントはサポートしていません。
  • 日本語以外の言語のフォントも規格上は使用可能です。
    • ただし、テストが十分に行われているわけではありませんので、使用する場合は必ず動作確認を行ってください。
  • フォント形式に関係なく、RTL(右から左に書く言語)の帳票出力には対応していません。

グリフデータを作成する(強く推奨)

グリフデータとは、フォントファイルに含まれる文字(グリフ)の情報を抽出し、yagisan-reports用に事前処理したデータファイルです。

グリフデータを作成するには、devtoolsを使います。 出力するグリフデータの拡張子は .glyphdata としてください(別の拡張子でも動作しますが、.glyphdata を推奨します)。

npx yagisan glyphdata generate path/to/myfont.ttf -O myfont.glyphdata

なお、グリフデータを作成しなくてもユーザーフォント機能を使うことは可能ですが、大量ページを出力する際の処理パフォーマンスが低下したり、「チタタㇷ゚」のような結合文字(この例では、ㇷ゚の部分が結合文字に該当)が正しく表示されないなどの問題が発生する可能性があります。

注記

グリフデータは将来のバージョンで廃止したいと考えていますが、現時点で具体的な対応計画はありません。

ユーザーフォントを組み込む

ユーザーフォントを使用するには、まず帳票エンジンへフォントの登録を行います。

const YagisanReports = require('@yagisan-reports/sdk');

const engine = YagisanReports.createEngine();

// フォントデータのロード
const normalFont = await fetch('path/to/myfont-normal.ttf').then(res => res.arrayBuffer());
const normalGlyphdata = await fetch('path/to/myfont-normal.glyphdata').then(res => res.arrayBuffer());
const boldFont = await fetch('path/to/myfont-bold.ttf').then(res => res.arrayBuffer());
const boldGlyphdata = await fetch('path/to/myfont-bold.glyphdata').then(res => res.arrayBuffer());

// フォントの登録
engine.registerUserFont({
name: "myfont",
normal: {
font: normalFont,
glyphdata: normalGlyphdata,
},
bold: {
font: boldFont,
glyphdata: boldGlyphdata,
},
});

帳票エンジンにフォントを登録すれば、レイアウトXMLやスタイルXMLから使用できるようになります。

<Text fontFamily="myfont">ユーザーフォントを使っています</Text>
備考

registerUserFont()gothicmincho といった標準フォント名を指定した場合、標準フォントが上書きされます。

ユーザーフォント機能の注意点

yagisan-reportsでは「標準フォント(BIZ UDゴシック・BIZ UD明朝)で日本語テキストが出力できること」を確認するテストは十分に行っていますが、あらゆるフォント・言語での動作を網羅的にテストしているわけではありません。 そのため、ユーザーフォント機能を使用する際には、本番運用の前に十分な動作確認を行うことを強く推奨します。

もし、ユーザーフォント機能をご使用の際に何らかの問題が発生した場合、お問い合わせいただければ、開発チームで可能な範囲で調査を行います。 ただし、以下の点にご注意ください。

  • 問題が解決することを保証するものではありません。
  • プレミアムサポートをご契約いただいていない場合、弊社側の都合により、調査に長期間を要したり、調査依頼自体をお断りする場合があります。
  • フォントファイルの利用規約やライセンス等により、調査ができない場合があります。
  • 調査の結果、不具合ではなく機能の追加・強化である場合には、別途対応費用が必要となる場合があります。その場合は事前にご連絡いたします。