シナリオ:
フォントを埋め込むために @font-face 宣言を利用する Flex アプリケーション。(テキストを回転できるようにするには、埋め込みフォントが必要です。)
このアプリケーションはもともと英語のアプリケーションとして開発されましたが、ローカライズ中に、アジアの文字を表示できる Unicode フォントを見つけることが必要になりました。アプリケーションの元の実装では、4 つのフォントを使用して、文字強調のさまざまな順列に対応しています。Bold、Bold Italic、Italic、および Normal はすべて、対応する Arial ファミリの Arial フォントを通じて提供されます。
問題:
次のような方法で、太字、斜体、および太字斜体に使用できるフォントとしてコンパイルしようとすると (はい、理想的ではありません。これは、実行できるかどうかを確認するための単なるテストでした):
@font-face { src:url("/fonts/ArialUnicode.ttf");
fontFamily: myFamily;
fontWeight: normal;
fontStyle: normal;
advancedAntiAliasing: true; }
@font-face { src:url("/fonts/ArialUnicode.ttf");
fontFamily: myFamily;
fontWeight: bold;
fontStyle: normal;
advancedAntiAliasing: true; }
etc.
問題は、アプリケーションのコンパイル時に Flex が不安定になり、次のエラー メッセージが表示されることです。
[ERROR] /dirpath/Style.css:[49,-1] exception during transcoding: Font for alias 'myFont' with italic style was not found at: file:/dirpath/fonts/ArialUnicode.ttf
そのため、調査の結果、Unicode は Italics も Bold もサポートしていないため、Flex コンパイラがフォントを埋め込もうとすると、css 要件を満たす指定された場所にフォントを見つけることができないため、問題が発生することが判明しました。
font-face 宣言を最も単純な形式に戻すと、次のようになります。
@font-face { src:url("/fonts/ArialUnicode.ttf");
fontFamily: myFamily;
fontWeight: normal;
fontStyle: normal;
advancedAntiAliasing: true; }
すべて正常にコンパイルされ、アプリケーションは通常の太さ、通常のスタイルのアジア文字を正常に表示します。ただし、スタイル シートで太字または斜体で表示されるものを表示すると、それらのスタイルでその文字をレンダリングできる埋め込みフォントもシステム フォントもないことを示すボックスが表示されます。
ここからが奇妙になります。
まったく同じ Unicode フォントがシステムにインストールされている場合、アジア文字が太字と斜体で表示され始めます。上記の css スタイルを満たすために Flex がそのフォントを埋め込もうとしたときに示されたように、太字と斜体の文字がフォントに含まれていないため、これは意味がありません。しかし、このフォントがシステム フォントとしてインストールされる前は、太字と斜体の文字を単なるボックスとして表示するために使用されていることは明らかです。これはある種の Flex ブードゥー教ですか? もしそうなら、ユーザーが外出してシステムにUnicodeフォントをインストールしなければならないことに頼ることができないので、プログラムでブードゥーを呼び出すことができる方法があります。
編集:問題を明確にする可能性のある追加情報を次に示します。
私の質問は、ローマ字の複数のフォントフェイスと太さをどのように行うかではなく、「Flex はシステムフォントに太字と斜体をどのように適用するのですか?そのフォント。」
問題を再現可能にする手順は次のとおりです。
- MS Arial Unicode のみをアプリケーションに埋め込み、展開します。
- 新しい Windows 2003 マシンで、Firefox を開き、日本語を選択します。
- アプリケーションの URL に移動し、太字と斜体のボックスを表示します。
- Firefox を終了します。MS Arial Unicode フォントを Windows 2003 システムにインストールします。
- Firefox を開いて繰り返します。以前はボックスだった領域が、太字/太字斜体/斜体の日本語文字になりました。
この問題を解決する方法はそれほど重要ではありません。実行可能なソリューションはたくさんあります。しかし、私が本当に知りたいのは、Flex が太字や斜体をサポートしていないと言うフォントにどのように太字や斜体を適用するかということです。
ありがとう、C