Mac OS Xの文字コード問題に関するメモ このページをアンテナに追加 RSSフィード

2009-11-30

InDesignの米印問題は環境依存性が恐い


  • InDesign CS4における米印などの属性をめぐる問題については以前のエントリ(InDesign CS4で「※」や「×」が恐い)で触れたが、実はそのエントリで報告した検証結果だけでは、うちの会社が実際に遭遇したトラブル(出力センターで校正を出したらレイアウトがズレていた)を説明できていなかった。
  • そこですでに検証したCS3/CS4 IntelMac)に加え、CS3/CS4 PowerPCで実験してみた。結果は下図のとおり。PowerPC環境では、CS3でもCS4でも「CIDベースの文字組みを使用」がオフだと、米印などは欧文属性となる。CS4 Intelのような不安定さはないが、安定して間違っている。

f:id:NAOI:20091130181355p:image

  • 下図は、InDesign CS4 Intelで作成したドキュメント(字間をカーニングで調整)をCS4 PowerPCで開いた場合のレイアウトのズレを再現したもの。「うちの会社が実際に遭遇したトラブル」というのが、こんなかんじ。

f:id:NAOI:20091130181409p:image

  • Adobeによれば、「CIDベースの文字組みを使用」をオンにする以外には、この問題の回避方法はないとのこと。うちの会社でトラブルとなった事例は、QuarkXPressで作成した大量のドキュメントをInDesign CS4に移行して加工する作業の一環なので、「CIDベースの文字組みを使用」をオンにするとなると、それによって変わってくる箇所のチェックが一仕事なのだけれど。

2009-11-26

InDesignでテキストをペーストしたときの属性の引き継がれ方


  • 細かい話だけれど、先日のエントリ(InDesign CS4で異体字のあとにテキストをペーストしたときの文字化け)に関連して気になった点があるのでメモ。たとえば下図の例では、「木」は、上書きされた「本」ではなく、直前の文字(CID+8422)の属性(aalt 3)を受け継いで化けている。文字化けの問題以前に、プレーン・テキストをペーストしたときの属性の引き継がれ方がおかしい。

f:id:NAOI:20091126184957p:image

  • 下図は「あ」を赤、「い」を黒、「う」を青とした「あいう」を3組用意し、1行目は「あ」、2行目は「い」、3行目は「う」にプレーン・テキストの「貼」を上書きペーストした結果を示す。「あ」と「う」の文字色は上書きした「貼」に受け継がれているが、「い」の文字色は継承されず直前の「あ」の文字色で置き換えられている。

f:id:NAOI:20091126185040p:image

  • InDesign CS4では、デフォルトの属性(上の例では文字色:黒)の文字にプレーン・テキストを上書きペーストした場合、直前の文字の属性を受け継ぐようだ。文字色だけでなく、文字のサイズ、垂直比率、水平比率などでも同様。

2009-11-25

Illustrator CS4におけるグリフ置換の文字化け


  • たとえばIllustrator CS4でCID+14281を入力し、その後フォントを変更したとき。下図、左がフォント変更前、右が変更後。フォントの違いによって、同じグリフが4種類もの異なる化け方をしている。

f:id:NAOI:20091125182245p:image

  • このような文字化けは、「親字の符号位置と異体字(aalt)番号」によってグリフを指定する仕組みに起因するもので、InDesignでは2.0の時代に見られたものである。
  • cmapテーブル、aaltテーブル、またはレパートリが異なるフォント間で化ける可能性があり、どのグリフが化けるのかをトータルに把握するのは難しい。たとえば上の図のいちばん下の例では、cmapもaaltも同系統であるモリサワのPr6とProの間で、レパートリの違いによって化けている。
  • 化けるのは漢字とは限らず、aaltで表現されている記号類は、かなりの確率で化ける。下図は、適当に拾ったごく一部の例。

f:id:NAOI:20091125182330p:image

2009-11-24

InDesign CS4異体字のあとにテキストをペーストしたときの文字化け


  • InDesign CS4では、「aaltフィーチャによってグリフを置換されている文字」の直後にプレーン・テキストをペーストした場合(あるいはテキストを「フォーマットなしでペースト」した場合)、ペーストした文字にaalt属性が伝染してしまう*1
  • たとえば、小塚ゴシックProで字形パネルからCID+12123の小鍵(U+FE41の4番目の異体字)を入力し、その直後に「二」(U+4E8C)を「フォーマットなしでペースト」すると、「貮」(U+4E8Cの4番目の異体字)に化ける。

f:id:NAOI:20091124175043p:image

  • これはInDesign CS2に見られた問題で、CS3では直っていたが、CS4で再発している。この問題は、InDesign CS2、CS3でも見られる。(twitterでの@akatsuki_pocketさん、@monokanoさんのご教示により訂正。ご指摘ありがとうございました)

