Author Archive
文字コードUTF-8のページに設置したmailtoの文字化け
弊社のサービス「のみテレ」に幹事サポート機能を追加したので、社内のお花見告知に早速使用してみたのですが・・・
特定のメーラーで文字化けが発生するという報告がありました。
基本はモバイル向けですので、モバイル端末では問題ないのを確認していたのですが、PCではOutlook系のメーラーにてサブジェクト、本文ともに文字化けしていました。
調べてみるとどうやらUTF-8のページにUTF-8向けにURLエンコードしたmailtoリンクを設置すると文字化けする模様。
サンプル
shift_jis
shift_jis向けにURLエンコードした場合では正常に表示されたのでこちらで問題ないと思いきや・・・
今度はThunberbirdで文字化け発生です。
- shift_jisで正常に表示される
- Outlook
- OutlookExpress(Windows Mail)
- Becky!2
- shift_jisでは文字化けする
- Thunderbird
- utf-8で正常に表示される
- Becky!2
- Thunderbird
- utf-8で文字化けする
- Outlook
- OutlookExpress(Windows Mail)
どうやら「文字化けする場合はこちら」という形でリンクを併記するしかなさそうです。
ちなみにMacの場合は逆にURLエンコードしない方が文字化けしないという情報もありましたので、JavaScriptからOSを判定する必要があるかもしれません。
静的なリンクにはなりませんが、mailtoはSEOも関係ないので問題ないでしょう。
血液型PV合戦:ブログパーツ
新しいブログパーツとして「血液型PV合戦」を公開しました。
パーツを貼ってくれたブログのPV数を集計し、勢力分布図が変化していきます。
血液型の種類によって人口が異なり、不公平になりますので、登録されたブログの平均PVから計算するように調整しています。
Flashへのフォント埋め込みとライセンス
先日「新聞一面ジェネレータ」を作成した際に、固定で作成している大見出しとは別に自由にテキストを入力できる見出し部分のフォントを予め取りこんでおいて新聞風に見せるようにしていました。
しかし、色々と調べてみたところほとんどのフォントベンダーはFlashへのフォンと埋込を認めておらず、ライセンス違反になるとのことで、急遽修正しました。
基本的には第3者へのフォントの再配布と見なされるそうです・・・
確かに空きに選択した文字がアウトラインを伴って表示されるのですが、そのままフォント情報を抜き取って利用できる形にはなっていないんですよね。
(PDFへのフォンと埋込と配布についても同様に扱われる場合もあるそうです)
AdobeにとってみるとPDFやFlashで持っている機能が一部制限されるわけで、そこをなんとかしようとフォントベンダーとの交渉を重ねているようですが、はやく自由度が上がると良いですね。
ちなみにAdobeによると
小塚明朝・ゴシックについては編集可能な状態での埋め込みを許可しているようです。
http://www.adobe.com/jp/type/browser/legal/embeddingeula.html
※新聞一面ジェネレータでも小塚ゴシックを使用しました。
別件でポストカードの裏面を編集できるサイトを構築しましたが、その際はフォントベンダーさんが仲介されていた案件ということもあり、ベンダーさんのご厚意でフォントを埋込可能でしたが、普段はなかなかそうはいかないでしょうし、ましてや今回のような実験的サイトではほとんど収益が発生しないため無理ですね。
どこか思い切ったメーカーさんで、Flashへの埋め込みOK!という形でリリースしていただけるとかえって売上が上がるように思うのは素人考えなんでしょうか?
TextField へのスクロールバーの追加
通知表ジェネレータにて縮小表示時に文字が読みづらいためサイズ変更したところ1画面に収まらなくなってしまいました。
そこで、スクロールバーを表示させるためにUIScrollBarというコンポーネントを使用してみました。
コンポーネントを使用するためには、[ウィンドウ]→[コンポーネント]で、コンポーネントウィンドウを開き、UIScrollBarをドラッグして、TextFieldの端へ配置します。
(この際にオブジェクトへ吸着にチェックが入っていることを確認しておいてください)
右端側へ吸着させれば垂直の、下部に吸着させれば水平のスクロールバーとなります。
あとは、TextFieldに収まりきらないテキストがセットされると自動的にスクロールバーが表示されます。
ただ、方法によってはUIScrollBarがうまく表示されない場合があります。
- Varsからテキストをセットした場合
- TextFieldの変数名とインスタンス名が同じであった場合
1は、TextFieldに変数名を設定し、変数にテキストを代入することによって内容を切り替えていた場合にスクロールバーがうまく表示されません。
TextFieldにインスタンス名を設定し
[TextFieldのインスタンス名].text = “代入するテキスト”;
というようにtextプロパティからテキストをセットする必要があります。
2はインスタンス名と変数名が同じ場合に変数への代入が優先されてスクロールバーが出ないおそれがあるためです。
TextFieldにインスタンス名をつけ、 ‘TextField.text’プロパティを使ってテキストを設定してください。TextFieldにはインスタンス名に加えて変数名も使用できます が、スクリプトに混乱を生じるおそれがありますので、変数名は削除することをお勧めします。
ちなみに、縦横50%のサイズに縮小した場合にスクロールバーが細すぎるため、幅を増やせないかとあれこれ挑戦してみましたが、配置時にサイズ変更をしても、実行してみると元のサイズ(幅16pix)で表示されてしまいます。
Flash CS3 ドキュメンテーションを確認すると
UIScrollBar コンポーネントは、オーサリング時にも実行時にも縦横に変形させることができます。ただし、垂直方向の UIScrollBar の幅、水平方向の UIScrollBar の高さを変更することはできません。
とのことでした。好きな幅に設定できるといいんですけどね。
好みの形にするには自作するしかないようです。
ダイナミックテキスト(デバイスフォント)へのマスク指定
通知表ジェネレータの表紙には、本人の名前がセットされるようにTextFieldが配置されています。
ページめくりのエフェクトの為、表紙にはマスクがかかっており、裏ページにあわせてマスクが移動することで表紙がだんだん隠れていくのですが・・・・
いざパブリッシュしてみると名前欄が表示されていません。
調べてみたところ、デバイスフォントへのマスク指定はスクリプト側から
MovieClip.setMask()メソッド
にて指定する必要があるようです。
ただ単に動かないマスクであれば良かったのですが、今回は動作の絡んだもののため、仕方なくめくり始めると字が消える形でごまかしてしまいました。
そういえばデバイスフォントの場合、文字の回転をした場合も文字が非表示になってしまうんですよね。
(フォントを埋め込むと正常に回転出来ます)



