GlyphsをTextBlockに置き換えることの問題点GlyphsをTextBlockに置き換えればフォントファイルを伴う必要が無くなり、プログラミングに使うのには便利だと考えました。しかし、完全には置き換えられないことがわかりました。 ※クライアントにCambria Mathフォントを導入するには、「PowerPoint Viewer 2007」をインストールすれば良いようです。 ※Linux-FireFoxでも、(Moonlightプラグインで)Silverlightを実行できますが、動作するものとしないものがあります。フォントの参照のし方との関係を試して見たところ、フォントを組み込みにしたもの(Glyphsを使ったもの)だけが動くようです。TextBoxにしてファミリ名で参照したものは動作しませんでした。フォントファミリに「Portabl User Intaface」を指定するのも不可だったので確認方法の方にも問題があるかもしれません。 1.Unicodeのない文字 XPSファイル中の Glyphs には、UnicodeString がなく、Indices のみが指定されている箇所があります。 1.1.一般的な対応
1.2.Cambria Math フォントの場合の対応
1.3.Cambria Math フォントの対応表 フォントファイル中の、Unicodeで参照されない(Indicesのみで参照される)Indicesの値について、Unicodeを決める表を用意します。 1.3.1.数字、英字、ギリシャ文字、キリル文字 大きさ、上付き、下付き、斜体などの異なるものが格納されています。字形は Unicode で参照されるものと大差ないと判断しました。 1.3.2.文字と同じ扱いの数学記号以下のような文字は、「数字、英字、ギリシャ文字、キリル文字」と同じ扱いにしました。 ∑∏∩∪⨀⨁⨂⨃⨄⨅⨆⨇⨈⨉ 1.3.3.括弧などIndicesで指定されたフォントの高さになるように、Unicodeで参照される文字の高さを拡大縮小します。幅は、線幅が太くなるのを避けるために保持することにしました。 1.3.4.縦書き用の括弧 Indicesで指定されたフォントの幅になるように、Unicodeで参照される文字の幅を拡大縮小します。高さは、線幅が太くなるのを避けるために保持することにしました。 1.3.5.対応できていないものいくつかわたしにはわからないものがあります。
2.縦書きの問題
日本語の縦書は、Glyphsで実現されています。RenderTransform での回転と、IsSideways が true に設定されてます。IsSideways を true に設定すると、文字形そのものの回転を抑止する効果があります。 これを TextBlock などで行うことはできないようです。 ワードで選択可能な「文字列の方向」と、Xps2Xaml での変換結果を下図に示します。 ※文字列の回転では、ワードアートやパワーポイントでの傾斜がありますが、これはきれいに表示されます。これらは、文字ではなくPathで記録されるためです。 |