一般的なMarkdown-to-PDF変換ツールにおける最大の課題の1つが、多言語テキストを処理する際のフォント文字化けです。日本語、中国語、韓国語(CJK)、キリル文字、アクセント記号付きの文字に対応するフォントが正しく埋め込まれていないと、文字が四角い枠(いわゆる「豆腐文字」)として表示されてしまいます。md2pdf は完全なUnicodeフォント埋め込みを採用し、あらゆる閲覧環境で美しい多言語ドキュメントをレンダリングします。
本記事では、pdf-lib と @pdf-lib/fontkit を用いたブラウザ内フォント埋め込みの仕組み、サブセット化によるファイルサイズ最適化、文字欠落を防ぐフォントフォールバック戦略を解説します。
ポータブルドキュメントにおけるUnicode組版の壁
標準的なPDF仕様が定めている基本フォント(HelveticaやTimesなど14種類)は、基本的な英数字と西欧ラテン文字しかカバーしていません。
- 豆腐文字問題: フォント内にグリフが存在しない文字は、未定義を示す四角いグリフ(□)として描画されます。
- CJK言語の膨大な文字数: 日中韓の文字セットは数万文字に及び、フォント全体の埋め込みはファイルサイズの肥大化を招きます。
- 特殊記号とダイアクリティカルマーク: トルコ語(ç, ğ, ı, ö, ş, ü)やキリル文字では、可読性を保つための正確なグリフ割り当てが不可欠です。
Multilingual Glyph Coverage in md2pdf:
- Latin & Extended Latin: English, Spanish, French, Portuguese, Turkish
- Cyrillic Alphabets: Russian, Ukrainian, Bulgarian
- East Asian Ideographs: Simplified Chinese (简体中文), Japanese (日本語)
- Hangul Syllables: Korean (한국어)
@pdf-lib/fontkitによる高精度フォント埋め込み処理
md2pdfは @pdf-lib/fontkit を活用し、ブラウザ内でTrueType(TTF)やOpenType(OTF)のフォントテーブルを直接解析します:
- オンデマンドなフォント取得: ドキュメントの言語属性に応じて、高品質なオープンソースフォント(Noto Sans、Source Han Sans、Roboto Mono等)をクライアント側でフェッチします。
- 文字コードの精密マッピング:
fontkitがMarkdownテキスト内の各Unicode文字を解析し、フォントテーブル内の正確なベクター輪郭データと照合します。 - バイナリ内部への埋め込み:
pdf-libが抽出されたグリフ情報をPDFファイルの構造体に直接埋め込み、自己完結型のドキュメントを生成します。
サポートする全9言語における完璧なタイポグラフィ
md2pdfは、世界中で利用される9つの主要言語に対してネイティブ水準の組版を提供します:
- 英語・スペイン語・フランス語・ポルトガル語: アキュート、グレイヴ、セディール、チルダなどのアクセント記号を正確に配置した洗練されたラテン文字。
- トルコ語: 点付き・点なしの「i」(
İ/i、I/ı)や独特の有音子音を忠実にレンダリング。 - ロシア語(キリル文字): ラテン見出しとバランスがとれた美しいキリル文字のタイポグラフィ。
- 日本語・中国語・韓国語: 複雑な漢字やハングル文字も、均整のとれた文字間隔で高精細に出力。
環境を選ばない完全なオフラインポータビリティ
ベクターフォント情報がPDFバイナリ自体に直接埋め込まれているため:
閲覧者のPCやスマートフォンに対象言語のフォントがインストールされていない場合でも、作成時とまったく同一の美しい見た目でドキュメントが表示されます。
md2pdfで多言語ドキュメントを快適に出力
日本語の技術仕様書、ロシア語の設計文書、多言語対応の多国籍マニュアルなど、どのようなドキュメントでもmd2pdfは自動的に適切なフォント処理を行います。文字化けや豆腐文字の心配なく、安心してプロ仕様のPDFを作成できます。
自分だけのREADME PDFを作る
無料、ログイン不要、そしてすべてクライアントサイド。