Archive for 2012/07/13

WEC 7 の Meiryo フォント

WEC 7 (Windows Embedded Compact 7) で、日本語フォントに Meiryo が追加されたのをご存じの方は、少なくないと思います。WEC 7 に標準で付属するフォントについては、リファレンスの次のページをご覧下さい。

 Fonts Catalog Items and Sysgen Variables (Windows Embedded Compact 7)
 http://msdn.microsoft.com/en-us/library/ee489874

上のページに書かれていますが、WEC 7 の Meiryo フォントは、Windows 7 のものと同じバージョンだそうです。Windows 7 と同様に、ClearType を有効にすることで、従来の MS ゴシックに比べて、より綺麗な文字表示が可能となります。ディスプレイドライバに対して ClearType の有効/無効を設定するためのレジストリキーは、次のページにある “ClearType Registry Keys” をご覧下さい。

 Display Driver Registry Settings (Windows Embedded Compact 7)
 http://msdn.microsoft.com/en-us/library/ee482851

さて、Meiryo フォントを使う場合に、注意しなければいけないことがあります。それは、”Monotype Imaging AC3 Font Compression” です。以前のエントリ(「圧縮フォント」)で書いたように、このカタログ項目を選択すると、MS ゴシックなどのアジア言語圏用のフォントファイルとして、通常の .ttc ではなく圧縮版の .ac3 が OS イメージに組み込まれます。ところが、OS イメージが小さくなるようにしたいと思って、Meiryo フォントを組み込む場合にも、この “Monotype Imaging AC3 Font Compression” を選択すると、ウィンドウのタイトルバーやメニュー項目、ボタンのラベルなど、標準の GUI 部品の日本語文字列が表示されなくなるのです。

そうなってしまう理由は、%_WINCEROOT%/public/COMMON/oak/files/ ディレクトリにある common.reg と common.bib を見ると分かります。まず、common.reg で “[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]” を検索してみて下さい。すると、このキーに対して、MS UI Gothic を代表的なフォントに関連づけるブロックがあって、その次に、Meiryo UI を、代表的なフォントおよび、MS ゴシック系統のフォントファミリに関連づけるブロックがあります。以下に、当該個所を引用します。


; @CESYSGEN IF FONTS_MSGOTHIC || FONTS_MSGOTHIC30 || FONTS_MSGOTHIC30_1_19 || FONTS_MSGOTHIC_1_50 || FONTS_MSGOTHIC_1_60 || FONTS_MSGOTHIC_1_70 || FONTS_MSGOTHIC_1_80 || FONTS_MSGOTHIC_1_90 || FONTS_MSGOTHIC_1_48
[HKEY_LOCAL_MACHINE\SYSTEM\GDI\GLYPHCACHE]
    "limit"=dword:5000
[HKEY_LOCAL_MACHINE\SYSTEM\GDI]
   "FontLinkMethods"=dword:1
; @CESYSGEN IF !FONTS_AC3_VERSIONS
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
      "Arial"="\\Windows\\msgothic.ttc,MS UI Gothic"
      "Courier New"="\\Windows\\msgothic.ttc,MS UI Gothic"
      "Segoe UI"="\\Windows\\msgothic.ttc,MS UI Gothic"
      "Symbol"="\\Windows\\msgothic.ttc,MS UI Gothic"
      "Tahoma"="\\Windows\\msgothic.ttc,MS UI Gothic"
      "Times New Roman"="\\Windows\\msgothic.ttc,MS UI Gothic"
; @CESYSGEN ENDIF !FONTS_AC3_VERSIONS
; @CESYSGEN IF FONTS_AC3_VERSIONS
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
      "Arial"="\\Windows\\msgothic.ac3,MS UI Gothic"
      "Courier New"="\\Windows\\msgothic.ac3,MS UI Gothic"
      "Segoe UI"="\\Windows\\msgothic.ac3,MS UI Gothic"
      "Symbol"="\\Windows\\msgothic.ac3,MS UI Gothic"
      "Tahoma"="\\Windows\\msgothic.ac3,MS UI Gothic"
      "Times New Roman"="\\Windows\\msgothic.ac3,MS UI Gothic"
; @CESYSGEN ENDIF FONTS_AC3_VERSIONS
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SkipTable]
      "Tahoma"="005c,00a5,007e,0391-03c9,2026,2116,221a,25a0-25ff"
; @CESYSGEN ENDIF FONTS_MSGOTHIC

; @CESYSGEN IF FONTS_MEIRYO
[HKEY_LOCAL_MACHINE\SYSTEM\GDI\GLYPHCACHE]
    "limit"=dword:5000
