Skip to main content
budat
Participant
Dec 5, 2017 8:56 AM UTC
Answered

フォント置換後“見つからない字形”にならない

Pr6からProにフォントを置き換えたときなど、元のフォントより収録文字数が少なくなると、

そのフォントが持っていない字形を“見つからない字形”としてInDesignが教えてくれますが、

一部の字形は“見つからない字形”にならないことがわかりました。

再現例:

「小塚ゴシック Pr6N R」で「CID:15508」の文字を入力します。

その文字を「小塚ゴシック Pro R」に置き換えます。

見つからない字形になりません。フォントは「小塚ゴシック Pro R」になっています。

PDFを書き出してみると、その文字のフォントが「Symbol」だとわかります。

(他の字形でもいくつかあるようです。)

“見つからない字形”という機能は不完全で、フォント置換後はよく見て確認する。

ということになるのでしょうか。

・こうならないフォント置換方法

・この状態の文字を探す方法

などご存知の方ご教示ください。

    This topic is closed to new replies. Start a new post to keep the conversation going.
    yusuke.s
    yusuke.sCorrect answer
    Inspiring
    Dec 6, 2017 4:40 AM UTC

    Symbolフォントがグリフを持つ文字のコードポイントを総当りで検索し

    普通によく使われる文字がかなり含まれていますよね。

    条件を絞ってみます。

    • AJ1-5以降のプロポーショナルグリフにマッピングされている文字コードのうち、AJ1-4フォントに変更すると存在しないのにそのフォント名が表示されてしまう文字

    こうして抽出してみると「∥ ≈ ∆ ∏ ≤ ≥ ◊」の7文字が該当します。しかも「∥ ∆」の2文字はSymbolフォントにありません。

    (「∆  U+2206」はSymbolフォントにないのに「Δ  U+0394」のグリフが表示されるという込み入ったことになっています)

    実用十分として、

    • [\x{2225}\x{2248}\x{2206}\x{220F}\x{2264}\x{2265}\x{25CA}]

    これを単純に正規表現マッチで調べるのが落とし所かもしれません。


    • [\x{2225}\x{2248}\x{2206}\x{220F}\x{2264}\x{2265}\x{25CA}]

    これを単純に正規表現マッチで調べるのが落とし所かもしれません。

    おっしゃる通り、無駄なく漏れなくであればこれで十分ですね。ありがとうございます。

    InDesignの検索ではフォント条件にSymbol「以外」、ができないので、ひとつずつ確認していくか、あまりにたくさん出る場合はスクリプトを利用する感じでしょうね。

    ちなみに、下記は先ほどのスクリプトの検索対象をこの正規表現に書き換えたものです。find変数が短くなっただけですが、一応全文載せます。

    if (!app.documents.length) myQuit("ドキュメントが開かれていません");

    //検索条件:

    //AJ1-5以降のプロポーショナルグリフにマッピングされている文字コードのうち、AJ1-4フォントに変更すると存在しないのにそのフォント名が表示されてしまう文字

    var find = "[\\x{2225}\\x{2248}\\x{2206}\\x{220F}\\x{2264}\\x{2265}\\x{25CA}]";

    //検索条件のリセット

    resetRegex();

    app.findGrepPreferences.findWhat = find;

    var findSymbols = app.findGrep();

    //Symbol収録文字の検索

    var res = [];

    for (var i=0, len=findSymbols.length; i<len; i++){

        if (findSymbols.appliedFont.fontFamily !== "Symbol") res.push(findSymbols);

        }

    //おかしいフォントを検索

    if (!res.length) {

        alert("見つかりませんでした");

        exit();

        }

    if (!confirm ("フォント情報がおかしいSymbolの字形が\r「"+res.length+"個」見つかりました。\r確認しますか?")) exit();

    for (var i=0,len=res.length; i<len; i++){

        res.showText();

        if (confirm ("スクリプトを中断しますか?\r"+(i+1)+" / 全"+len+"個")) exit();

        }

    alert("終了しました");

    function resetRegex() {

        //検索の初期化

        app.findGrepPreferences = NothingEnum.nothing;

        app.changeGrepPreferences = NothingEnum.nothing;

        //検索オプション

        app.findChangeGrepOptions.includeLockedLayersForFind = true;//ロックされたレイヤーをふくめるかどうか

        app.findChangeGrepOptions.includeLockedStoriesForFind = true;//ロックされたストーリーを含めるかどうか

        app.findChangeGrepOptions.includeHiddenLayers = false;//非表示レイヤーを含めるかどうか

        app.findChangeGrepOptions.includeMasterPages = true;//マスターページを含めるかどうか

        app.findChangeGrepOptions.includeFootnotes = true;//脚注を含めるかどうか

        app.findChangeGrepOptions.kanaSensitive = true;//カナを区別するかどうか

        app.findChangeGrepOptions.widthSensitive = true;//全角半角を区別するかどうか

        }

    function myQuit(){

        if (arguments.length) alert(arguments[0]);

        exit();

        }

    Yusuke S.

    8 replies

    budat
    budatAuthor
    Participant
    Dec 6, 2017 7:05 AM UTC

    皆様、隅々まで検証していただき、ありがとうございます。

    InDesignのアップデートで直るよう期待しています。

    それまで ∥ ≈ ∆ ∏ ≤ ≥ ◊ を使うときは、

    指定フォント通りの意図した字形になっているか注意するようにします。

    載せていただいたスクリプトは、

    未然に防ぐ手段として、または問題発生後の確認手段として検討します。

    Translate
    assause
    Community Expert
    Community Expert
    Dec 6, 2017 12:34 AM UTC

    Windows版とMac版のInDesign CC Ver.13(2018)で確認しましたが、

    どうやらMac版だけの問題ではないかと推測されます。

    Windows版で、字形パネルでCID:15508(u+2248)を入力し、

    フォント検索で小塚ゴシック Pr6Nから小塚ゴシック Proに置換した直後の結果は下記で、

    見つからない字形の保護の警告ダイアログは表示され、処理後の該当部分はPr6Nのままです。

    そのうえでタグ付きテキストで書き出した結果は下記で、

    やはり該当部分は小塚ゴシック Pr6Nのままです。

    一方、Mac版で確認したところ、見つからない字形の保護については警告が出ないうえ、

    表示結果を確認すると該当部分はProに変わってしまっています。

    そしてタグ付きテキストで書き出したところ、やはり小塚ゴシック Proが適用されてしまっています。

    もちろん小塚ゴシック Proには該当グリフが存在するわけがありませんから、

    表示もPDFに書き出したときもミッシンググリフ扱いになるはずですが、

    それがおかしくなっているので、PDF出力時に代替でSymbolにされてしまったのだと推測できます。

    とりあえず現状としては「フォント置換時は気を付ける」くらいしかないような気もしますが……。

    Translate
    monokano
    Community Expert
    Community Expert
    Dec 6, 2017 1:06 AM UTC

    PDF出力時に代替でSymbolにされてしまったのだと推測できます。

    実は、inddの段階でSymbolのグリフが表示されています。

    それなのに、変更したフォント名が表示されてしまう。かなり厄介な現象です。

    Translate
    assause
    Community Expert
    Community Expert
    Dec 6, 2017 1:26 AM UTC

    あ、ごめんなさい、書き方が悪かったです。

    確かに表示自体がすでにSymbolに変わってますね。

    その割に文字パネルでは置換後のフォントに変わってしまっている、ということになるので

    問題としては大きいというのは仰る通りだと思います。

    Translate
    monokano
    Community Expert
    Community Expert
    Dec 5, 2017 10:27 AM UTC

    再現しました。これはヤバいですねぇ…

    ざっと調べたところ、同様の文字は「≈ ∆ ∏ ≤ ≥ ◊」でした。

    AJ1フォントだけでなく、すべてのフォントに発生するようです。

    ですからCIDではなく文字コードで考えた方が良いでしょう。

    Symbolにフォールバックされているのに、全く違うフォント名が表示されるのはバグだと思います。

    勝手にSymbolにフォールバックするのも問題だと思いますが…

    ・こうならないフォント置換方法

    ・この状態の文字を探す方法

    いずれもその方法はないかもしれません…あるといいなぁ…

    追記:

    「∥」もCS6では問題のある挙動をするのですが、混乱するのでここでは除外します。

    Translate