終了

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

Community Beginner ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

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

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

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

再現例:

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

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

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

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

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

見つからない字形じゃあない.png

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

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

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

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

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

表示

5.3K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

積極的な参加者 , Dec 05, 2017 Dec 05, 2017
  • [\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}]";

/

...

投票

翻訳

翻訳
Community Expert ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

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

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

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

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

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

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

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

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

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

追記:

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

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

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

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

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

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

IDCC2018_CID15508_1.png

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

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

IDCC2018_CID15508_2.png

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

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

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

IDCC2018_CID15508_3.png

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

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

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

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

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

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

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

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

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

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

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
積極的な参加者 ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

macOS 10.10.5、InDesign CS6〜CC2017で現象を確認できました。

面白いのは、InDesignがグリフIDでコンフリクトを起こしてしまう点です。字形パネルを開くと、Symbolの「≈」(CID53)と、小塚明朝ProRの「T」(CID53)を混同し、見た目がSymbolになっている小塚の「≈」を選択すると、字形パネルでは「T」が選択されます。

symbol.png

kozuka.png

  • 検証1

Symbolフォントをディアクティベートすると、見た目がSymbolになっている小塚明朝ProRの「≈」も見つからないフォントとして見つけることができます。ただSymbolフォントはシステムフォントのひとつなので、オン・オフを繰り返すことはあまり推奨できません。

ss_2017126101939.png

  • 検証2

字形検索から小塚明朝ProR、CID53を指定しても「T」しか見つかりません。一方、Symbol、CID53としても、見た目がSymbolになっている小塚の「≈」はヒットしません。

ただし文字コードは当然U+2248なので、正規表現検索では\x{2248}とすると両方の「≈」をヒットさせることができます。

以上より、Symbolフォントがグリフを持つ文字のコードポイントを総当りで検索し、ヒットした文字のフォント名がSymbolではないもの、が今回探したい文字ということになります。

それをスクリプト化したのが以下です。

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

//検索条件:Symbolが収録する全文字

var find = "[\\x{21}\\x{23}\\x{25}\\x{26}\\x{28}\\x{29}\\x{2b}\\x{2c}\\x{2e}\\x{2f}\\x{30}\\x{31}\\x{32}\\x{33}\\x{34}\\x{35}\\x{36}\\x{37}\\x{38}\\x{39}\\x{3a}\\x{3b}\\x{3c}\\x{3d}\\x{3e}\\x{3f}\\x{5b}\\x{5d}\\x{5f}\\x{7b}\\x{7c}\\x{7d}\\x{a9}\\x{ac}\\x{ae}\\x{b0}\\x{b1}\\x{d7}\\x{f7}\\x{192}\\x{2b9}\\x{2ba}\\x{338}\\x{391}\\x{392}\\x{393}\\x{394}\\x{395}\\x{396}\\x{397}\\x{398}\\x{399}\\x{39a}\\x{39b}\\x{39c}\\x{39d}\\x{39e}\\x{39f}\\x{3a0}\\x{3a1}\\x{3a3}\\x{3a4}\\x{3a5}\\x{3a6}\\x{3a7}\\x{3a8}\\x{3a9}\\x{3b1}\\x{3b2}\\x{3b3}\\x{3b4}\\x{3b5}\\x{3b6}\\x{3b7}\\x{3b8}\\x{3b9}\\x{3ba}\\x{3bb}\\x{3bc}\\x{3bd}\\x{3be}\\x{3bf}\\x{3c0}\\x{3c1}\\x{3c2}\\x{3c3}\\x{3c4}\\x{3c5}\\x{3c6}\\x{3c7}\\x{3c8}\\x{3c9}\\x{3d1}\\x{3d2}\\x{3d5}\\x{3d6}\\x{2022}\\x{2026}\\x{2044}\\x{20ac}\\x{2111}\\x{2118}\\x{211c}\\x{2122}\\x{2135}\\x{2190}\\x{2191}\\x{2192}\\x{2193}\\x{2194}\\x{21b5}\\x{21d0}\\x{21d1}\\x{21d2}\\x{21d3}\\x{21d4}\\x{2200}\\x{2202}\\x{2203}\\x{2205}\\x{2207}\\x{2208}\\x{2209}\\x{220d}\\x{220f}\\x{2211}\\x{2212}\\x{2217}\\x{221a}\\x{221d}\\x{221e}\\x{2220}\\x{2227}\\x{2228}\\x{2229}\\x{222a}\\x{222b}\\x{2234}\\x{223c}\\x{2245}\\x{2248}\\x{2260}\\x{2261}\\x{2264}\\x{2265}\\x{2282}\\x{2283}\\x{2284}\\x{2286}\\x{2287}\\x{2295}\\x{2297}\\x{22a5}\\x{22c5}\\x{2320}\\x{2321}\\x{239b}\\x{239c}\\x{239d}\\x{239e}\\x{239f}\\x{23a0}\\x{23a1}\\x{23a2}\\x{23a3}\\x{23a4}\\x{23a5}\\x{23a6}\\x{23a7}\\x{23a8}\\x{23a9}\\x{23aa}\\x{23ab}\\x{23ac}\\x{23ad}\\x{23ae}\\x{23af}\\x{23d0}\\x{25ca}\\x{2660}\\x{2663}\\x{2665}\\x{2666}\\x{3008}\\x{3009}\\x{f8e5}\\x{f8e8}\\x{f8e9}\\x{f8ea}\\x{f8ff}]";

//検索条件のリセット

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.

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

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}]

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
積極的な参加者 ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

  • [\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.

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Dec 05, 2017 Dec 05, 2017

リンクをクリップボードにコピー

コピー完了

最新

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

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

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

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

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

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines