Google Web Fonts をタイトルのロゴに使用しようとしたが、ブラウザによっては文字がきれいに表示されない。自分の Windows の環境では Firefox と IE ではきれいに表示されるが、Chrome、Safari、Opera では、文字の周りがぎざぎざしていてちょっとそのまま使用するのは難しい。
検索したところ、CSS3 の text-shadow でぼかしを使って対応する方法をみつけたので試してみるがある程度は良くなるが、今度はきれいに表示されていた Firefox と IE で文字がもったりした感じになってしまう。
また、Opera ではぼかしを使ってみてもまだかなり汚い。
そこで JavaScript で OS とブラウザを判定し、jQuery を使って Chrome、Safari の場合は text-shadow を適用し、Opera の場合は画像を表示するように下記のようにしてみた。
- var ua = navigator.userAgent.toLowerCase();
- if(ua.indexOf('win') != -1){ // Windowsでの処理
- // chrome, safari の場合は text-shadow を適用
- if(ua.indexOf('chrome') != -1 || ua.indexOf('safari') != -1) {
- $('div#header h1').css('text-shadow', '0 0 1px #871CA6').find('span').css('text-shadow', '0 0 1px #BA97C4');
- // opera の場合は画像で表示する
- }else if(ua.indexOf('opera') != -1) {
- $('div#header h1').css({background: 'url(images/logo_top.png) no-repeat top left', ,textIndent: '-9999px', width: '350px', height: '29px'});
- }
- }else if(ua.indexOf('mac') != -1){
- // 処理Macでの処理(Mac での表示はまだ確認していないので、未対応)
- }
メモ:
css() メソッドで background プロパティを指定する場合、画像へのパス(url)はその要素が記述してあるファイルからのパスを指定(スクリプトファイルからのパスではない)。
以下は WordPress での例。違いは画像へのパスをフルパスで記述する必要がある。
- //画像フォルダへのパス
- var img_dir = "http://" + window.location.hostname + "/wp-content/themes/mysite/images/";
- var ua = navigator.userAgent.toLowerCase();
- if(ua.indexOf('win') != -1){ // Windowsでの処理
- if(ua.indexOf('chrome') != -1 || ua.indexOf('safari') != -1) {
- $('div#header h1').css('text-shadow', '0 0 1px #871CA6').find('span').css('text-shadow', '0 0 1px #BA97C4');
- }else if(ua.indexOf('opera') != -1) {
- $('div#header h1').css({background: 'url(' + img_dir + 'logo_top-trans.png) no-repeat top left', textIndent: '-9999px', width: '350px', height: '29px'});
- }
- }else if(ua.indexOf('mac') != -1){
- // 処理Macでの処理
- }
画像を作成する際は、フォントをダウンロードする必要があるが、以下はその方法。