コンテンツにスキップ

Connect 経由の CJK 縦書き

このレシピでは、Connect トランスポート経由で、縦書きメトリクスを持つ CJK CIDFont を埋め込みます。これにより、エンジンは CIDFont 辞書に PDF 2.0 の縦書きメトリクスエントリ(グリフごとの /W2 とデフォルトの /DW2)を出力し、上から下へ並ぶグリフスタックをレンダリングします。CJK フォントの埋め込みは Enterprise ティア です。CJK フォントツールは class_exists() プローブで検出され、nextpdf/premium がサーバーと並んでインストールされている場合にのみ登録されます。エンジンが縦書きメトリクスを出力するのは、アクティブな CID エンコーディングが縦書き Identity エンコーディングである場合に限られ、横書きランには影響しません。

Terminal window
composer require nextpdf/server

tools/list 呼び出しで、Enterprise CJK フォントツールが存在することを確認します。詳しくは /connect/tool-catalog/. を参照してください。

縦書きモードの CIDFont は、/W2(グリフごと)と /DW2(デフォルト)の縦書きメトリクスを使用します(ISO 32000-2 §9.7)。CMap は横書きまたは縦書きモードを選択し(ISO 32000-2 §9.7)、縦書きモードではグリフの送りが縦軸方向になります(ISO 32000-2 §9.7)。パイプラインは、フォント登録時にそのフォントの縦書きメトリクステーブルを解析し、縦書き CID エンコーディングが選択された場合にのみ辞書エントリを出力します。

tools/list を使い、稼働中のレジストリでツール名を検証します。正式なカタログは /connect/tool-catalog/. です。このレシピでは、ツール数をあらためて明記しません。

ドキュメントを作成し、CJK フォントを登録して、縦書きエンコーディングを選択します。

{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "add_cjk_font",
"arguments": {
"document_id": "<id>",
"family": "NotoSansCJKjp",
"source": "/usr/share/fonts/opentype/noto/NotoSansCJKjp-Regular.otf",
"subset": true
}
}
}

縦書きエンコーディングを選択し、フォントを設定して縦書きランを書き込んだ後、CIDFont 辞書を出力して確認します。

{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "set_cid_encoding",
"arguments": { "document_id": "<id>", "font_key": "NotoSansCJKjp", "encoding": "/Identity-V" }
}
}

出力される CIDFont 辞書には /W2/DW2 が含まれます。同じソースを横書きエンコーディングでレンダリングした場合は、どちらも省略されます。違いはエンコーディングによるゲートのみであり、この点により、ここでの structural 再現性プロファイルは実態に即したものになります。

  • フォントに縦書きメトリクステーブルがない場合。 フォントツールが警告を出します。これらのテーブルを同梱する CJK フォントを選んでください。Latin のみのフォントには存在しません。
  • 縦書きメトリクスを持たないフォントで縦書きエンコーディングを選択する と、エラーになります。横書きエンコーディングへフォールバックするか、別のフォントを選んでください。
  • 横書きエンコーディングがアクティブな状態で縦書きテキストを要求する と、エラーになります。最初の縦書きテキストを出力する前に縦書きエンコーディングを選択してください。
  • 最初のテキスト出力後にエンコーディングを切り替える と、エンコーディング凍結エラーとして拒否されます。フォント登録直後にエンコーディングを設定してください。
  • ツールが存在しない場合。 nextpdf/premium がない場合、Enterprise CJK フォントツールは登録されず、呼び出しは未知ツールエラーで失敗します。

フロントマターの予算は、ドキュメント上の上限値です。サブセット化により、グリフごとのメトリクス配列のサイズが制限されます。サブセット化を無効にするのは、縦書きランで、サブセットから除外されるグリフが必要な場合のみにしてください。

一般的な Connect トランスポートのガイダンス以外に、特記すべき事項はありません。

主張条項reference_id
縦書き CIDFont による /W2/DW2 メトリクスの使用ISO 32000-2 §9.7
CMap による横書きと縦書きモードの選択ISO 32000-2 §9.7
縦書きモードでの縦軸方向のグリフ送りISO 32000-2 §9.7

縦書きメトリクスエントリの出力は、引用した条項を実装したものです。これは全面的な準拠を主張するものではありません。ドキュメント全体の準拠はバリデーターが判定します。

CJK フォントの埋め込みは Enterprise ティアです。CJK フォントツールは、nextpdf/premium がサーバーと並んでインストールされている場合にのみ登録されます。

これは、MCP の tools/call、REST ツールエンドポイント、gRPC サービスのいずれからでも同じように呼び出せます。3 つはいずれも共有のツールエグゼキューターを経由します。

フォント登録、エンコーディング選択、テキスト出力は注意レベルです。ファイルへ書き込む出力では承認が必要ですが、base64 モードでは不要です。詳しくは /connect/hitl-risk-tiers/. を参照してください。

ファイル書き込みの出力パスがゲートされている場合、ゲートはチャレンジエンベロープと、ツール名・ノンス・300 秒の TTL に紐付いた単回使用トークンを返します。arguments._confirmation_token を付けて再度呼び出します。詳しくは /connect/hitl-risk-tiers/. を参照してください。

  • /cookbook/connect/font-typography/ — 横書きテキストとフォント選択の基礎。
  • /cookbook/connect/conformance-mode/ — 縦書き CJK ランでも PDF/UA-2 のタグ付けは引き続き必要。
  • /connect/tool-catalog/ — ティアごとのツールセット算出。
  • /connect/hitl-risk-tiers/ — リスクモデルとゲート。