クロノス・クラウン - 記事検索

おすすめ
自作の本やゲーム他を販売
便利なWebアプリが多数
ソフトウェア
めもりーくりーなー Winのメモリーを掃除
Novel Supporter 小説推敲補助ソフト
PCソフト まとめ
ゲームブック
闇の聖杯の儀式 電書のゲームブック
ゲーム
Little Land War... Win向けSRPG
Little Bit War Switch向け高速RTS
TinyWar... 1面数分の8bit風RTS
EX リバーシ 変形盤面、盤面多数
no link
2022年05月17日 23:15:35
 2022年04月21日頃に、JavaScriptでPDFを生成するライブラリ『PDF-LIB』で、フォント サブセット(subset)化に失敗する現象を解決しました。その時の個人的な備忘録です。

 『PDF-LIB』は、フォントの利用に『@pdf-lib/fontkit』を使います。フォントはサブセット化(必要なデータだけ格納)でき、ファイルサイズを減らせます。しかし、一部の文字が表示されなくなる「サブセット化失敗」のバグがあります。

PDF-LIB
https://pdf-lib.js.org/

@pdf-lib/fontkit
https://github.com/Hopding/fontkit

 私は「BIZUDPGothic-Regular.ttf」を使うことでこのバグに遭遇しました。

BIZUDPGothic-Regular.ttf
https://github.com/googlefonts/morisawa-biz-ud-gothic

 このバグは、『PDF-LIB』の作者は認識していて、『@pdf-lib/fontkit』のバグなので、自分は対処しないと回答しています。

custom font font subset with Chinese font does not work properly
https://github.com/Hopding/pdf-lib/issues/494

 『@pdf-lib/fontkit』は更新が止まっています。この『fontkit』の本家は現在1.8.1で、サブセット化のバグが1.8.0で取れていると報告されています。

fontkit fails to create working subset for some fonts
https://github.com/foliojs/fontkit/issues/188

 『@pdf-lib/fontkit』は、『fontkit』を『PDF-LIB』用に改造してあり、「fontkit.umd.js」は約4万4700行あります。このコードと、本家の『fontkit』を見比べて、サブセット化のバグ解消について実験をおこないました。

 「subset」「Subset」でコードを検索して、おおまかな処理の当たりを付けて、その後、実際にどの部分が処理に使われているか絞り込んでいきました。そして怪しい変数の値を見て、原因を探っていきました。

 最終的に「fontkit.umd.js」の4万940行あたりの「TTFSubset」の「prototype」の「encode」に、以下のような追記をおこないました。これで私の場合の問題は解決しました。

this.loca = {
offsets: []
,version: this.font.loca.version // 修正箇所
};

 他の方の参考になるかもしれないので、記録を残しておきます。
最新20件 (全て見る)

オススメ電書 (全て見る

動画講座 (全て見る

サイト目次

おすすめ

PCソフト/Webアプリ

ゲーム

マンガ

記事

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について