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

2009-09-30

Apple Mailのテキストエンコーディング


f:id:NAOI:20090930152302p:image

  • ただし、半角カタカナは例外。Leopardでは半角カタカナは(それ以外の文字がISO-2022-JPの範囲内であれば)全角に変換した上でcharset=ISO-2022-JPで送信する仕様だった。Snow Leopardは半角カタカナを不正なISO-2022-JP(図、ピンク地)で送信する仕様に戻ってしまっている。以下は関連するエントリ。

Apple Mailがcharset=CP932のメールを送信する理由がわからないTiger

Apple Mailにおけるテキストエンコーディングの優先順位Tiger

Apple Mailのテキストエンコーディングの細かい話Tiger

Mailの「ISO-2022-JPもどき」問題はLeopardでどうなったかLeopard

2009-09-18

Snow Leopardの文字ビューアはどこが変わったのか


  • Leopard以前の「文字パレット」は、Snow LeopardMac OS X 10.6)では「文字ビューア」になった。でもファイル名は「CharacterPalette.app」。Mac OS Xにおける「パレット」と「ビューア」の定義の違いって何なのだろう。
  • Leopardの文字パレットは一般的なアプリケーションウインドウと同様、Spacesにおいて単一の操作スペースに表示されるため、操作スペースを切り替えると置き去りにされてしまい不便だった。文字ビューアはすべての操作スペースに(同時に)表示される。
  • 文字ビューアでは「説明とコード」と記された検索フィールドが追加された(括弧内追記。いま自宅のLeopardマシンで確認したら、これ、Snow Leopardの新機能じゃないですね。「説明とコード」というテキストが表示される点は新しくて、そのせいで新機能かと早とちりしました。言い換えれば、このフィールドが存在することに気付かないまま、わたしはLeopardを使い続けていたわけです。そのようなわけで、以下、「Snow Leopardで変わった点」ではないという前提でお読みください)。以下、このフィールドにいろいろ入れてみた結果。
  • 何か1文字を入力すると、その文字を表示する(下図)。

f:id:NAOI:20090918154818p:image

  • 符号位置を入力すると、該当する文字を表示。Shift JIS、BIG-5、MacKorean、GB、UnicodeJIS X 0213などをサポートしている。JIS X 0213の場合、「1-16-1」のように面区点番号をハイフンで区切って入力する(下図)。面番号は省略できない。

f:id:NAOI:20090918154830p:image

f:id:NAOI:20090918155554p:image

  • Unicode名の一部を入力すると、該当する文字を表示(下図)。

f:id:NAOI:20090918155555p:image

  • 漢字の日本語読みを入力すると、その読みを含む漢字を表示*1(下図)。訓読みはひらがなで、音読みはカタカナで入力する必要がある。せっかく読みの辞書を持っているのだから、それを検索に利用するだけではなく、漢字の情報として表示するオプションがあってよさそうなものだと思って探したが、見当たらなかった。

f:id:NAOI:20090918155556p:image

*1:1文字だけの読みに対応していないのは、仕様だろうか。

2009-09-16

InDesignでIVSが扱いにくい理由


  • 異体字セレクタ(Variation Selector)は、人から渡されたプレーン・テキストの原稿に含まれている可能性がある。
  • InDesignでテキスト中に漢字を挿入したとき、潜在していた異体字セレクタと結びついてIVSを構成し、字体が変わる可能性がある。
  • 異体字セレクタとOpenTypeタグによるグリフ指定が競合あるいは重複した場合、挙動を理解するのが難しい。
  • そのようなわけで、InDesignで作業する人にとっては、IVS(異体字シーケンス)はかなりやっかいな存在ではないかと思う。以前AdobeがIVSを推進していると聞いたときには、InDesignでのサポートは「入出力のみIVSに対応して、内部的にはOpenTypeタグで統一」ということになるのではないかと予想していた。これなら事態はもう少しシンプルだったような気がするのだけれど。

2009-09-15

InDesignにおけるJIS04基準フォントのウマヤ化け問題


  • InDesign CS4で「厩」を入力・選択し、字形パネルをダブルクリックしてCID+13647に置換。フォントは(たとえば)小塚明朝Pr6N。そのウェイトを変更してみる。と、CID+13412に化ける(下図)。

f:id:NAOI:20090915155159p:image

  • このグリフ化けのおもしろい点は、cmapテーブルもaaltテーブルも共通だと思われるフォント間で(ウェイトの違いのみで)化けていること。以下、化ける理屈(推測)について、大雑把に述べる。
  • InDesignにおけるaalt(すべての異体字)タグを利用したグリフ置換のメカニズムは、cmapテーブルまたはaaltテーブルが異なるフォント間では、基本的にうまく機能しない。実際、InDesign 2では、いろいろ化けていた。
  • CS以降のInDesignでは、Adobe-Japan1-4とAdobe-Japan1-5のcmapテーブルの違いおよび2系統存在するaaltテーブルの違いへの対策がとられており、フォントを変更するとaalt番号が自動的に補正されたり、フォントの変更がブロックされたりする。
  • が、この文字化け防止の仕組みは、JIS04基準フォント(Pr6Nフォントなど名前に「N」の付くフォント)のcmapの違いに対応していないか、あるいはサポートに失敗しており、「JIS04基準フォントへの変更」を行った場合、(同じJIS04基準フォントからの変更であっても)aaltタグで表現されたグリフの一部が化ける。
  • 「厩」のCID+13647以外では、「甑」のCID+13778と「蠅」のCID+14212も化けるが、これらはいずれも微細な違い(下図)。

f:id:NAOI:20090915155219p:image

2009-09-10

IVSとaaltタグの競合や重複


  • InDesign CS4で、IVS(異体字シーケンス)によるグリフ指定とOpenTypeのaaltタグによるグリフ指定が競合あるいは重複した場合の挙動について。
  • U+7953「祓」を例にすると、IVSとaaltタグは下図のように機能する。

f:id:NAOI:20090910192410p:image

  • では、これらが競合・重複した場合は、どうなるのか。下図は横軸が異体字セレクタ、縦軸がaaltタグ。左の列(青地)は異体字セレクタのみを適用したもの、緑地はaaltタグの指定にしたがったグリフが表示されているもの、赤地はIVSによる指定ともaaltタグによる指定とも異なるグリフが表示されているもの。

f:id:NAOI:20090910192422p:image

  • 前回のエントリで見たように、aalt以外のタグがIVSと競合した場合、結果的にどちらか一方の指定が顕在化する。しかしaaltタグとIVSが競合あるいは重複した場合、どちらの指定とも異なるグリフに「化ける」場合がある。
  • ロジックとしては(前回のエントリで取り上げた例と同様に)、まずIVSの指示にしたがった置換を行い、その結果に対してさらにaaltタグを適用している(下図)のだが、aaltによる指定が「n番目の異体字」という相対的なものであるため、よりわかりにくい挙動となっている。

f:id:NAOI:20090910192434p:image

2009-09-09

InDesign CS4におけるIVSとOpenTypeタグのあやしい関係


f:id:NAOI:20090909183359p:image

  • 同様のグリフ指定は、もちろんOpenTypeタグでも可能である(下図)。

f:id:NAOI:20090909183357p:image

  • では、1つの文字にIVSとOpenTypeタグで競合する指定を行ったらどうなるのだろう。U+990C「餌」を例として試してみた結果が、下図。横軸がIVS、縦軸がOpenTypeタグ。IVSの指定が顕在化しているものを青地、OpenTypeタグの指定が顕在化しているものを緑地で示した。白地は両者の指定が一致しているもの。

f:id:NAOI:20090909183546p:image

  • この例では、異体字セレクタがU+E0101またはU+E0102ならIVS優先、そうでなければOpenTypeタグ優先、というように見える。しかしInDesign CS4は、IVSとOpenTypeタグのどちらか一方を優先しているわけではない。ロジックとしては、まずIVSの指示にしたがった置換を行い、その結果に対してさらにOpenTypeタグを適用している(下図)。

f:id:NAOI:20090909183605p:image

  • 「餌」の例でU+E0101またはU+E0102による指定が顕在化しているのは、IVSによる置換結果であるCID+7643またはCID+13413が'jp90'などのタグの置換ターゲットではないため。
  • などと書きながら思うのだが、ここまで複雑化したものをまともに運用することが可能なのだろうか。ちなみにaaltタグがからむと、さらにややこしいことになる。その話は後日。

2009-09-01

Snow LeopardのIVS対応


  • テキストエディット*1とIVS対応フォント(手元にあるものでは、小塚明朝Pr6N、小塚ゴシックPr6N、花園明朝OT xProN)の組み合わせでは、異体字セレクタによってグリフが変化するのを見ることができる。IVSはクリップボード経由でコピー、ペーストすることが可能。
  • IVSの入力については、たぶんシステム・レベルではサポートされていない。文字ビューア(Mac OS X 10.5までの「文字パレット」に相当)の「コード表>Unicode」では2面までの文字しか表示されないので、14面にある漢字用の異体字セレクタを入力するのは基本的に不可能*2

*1Jedit XでもOK。

*2:ただし「タイトル」で「異体字選択符号追加」をクリックすると「文字の情報」として「名前:VARIATION SELECTOR-17」と表示されるので、この状態で「入力」ボタンを押せば、U+E0100(VARIATION SELECTOR-17)を入力することは、一応できる。U+E0101以降は無理だと思う。今回の確認作業では、異体字セレクタの入力にはegbridge Universal 2を用いた。

*3:わたしの環境でも確認。