*1:「aaltフィーチャによってグリフを置換されている文字」が段落の先頭にある場合は、その直後へのペーストだけでなく、上書きペーストまたは直前へのペーストでも。

2009-11-20

Apple Mailはformat=flowedを捨てたのか


  • Mac OS X 10.6.2で、Mailのバージョンは4.1から4.2になった。小数点以下1桁目が上がったわりには変化がないなあと思っていたら、実は変わっていた。メッセージをformat=flowedで送信するのをやめたようだ。
  • Mailはformat=flowedがあまり知られていなかった頃からいち早く実装し、時代が追いついてくるのを待っているという印象だった。しかしformat=flowedはいまひとつ普及しないまま時は流れ、ここへきてAppleも方向転換したということだろうか。
  • 下図は、上のウインドウがMail 3.6(Mac OS X 10.5.8)から、下がMail 4.2(Mac OS X 10.6.2)からのメッセージ。後者のヘッダには「format=flowed; delsp=yes」という記述がない。

f:id:NAOI:20091120180126p:image

  • それぞれの本文のソースは、下図のとおり。Mail 4.2が採用している「ISO-2022-JPでもquoted-printableでエンコードして送信する」というやり方は、これまでに目にした記憶がなく、それがいい方法なのかどうかはよくわからない。

f:id:NAOI:20091120180149p:image

2009-11-19

InDesign CS4で「※」や「×」が恐い


  • InDesign CS4で「※」や「×」などの文字が、「和字」であるように振る舞ったり、「欧文用文字」であるように振る舞ったりする。Adobeに問い合わせ中の事例で、再現性が環境に依存する可能性があるのだけれど、とりあえず、わたしの環境における挙動をメモ。
  • InDesign CS4で「環境設定>組版>CIDベースの文字組みを使用」をオフ、「段落>文字組み」は「行末約物半角」とし、テキストフレームに以下のようなテキストを入力する。

あ±1

あ×1

あ÷1

あ§1

あ※1

あÅ1

あ†1

あ‡1

あ¶1

  • これを一度保存して開き直したものが下図。「あ」の後ろに和欧間のアキが入っており、「※」などの記号類は欧文用文字として扱われている。

f:id:NAOI:20091119155508p:image

  • これだけでもCS3との非互換性が問題なのだが、さらに面倒なことに、テキストを編集することによって記号類の属性が変化することがある。下図は、1行目の「±」の前の「あ」を「い」に変更し、2行目の「×」の前の「あ」のウエイトを変更したもの。変更した文字に隣接する「±」と「×」は、和字として扱われるようになった。

f:id:NAOI:20091119155523p:image

  • これを保存して開き直したのが、下図。さらにややこしいことに、「±」は再び欧文用文字として扱われている。先行する文字の変更による属性の変化は開き直すことでクリアされ、フォントやサイズの変更による属性の変化は開き直しても継承されるようだ*1

f:id:NAOI:20091119155533p:image

  • そんなわけで、よくわからない点が多いのだが、現時点での結論。InDesign CS4で「CIDベースの文字組みを使用」をオフにすると恐い。

*1:図に含まれる記号については、どの文字で試しても挙動は同じ。

2009-11-18

モリサワGlyphPaletteの赤い字って何?


  • ぱっと見たところ、「赤い字」が目立つ。最初は「Unicodeとの直接対応がないグリフ」が赤なのかと思ったが、それでは説明できない例もある。ユーザガイドによれば「検索結果表示エリアまたは異体字表示エリアに表示された赤い文字は、CIDコードのみの文字(異体字)です」とのこと*1。これを読んでも、よくわからない。

f:id:NAOI:20091118181405p:image

  • で、少していねいに見てみると、「Unicodeとの直接対応がなく、かつ、83pvに含まれないグリフ」が赤字で表示されているようだ。言い方を変えれば、Unicodeとの直接対応がなくても、83pv(GlyphPaletteの表記では「シフトJIS」)に含まれれば、黒。しかし、これは不思議な仕様である。
  • ユーザガイドには、「異体字入力に対応した文字編集ソフトに入力された異体字は、文字編集ソフト側の属性に依存して入力されますので、異体字入力に対応していない文字編集ソフトに異体字をコピーすると文字化けすることがあります」とあり、InDesign→Wordの例が図示されている。この理屈であれば、83pvに含まれるグリフであってもUnicodeとの直接対応がなければ(GlyphPalette→)InDesign→Word(など)で化けるのだから、赤で表示するべきだと思うのだが。

f:id:NAOI:20091118181434p:image

