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

backend/pdf_writer — 表示リストを PDF へ [詳解]

クラス

struct  Bitmap
 ARGB8888(非前乗算)画像 [詳解]
 
class  PdfWriter
 
struct  RasterOptions
 
class  RasterRenderer
 
struct  SvgOptions
 

関数

bool savePng (const Bitmap &bitmap, const std::string &path)
 PNG 書き出し(ラスタ backend の確認用。zlib で圧縮)
 
std::string writeSvg (const dl::DisplayList &list, const SvgOptions &opts={})
 
bool saveSvg (const dl::DisplayList &list, const std::string &path, const SvgOptions &opts={})
 

詳解

backend/pdf_writer — 表示リストを PDF へ

backend/svg_writer — 表示リストを SVG へ

backend/raster — 表示リストをピクセルへ

グリフ ID を直接書く(Identity-H + CIDFontType0 / CIDFontType2)ので、 ビューア側で再シェイピングされない。richtext PdfWriter の移植。

  • 1 グリフずつ Tm で置く。縦組みでも Identity-V は使わない(縦メトリクスは 組版層で計算済み)
  • Tm の 2x2 はグリフ固有の変形だけ。フォントサイズは Tf が掛ける
  • 画面(y-down)→ PDF(y-up)は Y 反転で共役を取る
  • フォントは既定で hb-subset により使用グリフだけに切り出す(グリフ ID は保持するので Identity-H の対応は変わらない)。コンテンツストリームは Flate で圧縮する

グリフは glyphware(FreeType)にカバレッジマスクを作らせ(変形はアウトラインに 焼き込み)、自前で合成する。パスは自前のスキャンライン(AA)で塗る。 richtext の Raster.cpp / GlyphRenderer.cpp の移植。

グリフはアウトラインを <path> にする(<text> は使わない。ビューアの シェイピングに任せると組版結果が崩れる)。同じ face・gid のアウトラインは <defs> に 1 回だけ置いて <use> で参照する。 単位は pt をそのまま user unit にし、width/height に pt を付ける。

関数詳解

◆ savePng()

bool typeset::backend::savePng ( const Bitmap bitmap,
const std::string &  path 
)

PNG 書き出し(ラスタ backend の確認用。zlib で圧縮)

◆ writeSvg()

std::string typeset::backend::writeSvg ( const dl::DisplayList list,
const SvgOptions opts = {} 
)

◆ saveSvg()

bool typeset::backend::saveSvg ( const dl::DisplayList list,
const std::string &  path,
const SvgOptions opts = {} 
)