「文章で使用されている文字をユニーク抽出」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
20行目: 20行目:
</source>
</source>


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


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

2018年6月6日 (水) 22:46時点における版

概要

日本語 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("");

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

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

スポンサーリンク