フォルダ構成

コア

場所 内容
*.go, cmd/bdf Go のエンコーダ・デコーダ・コンテナ I/O と CLI
converter/ 入力形式の登録と共通のオプション、形式の判別、ページ指定
converter/internal/ Office 系・CAD の変換器が共有するもの(下記)
raster/imagebdf/ ページと単体の Object を純 Go で画像に描く(ビューアと同じ描き方)。ソフトウェアのラスタライザと、SVG の画像を描く SVG レンダラ
raster/ebitenginebdf/ パスだけの Object(数式など)を Ebitengine で描く。Ebitengine に依存するので独自の go.mod を持つ別モジュール。raster/internal/shapes は Object を塗りと線の図形の並びに展開する共通部分
image/formula/ LaTeX・MathML の数式を組んでパスだけの Object にする公開パッケージ。数式フォント(STIX Two Math)を同梱
vector/pdfbdf/ 文書を PDF に書き出す。命令列を内容ストリームに、文字を埋め込んだフォントの文字に、グループとソフトマスクを透明グループにする。影は raster/imagebdf で描いた画像にする。タグ付き PDF(MARK 命令から作る構造木)と PDF/A も書く
form/ 帳票のテンプレートをデータで穴埋めする: データの読み込み、テンプレートの判別、データの JSON Schema、コンパイル済みテンプレート(.bdft)。form/tag は Office のテンプレート(Excel・Word・PowerPoint)のタグの読み手。converter/pdfform は入力欄のある PDF を、converter/pdfme は pdfme のテンプレートを埋める。帳票を作るを参照
thumbnail/ 文書のサムネイル。文書の種類によるレイアウトと、PNG・JPEG・WebP の書き出し
internal/ フォントの探索・計測・サブセット化(fontdb)、TrueType/OpenType の読み書きとグリフの輪郭(sfnt)、CFF の読み取りとサブセット化(cff)、OpenType のレイアウトテーブル GSUB・GPOS・GDEF の読み取り(otlayout)。数式の木・読み手(LaTeX、MathML、Office Math)・組版(mathlayout)と、Office の XML の木(xmltree)。変換器と imagebdf が共有する
contrib/ プラットフォームに寄るもの。otf は Unix と Windows でフォントファイルをメモリにマップして開き(それ以外では読み込む)、読んだ表とグリフのページだけを常駐させる。fontdb が読み込むフォントを開くのに使う
font/woff2/ TrueType/OpenType ↔ WOFF2(glyf 変換と Brotli)
image/svg/ SVG を読む公開パッケージ。スタイルシートを適用した要素の木と、属性の値(色・長さ・変換)。描くのは raster/imagebdf
image/imgconv/ 画像の格納方針(そのまま/WebP に変換)。純 Go の libwebp を同梱
image/barcode/ QR コードとバーコード(JAN/EAN、UPC-A、Code 39、Code 128、GS1-128、ITF、NW-7)を、矩形のパスとして作る公開パッケージ。帳票のテンプレートの {{%値 | qr}}・barcode:種類 が使う
fixture/ テストと bdf demo が使うサンプル文書の生成(埋め込みフォント付き)

変換器(入力形式ごとに 1 パッケージ)

場所 変換する形式
converter/pdf PDF
converter/ai Illustrator(.ai)。PDF 変換器の上に
converter/psd Photoshop(.psd, .psb)
converter/pptx PowerPoint(.pptx)
converter/xlsx Excel(.xlsx)
converter/csv CSV・TSV(描画は converter/xlsx)
converter/parquet Apache Parquet(描画は converter/xlsx)
converter/docx Word(.docx)
converter/visio Visio(.vsdx)
converter/idml InDesign(.idml)
converter/drawio draw.io(.drawio / .drawio.svg / .drawio.png)
converter/dxf AutoCAD DXF
converter/jww Jw_cad(.jww)
converter/sxf SXF(.p21, .p2z, .sfc)
converter/cgm CGM(.cgm, .cgz)
converter/hpgl HP-GL/2 のプロットファイル(.plt。HP-GL、PJL、PCL、HP RTL)
converter/gerber Gerber・Excellon(と基板のファイルをまとめた ZIP)
converter/kicad KiCad の回路図・基板・プロジェクト(とプロジェクトをまとめた ZIP)
converter/emf Windows メタファイル(.emf, .wmf)
converter/tiff TIFF(.tif, .tiff)
converter/html HTML(.html, .xhtml, .mhtml)。リーダー表示
converter/markdown Markdown(HTML を経由)
converter/epub EPUB(リフロー型の本はリーダー表示、固定レイアウトの本は画像のページ)
converter/mml MML(.mml。汎用、マビノギ、PPMCK の方言)。楽譜にする
converter/midi Standard MIDI File(.mid, .kar, .rmi)。楽譜にする
converter/musicxml MusicXML(.musicxml, .mxl)
converter/font フォントファイル(.ttf, .otf, .ttc, .woff, .woff2)。文字・グリフ・OpenType フィーチャーのプレビュー
converter/image PNG・JPEG・GIF・WebP・AVIF・BMP・ICO・SVG(そのまま格納し、メタデータを読む)
converter/audio MP3・M4A・FLAC・Ogg・WAV・AIFF(カバーアート・タグ・歌詞のカード。ファイルそのものも持ち、ビューアが再生する)
converter/all すべての入力形式を登録する(副作用のために import する)

