空白のグリフを全部削除する。そもそも持ってない字を空白で埋めんといて…

あるんですよ、持ってないグリフを空白で埋めてるフォント。スゲー困ります。

んでまー対処対応としてはグレーな話になりますがFontforgeスクリプトでどうにかなるんですね。スペース文字とかも消えちゃうけど。

 

cockscomb.hatenablog.com

 

いやホント神か。

 

とまれ、解決の目処は立ったぞ良かった良かった。

…駄菓子菓子、

Linuxわからんのじゃー! Windowsでやらせろやー!

…という白痴浅学の輩としては上記の記事見て回れ右ですよね。私も最初そうしたわ。

というわけでWindows猿でも出来る空白文字除去をメモしておきます。

 

まずFontforge

sourceforge.net

ここから

  FontForge-mingw-w64-x86_64-1abf23-r1.7z

これをDLして

  C:\Program Files (Legacy)\Fontforgex64

にインストールするものとします。

 

先の記事にあったこちら

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import fontforge
import argparse


def remove_empty_glyphs(input, output):
font = fontforge.open(input)
code_points = []
for glyph in font.glyphs():
# 実際には glyph のデータが空になっていることがある
if glyph.left_side_bearing != 0.0 and glyph.right_side_bearing != 0.0:
pass
else:
font.removeGlyph(glyph)
font.generate(output)
font.close()


if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Make unicode-range from font.')
parser.add_argument('input', nargs=1, help='path to input font file')
parser.add_argument('output', nargs=1, help='path to output font file')
args = parser.parse_args()
input_file_path = args.input[0]
output_file_path = args.output[0]


remove_empty_glyphs(input_file_path, output_file_path)

テキストエディタで書いて貼り付けます。テキストの形式はUTF-8 BOM付きがよさそう。

remove-empty-glyphs.pyという名前で保存します。

 

続けてバッチファイルを作ります。

 

実行します。

"C:\Program Files (Legacy)\Fontforgex64\"fontforge -script remove-empty-glyphs.py input.otf output.otf
pause

上記をテキトーに書き換えてテキトーな名前つけて保存、あとはダブルクリックするだけ。簡単ですよ。マジで。

 

なに? 一行くらい端末叩けだと?

あのね、ゴミWindows使いにとってはダブルクリックで実行出来ないものは使えないものであり、コンソールは眺めるものですよ。サルとかタコとか呼ばれる類いの気持ちは伝わりませんかそうですか。

とりあえず、これでみんなMacだのLinuxだので作業してるFontforge向けスクリプトを内容をWindowsでも実行出来るようになりました。よかったですね。