Connect 経由の CJK 縦書き
Connect 経由の CJK 縦書き
「Connect 経由の CJK 縦書き」という見出しのセクションこのレシピでは、Connect トランスポート経由で、縦書きメトリクスを持つ CJK CIDFont を埋め込みます。これにより、エンジンは CIDFont 辞書に PDF 2.0 の縦書きメトリクスエントリ(グリフごとの /W2 とデフォルトの /DW2)を出力し、上から下へ並ぶグリフスタックをレンダリングします。CJK フォントの埋め込みは Enterprise ティア です。CJK フォントツールは class_exists() プローブで検出され、nextpdf/premium がサーバーと並んでインストールされている場合にのみ登録されます。エンジンが縦書きメトリクスを出力するのは、アクティブな CID エンコーディングが縦書き Identity エンコーディングである場合に限られ、横書きランには影響しません。
インストール
「インストール」という見出しのセクションcomposer require nextpdf/servertools/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 エンコーディングが選択された場合にのみ辞書エントリを出力します。
API サーフェス
「API サーフェス」という見出しのセクション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 がサーバーと並んでインストールされている場合にのみ登録されます。
Connect 固有事項
「Connect 固有事項」という見出しのセクショントランスポートの利用可否(MCP / REST / gRPC)
「トランスポートの利用可否(MCP / REST / gRPC)」という見出しのセクションこれは、MCP の tools/call、REST ツールエンドポイント、gRPC サービスのいずれからでも同じように呼び出せます。3 つはいずれも共有のツールエグゼキューターを経由します。
HITL リスクティア
「HITL リスクティア」という見出しのセクションフォント登録、エンコーディング選択、テキスト出力は注意レベルです。ファイルへ書き込む出力では承認が必要ですが、base64 モードでは不要です。詳しくは /connect/hitl-risk-tiers/. を参照してください。
確認ゲートの JSON エンベロープ
「確認ゲートの JSON エンベロープ」という見出しのセクションファイル書き込みの出力パスがゲートされている場合、ゲートはチャレンジエンベロープと、ツール名・ノンス・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/ — リスクモデルとゲート。