converter/internal/ には複数の変換器が共有するものが入っています: OOXML のパッケージと XML(ooxml)、DrawingML の図形・テキスト・表・グラフ(ooxml/drawingml)、テキストレイアウト用のフォント選択・計測・埋め込み(fontset。draw.io も使う)、組み立て中の Object(canvas。draw.io も使う)、EMF/WMF の再生(metafile)、ISO base media file format の箱(isobmff。AVIF の画像と M4A の音声)、CAD 図面のページへの描画(cad)、行分割の規則(linebreak)、場所の決まったフィールドに値を描く部分(formbox。PDF フォームと pdfme)、複合ファイル(cfb)とパスワード付き Office 文書の復号(offcrypto)。PDF 用の Adobe の定義済み CJK CMap(cjkcmap)と JPEG 2000・JBIG2 のデコーダ(jpx、jbig2)。TIFF の読み取りと CCITT の FAX 符号のデコーダ(tiff)。Word・HTML・Markdown・EPUB の組版エンジン(wordproc: 段落・表・ページ・scroll View)と、それらが共有する HTML・XHTML の読み込み(webdoc)。XMP メタデータの Dublin Core(xmp)。数式エンジン(internal/mathlayout)を文書のフォントで動かし、埋め込みフォントのテキストとして描く部分(equation)。MML・MIDI・MusicXML の楽譜の組版と演奏する音楽(music。Bravura の SMuFL の字形は music/smufl)。

TypeScript のパッケージ

場所 内容
packages/core @bdfkit/core — デコーダ、コンテナ読み込み、テキスト抽出(依存なし)
packages/render @bdfkit/render — Canvas レンダラ、ページ/連続/シート描画(scroll View は連続描画)、Worker とそのクライアント(SVG の画像は Worker がデコードできないのでメインスレッドが描く)
cmd/bdfwasm ブラウザ内変換用に wasm にした変換器(PDF 用、Office 系用、HTML・Markdown・EPUB 用、画像用、変換器を持たないサムネイル・検索テキスト用のモジュール)

デモサイトとそのページ

場所 内容
examples/viewer フル機能のデモビューア(Worker による描画、読み上げ用のテキスト層、ページめくり)
examples/common ビューアとサイトの残りが共有するもの(変換 Worker のクライアント、サイトの esbuild 補助)
examples/miniviewer 埋め込み用の小さなビューア(下記のサンプルプロジェクトが使う)
site/ GitHub Pages で公開するサイト本体: トップページ、サムネイル・検索テキストのページ、ドキュメントの描画(site/docs.mjs がこのページを docs/*.md から作る)
docs/ このドキュメント(Markdown)

サンプルプロジェクト、CLI、テスト

場所 内容
examples/light-server、examples/preview-server、examples/search、examples/secure-reader BDF をシステムに組み込む方法ごとの小さな Go サーバー 4 つ。構成のサンプルを参照
cmd/bdf bdf コマンド: generate、fill、template、thumbnail、text、render、ls、manifest、disasm、extract、split、join、encrypt、decrypt、demo。BDF コマンドを参照
tools/ ソースが変わったときに手で実行する生成ツール群: Unicode のデータ、SMuFL の字形パス、draw.io のステンシルと AWS アイコンの対応表、テーブルスタイル、cmap、純 Go の WebP コーデックの生成テーブル
testdata/ 生成済みサンプル。CI でバイト単位に照合する
test/ ブラウザの機能テストと、各形式の testdata/ を作るフィクスチャ生成スクリプト

各パッケージが何を公開しているかは API 一覧を、これらのビルド・テスト・再生成の方法はビルドとテストを参照してください。