[HKEY_LOCAL_MACHINE\SYSTEM\GDI]
        "FontLinkMethods"=dword:1
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
      "Arial"="\\Windows\\meiryo.ttc,Meiryo UI"
      "Courier New"="\\Windows\\meiryo.ttc,Meiryo UI"
      "MS Gothic"="\\Windows\\meiryo.ttc,Meiryo UI"
      "MS PGothic"="\\Windows\\meiryo.ttc,Meiryo UI"
      "MS UI Gothic"="\\Windows\\meiryo.ttc,Meiryo UI"
      "Segoe UI"="\\Windows\\meiryo.ttc,Meiryo UI"
      "Symbol"="\\Windows\\meiryo.ttc,Meiryo UI"
      "Tahoma"="\\Windows\\meiryo.ttc,Meiryo UI"
      "Times New Roman"="\\Windows\\meiryo.ttc,Meiryo UI"
; @CESYSGEN ENDIF FONTS_MEIRYO

この記述があるために、MS ゴシックと Meiryo のカタログ項目を両方選択した場合、デフォルトのフォントとして Meiryo が設定されます。ここで、FONTS_AC3_VERSIONS が設定されているか否か、つまり、”Monotype Imaging AC3 Font Compression” が選択されているか否かに関わらず、meiryo.ttc が設定されることにも注意して下さい。実は、msgothic とは違い、meiryo には、.ac3 ファイルが存在せず、meiryo.ttc しかありません。興味のある方は、%_WINCEROOT%/public/COMMON/oak/files/ ディレクトリをご覧になってみて下さい。

なお、レジストリの [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink] キーについては、リファレンスの次のページに説明があります:

 Fonts Linking Registry Settings (Windows Embedded Compact 7)
 http://msdn.microsoft.com/en-us/library/ee489864

さて、MS ゴシックと Meiryo のカタログ項目を両方選択した場合、common.reg の記述により、Meiryo がデフォルトのフォントとして設定されることが分かりました。次は、common.bib を見てみましょう。common.bib で “; @CESYSGEN IF FONTS_AC3_VERSIONS” を検索してみて下さい。この行の以下、つまり、FONTS_AC3_VERSIONS が設定されている場合の条件ブロック内には、Meiryo に関する行が存在しないのです。FONTS_AC3_VERSIONS が設定されていない場合の条件ブロック(ELSE ブロック)には、meiryo.ttc が記述されています。

これで、お分かりでしょうか。OS Design で、MS ゴシックと Meiryo のカタログ項目を両方選択すると、Meiryo (meiryo.ttc) がデフォルトのフォントとして設定される一方、”Monotype Imaging AC3 Font Compression” が選択されていると、common.bib の記述により、meiryo.ttc が OS イメージに組み込まれないのです!

というわけで、Meiryo フォントを OS イメージに組み込む場合は、カタログ項目の “Monotype Imaging AC3 Font Compression” を選択しては、いけません。

さて、”Monotype Imaging AC3 Font Compression” については、Silverlight for Windows Embedded アプリケーションの場合も注意が必要です。リファレンスの次のページにある、”Monotype Imaging AC3 Font Compression” の説明をご覧になってみて下さい。

 Japanese Catalog Items and Sysgen Variables (Windows Embedded Compact 7)
 http://msdn.microsoft.com/en-us/library/ee491212.aspx

上のページには、AC3 フォント圧縮が、Silverlight for Windows Embedded ではサポートされておらず、そのため、AC3 フォント圧縮を有効にした OS Design では、非圧縮版のフォントファイルをアプリケーションに埋め込む必要がある、と書かれています。ちなみに、WinCE 6.0 のリファレンスにある AC3 フォント圧縮のカタログ項目の説明には、このような注意書きが、見当たりません(※もし、僕が見落としているのであれば、教えて下さい):

 Japanese OS Design Development (Windows Embedded CE 6.0)
 http://msdn.microsoft.com/en-US/library/ee491212(v=winembedded.60)

WEC 7 において、Meiryo フォントおよび Silverlight for Windows Embedded アプリケーションが AC3 フォント圧縮をサポートしていない理由は、分かりません。もしかすると、Meiryo フォントが AC3 フォント圧縮に向かない仕組みなのかも知れません。Silverlight for Windows Embedded アプリケーションでは、表示を綺麗にするために Meiryo フォントを使うようになっており、そのため、上述したように、AC3 フォント圧縮が有効になっていると日本語が表示されない(meiryo.ttc が OS イメージに組み込まれないため)、ということなのかも知れません。

Add comment 2012/07/13 koga


Categories

Links

Posts by Authors

Recent Posts

Calendar

2012年7月
« 6月   8月 »
1234567
891011121314
15161718192021
22232425262728
293031  

Posts by Month

Posts by Category

Meta