*1:ところで、ユーザガイド(PDF書類)のテキストをコピー禁止にする意味ってあるのだろうか。仕方ないので手入力したけど。

2009-11-16

Illustratorに漢字として扱ってもらえない漢字


  • 下図は、Illustrator CS4でいくつかの漢字とその符号位置を入力したもの。文字組みは「行末約物半角」。「U」のタテの並びを見ると、U+6F22「漢」を除いて和欧間隔が入っていない(つまり、文字組みにおいて漢字として扱われていない)ことがわかる。

f:id:NAOI:20091117150908p:image

  • どうもオリジナルのCJK統合漢字(U+4E00―U+9FA5)以外は全滅のようだ。上図でIllustratorに漢字として扱ってもらえていないU+3402は、1999年(10年前だぜ)にUnicode 3.0で追加されたCJK統合漢字拡張Aブロックの文字。U+9FB4は無印のCJK統合漢字ブロックに属する文字だがUnicode 4.1で追加されたもの。U+FA10はCJK互換漢字。U+2000BはCJK統合漢字拡張B。U+2F81AはCJK互換漢字追加。

2009-11-13

文字ビューアに文字をドロップするとハングルに化ける


  • Snow Leopardの文字ビューアの「文字の情報」に、エディタなどからU+2000B(点のある「丈」)をドラッグ&ドロップすると、U+D040 HANGUL SYLLABLE KWILSに化ける(下図)。この例に限らず、Unicodeの1面以降(0面以外)の文字は、すべて文字ビューアへのドラッグ&ドロップで化けるようだ。

f:id:NAOI:20091113165518p:image

  • 化け方には規則性があって、UTF-16のサロゲート・ペアをUnicodeスカラ値に変換する計算に失敗しているかんじ。下図、括弧内はサロゲート・ペアの符号位置。赤字部分は共通点を強調して示したもの。

f:id:NAOI:20091113165550p:image

2009-11-11

合成フォントの「全角約物」には何が含まれるのか


  • InDesignIllustratorの合成フォント機能では、文字種(漢字/かな/全角約物/全角記号/半角欧文/半角数字)ごとに各種の設定ができる。では、それぞれの文字種には、具体的にどのような字が含まれるのだろう。答えは合成フォントのファイルに書いてあるのだが、そのままではわかりにくいので図にしてみた。図に用いたフォントは、ヒラギノ丸ゴProとMinion Pro。
  • 「かな」は下図のとおり。小書きの「か」(U+3095)と「け」(U+3096)が入っている点からするとAdobe-Japan1-5以降のcmapを想定しているようなのだが、JIS X 0213で追加されたカタカナ(小書きの「ク」など)は入っていない。

f:id:NAOI:20091111152535p:image

  • 「全角約物」は下図のとおり。フォントによっては全角でない文字も含まれる。引用符(シングルとダブル)は「全角約物」に分類されているので、引用符に「半角欧文」のフォントを利用したい場合は「特例文字」として指定する必要がある。

f:id:NAOI:20091111152553p:image

  • 「全角記号」は下図のとおり。フォントによっては全角でない文字も含まれる。また「記号」といっても、全角の数字、ラテン文字ギリシア文字キリル文字を含む。セント記号(U+00A2およびU+FFE0)やポンド記号(U+00A3およびU+FFE1)などは「全角記号」に分類されているので、これらに「半角欧文」のフォントを利用したい場合は「特例文字」として指定する必要がある。

f:id:NAOI:20091111152609p:image

  • 「半角欧文」と「半角数字」は下図のとおり。U+007F(図ではゲタ)が「半角欧文」に含まれているのは何かの間違いだと思うが、実害はない。

f:id:NAOI:20091111152629p:image

  • 以上の図に含まれない文字はすべて「漢字」に分類される*1。下図は、その一部。これらは合成フォントにおける分類上は「かな」でも「全角約物」でも「全角記号」でも「半角欧文」でもない。

f:id:NAOI:20091111152648p:image

*1:ただし合成フォントは(CIDベースではなく)Unicodeベースの機能なので、OpenTypeフォントのグリフ置換機能によって表現されたグリフの扱いは、親字に準じる。関連する話題として、works014さん(なんでやねんDTP)の「ルビの中黒_とりあえずの解決策」を参照されたい。

2009-11-04

InDesign CS4ライブラリを経由すると段落スタイルの設定が変わる


  • 具体的には、「文字組み:なし」とした段落スタイルを新規に作成し、その設定を含むテキストフレームをオブジェクトライブラリに登録して他のドキュメントに割り付けると、段落スタイルの設定を含めて「文字組み:行末約物半角」に変わってしまう。同様に「禁則処理:禁則を使用しない」は、「禁則処理:強い禁則」に変わってしまう。Adobeには報告済み。