typeset 0.1.0
縦書き・横書きの日本語組版ライブラリ(JLReq 水準、ラスタ / PDF / SVG)
読み取り中…
検索中…
一致する文字列を見つけられません
typeset::obj 名前空間

obj — 外部生成オブジェクト(数式・グラフ・図など)の差し込み口 [詳解]

クラス

class  ObjectRegistry
 
struct  ObjectRequest
 
struct  ObjectResult
 
struct  SvgImportOptions
 

型定義

using ObjectHandler = std::function< ObjectResult(const ObjectRequest &)>
 

関数

std::string requestToJson (const ObjectRequest &req)
 要求を JSON にする(外部コマンドの入力。UTF-8)
 
ObjectResult makeResult (Size size, Pt baseline, std::vector< dl::Item > items)
 表示リスト要素を ObjectResult に詰める補助
 
bool importSvg (const std::string &svg, const SvgImportOptions &opts, ObjectResult &out)
 

詳解

obj — 外部生成オブジェクト(数式・グラフ・図など)の差し込み口

obj/svg_import — SVG のサブセットを表示リストへ

本文側は「ハンドラ名+ソース文字列+パラメータ」だけを書く。組版時に FlowLayouter が 登録済みのハンドラを呼び、返ってきた箱の大きさとベースラインで配置し、描画命令 (表示リストの要素)をそのまま出力へ流す。本体は数式や図の知識を持たない。

ハンドラは 2 通り:

  • 関数(ObjectHandler): 表示リストを直接返せる。GlyphRun で返せば PDF でも字として埋め込まれる
  • 外部コマンド: 要求を JSON ファイルに書き、command <request.json> の標準出力(SVG)を 読み込む(obj/svg_import)。メトリクスは SVG の width/height と、あれば <!-- typeset baseline="12.3" --> のコメント(上端からベースラインまで、pt)

結果は (ハンドラ, ソース, パラメータ, サイズ, 行内か) でキャッシュする。目次・参照の多パスで 同じ式を何度も組むため。

数式レンダラ(MathJax / dvisvgm / Typst)やグラフ(matplotlib)が出す SVG を受けるための 読み込み。対応: svg(width/height/viewBox) / g(transform, 塗り・線の継承) / path(d 全コマンド、 弧は 3 次ベジェへ) / rect / circle / ellipse / line / polyline / polygon / defs + use(href) / fill・stroke・stroke-width・opacity・fill-rule(属性と style=)。text・画像・クリップ・グラデーションは無視する。

大きさ: width/height(単位 px = 0.75pt, pt, mm, cm, in, em, ex)を pt に。無ければ viewBox。 ベースライン: <!-- typeset baseline="12.3" -->(上端から pt)、または style の vertical-align: -1.2ex から(MathJax)。

型定義詳解

◆ ObjectHandler

using typeset::obj::ObjectHandler = typedef std::function<ObjectResult(const ObjectRequest&)>

object.hpp55 行目に定義があります。

関数詳解

◆ requestToJson()

std::string typeset::obj::requestToJson ( const ObjectRequest req)

要求を JSON にする(外部コマンドの入力。UTF-8)

◆ makeResult()

ObjectResult typeset::obj::makeResult ( Size  size,
Pt  baseline,
std::vector< dl::Item items 
)

表示リスト要素を ObjectResult に詰める補助

◆ importSvg()

bool typeset::obj::importSvg ( const std::string &  svg,
const SvgImportOptions opts,
ObjectResult out 
)
戻り値
失敗時 false(out.error に理由)