どーでもいーちゃどーでもいいけど、源ノ角ゴシックとかビルドしてみよっ - らんだむな記憶で源ノ角ゴシックをそのままビルドすると、Adobe-Identity-0で独自な並びなので、ちょっくらAdobe-Japan1-3に並び替えてみたい気分になった(激謎)
ということで、以下のような超絶出来の悪いマップファイル生成スクリプトを作ってみる。ちゃんとpython3でも動く!
[mk_map.py]
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys, os from fontTools.ttLib import TTFont from cmap_reader import readCMap font = TTFont(sys.argv[1]) aj1_cmap = readCMap(sys.argv[2]) cmap = font["cmap"].getcmap(platformID=0, platEncID=3).cmap geta_uni = 0x3013 geta_ai0_cid = int(cmap[geta_uni].replace("cid", "")) std_last_cid = 9353 # 不足を考慮してゲタ埋めしておく。 aj1_cid2ai0_cid = {} for cid in range(1, std_last_cid+1): aj1_cid2ai0_cid[cid] = geta_ai0_cid # CMapを見ながら対応付け for uni, name in cmap.items(): if name == ".notdef": continue if not uni in aj1_cmap.keys(): continue aj1_cid = aj1_cmap[uni] if aj1_cid > std_last_cid: # not Std continue ai0_cid = int(name.replace("cid", "")) aj1_cid2ai0_cid[aj1_cid] = ai0_cid print("mergeFonts") print("00000 00000") for aj1_cid, ai0_cid in sorted(aj1_cid2ai0_cid.items(), key=lambda x:x[0]): print("%05d %05d" % (aj1_cid, ai0_cid))
んで、Makefileを作って、makeでドンッ。
SRC_FONT = SourceHanSansJP-Regular.otf TARGET = SourceHanSansJP-Regular_AJ1.otf CID_FONT = SourceHanSansJP.cid MAP_FILE = map.txt ########################################################## .PHONY: all all: $(TARGET) $(TARGET): $(CID_FONT) makeotf -f $< -o $@ -ff features.JP -ch UniJIS-UTF32-H $(CID_FONT): $(MAP_FILE) mergeFonts -cid cidfontinfo $@ $< $(SRC_FONT) $(MAP_FILE): $(SRC_FONT) python -B mk_map.py $< UniJIS-UTF32-H > $@ .PHONY: clean clean: rm -rf $(TARGET) $(CID_FONT) $(MAP_FILE) current.fpr
雑だけど一応並び替えはできた。