安全な SVG カラーグリフレンダリング

DrawRegisteredColorGlyph は、制限された OpenType SVG グリフドキュメントを、ブラウザ、スクリプトエンジン、外部 SVG ランタイムを起動せずに、コンパクトな PDF パス演算子に直接変換できます

ネイティブプロファイル

プロファイルは、svg と g コンテナ、および path、rect、circle、ellipse、line、polyline、polygon 幾何を受け入れます

パスデータは、絶対と相対の move、line、horizontal、vertical、cubic、smooth cubic、quadratic、smooth quadratic、close コマンドをサポートし、二次セグメントは 3 次 PDF 曲線に変換されます

単色と境界付きベクトルグラデーションは、塗りルール、単色またはグラデーションのストロークスタイル、不透明度、クリップパス、Alpha / Luminosity のソフトマスク、可視性、変換、ローカルな #id 再利用とともに、グループを通じて継承できます

PNG と JPEG の画像ノードは、境界付き Base64 data ペイロードとしてのみ受け付けられ、Image XObject として登録されます。PNG のアルファはソフトマスクに保持されます

プレーンな UTF-8 と gzip 圧縮の SVG テーブルドキュメントは、同じ境界付きパスを使用します

安全性とフォールバック

パーサーは、圧縮入力を 8 MiB、展開入力を 32 MiB、生成される PDF オペレータを 16 MiB、要素数を 4,096、ネストを 64、パス値を 100,000 に制限します

ドキュメントタイプ、スクリプト、イベント属性、外部リソース、未対応の data メディアタイプ、@import、外部 url() 参照、外部 use ターゲット、未対応の要素は、登録の前に fail closed します

グラデーション展開・ローカル再利用・マスキング・ネスト・生成オペレータは、同じパーサー予算の対象のままです。マスクは境界付き透過グループを使用し、再帰参照を拒否し、アクティブなマスク参照は最大 8 個までに制限されます

画像は 128 ノード、各次元 16,384 ピクセル、合計 16,777,216 ピクセルに制限されます。リソースとテキストの完全な境界は SVG Form XObject Import プロファイルを参照してください

ネイティブ検証が安全な結果を返さない場合、OnColorGlyphRasterize が元の SVG アセットを受け取ります。アプリケーションが必要とする、より広範な SVG 機能群への対応は引き続き呼び出し側の責任です

配置

SVG ビューポートは、アスペクト比を保つ等倍スケールで要求されたフォントサイズの正方形へマッピングされ、SVG の下向き Y 座標を PDF の上向き Y 座標へ変換して、Form XObject をグリフのベースラインに固定します