文章で使用されている文字をユニーク抽出

提供:MeryWiki
2018年6月6日 (水) 22:46時点におけるAdmin (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

概要

日本語 Web フォントをサブセット化するときにサブセットフォントメーカーで設定する「フォントに格納する文字」を生成したかったので作ってみました。

Mery で開いている文書で使用されている文字を抽出してソートして重複を取り除きます。データベースからブログ記事をすべて出力したものにこのマクロをかければ、サブセット化で使えるユニーク文字に変換できます。

データが大きければそれなりに時間がかかりますが、25MB のテキストファイルで 2 分ぐらいでした。

サロゲートペアに対応していますが、IVS には対応していません。(サブセット化するのに IVS いりませんよね…)

if (document.selection.Text == "")
	document.selection.SelectAll();
var s1 = document.selection.Text.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S]|^$/g).filter(Boolean).sort();
var s2	= new Array();
for (var i = 0; i < s1.length; i++) {
	if (i == 0 || s1[i-1] != s1[i])
		s2.push(s1[i].trim());
}
document.selection.Text = s2.join("");

ついでに、第一水準漢字、記号、ローマ字、カタカナ、ひらがなです。サブセットフォントメーカーに以下のテキストを貼り付けて、そのテキストの末尾にこのマクロで抽出した文字列を追記するだけです。

重複する文字が含まれていてもサブセットフォントメーカーは自動で取り除いてくれるようですので、出来上がったフォントファイルのサイズに影響はありません。

スポンサーリンク