Mac OS Xでは、濁音(半濁音)を清音 + U+3099(U+309A)で表している。
IPAフォントで、そのようなテキスト「がぎぐげごザジズゼゾか゚き゚く゚け゚こ゚パピプペポ」を開いたら、こう表示される。
「かきくけこ」に半濁点は、合字の設定がされているから表示されている。ということは、他の文字も設定すれば、きちんと表示される。
次のスクリプトを使う。UTF-8で保存。
#!/usr/bin/env fontforge if ($argc > 2) OutputFile = $2; else OutputFile = "new."+$1:t; endif Open($1); Reencode("original"); plain = [0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x309D]; Select(0u3099); v_mark = GlyphInfo("Name"); i = 0; while (i < SizeOf(plain)) Select(UCodePoint(plain[i])); p = GlyphInfo("Name"); Select(UCodePoint(plain[i]+1)); AddPosSub("'ccmp' グリフ合成/分解 lookup 1 subtable", p+" "+v_mark); Select(UCodePoint(plain[i]+0x60)); p = GlyphInfo("Name"); Select(UCodePoint(plain[i]+0x60+1)); AddPosSub("'ccmp' グリフ合成/分解 lookup 1 subtable", p+" "+v_mark); i++; endloop plain = [0x3046, 0x30A6, 0x30EF, 0x30F0, 0x30F1, 0x30F2]; voiced = [0x3094, 0x30F4, 0x30F7, 0x30F8, 0x30F9, 0x30FA]; i = 0; while (i < SizeOf(plain)) Select(UCodePoint(plain[i])); p = GlyphInfo("Name"); Select(UCodePoint(voiced[i])); AddPosSub("'ccmp' グリフ合成/分解 lookup 1 subtable", p+" "+v_mark); i++; endloop plain = [0x306F, 0x3072, 0x3075, 0x3078, 0x307B]; Select(0u309A); v_mark = GlyphInfo("Name"); i = 0; while (i < SizeOf(plain)) Select(UCodePoint(plain[i])); p = GlyphInfo("Name"); Select(UCodePoint(plain[i]+2)); AddPosSub("'ccmp' グリフ合成/分解 lookup 1 subtable", p+" "+v_mark); Select(UCodePoint(plain[i]+0x60)); p = GlyphInfo("Name"); Select(UCodePoint(plain[i]+0x60+2)); AddPosSub("'ccmp' グリフ合成/分解 lookup 1 subtable", p+" "+v_mark); i++; endloop Generate(OutputFile, "otf"); Quit(0);