人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CSSのフォントにArialを設定しているwebページに全角スペースを表示しようとすると、下記2環境で文字幅が異なります。
1.日本語が使用可能なPC
2.海外のPC(日本語不使用)
PCは同一の機種同士で、シングルバイト文字なら同じ幅で表示されます。
原因(もしくは原因の特定法)と、どうすれば両環境で同じ表示にできるかを教えてください。

●質問者: Ohk
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CSS pc Web シングル バイト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うみちゃん
●27ポイント

一応前提としては双方ともMicrosoft Windowsだということでよろしいですね?

答えは単純で、非CJK環境(中文、和文、韓文)のArialには「全角スペース」、つまりU+3000の情報がないからです。

現在のWindowsは基本的にUnicodeで文字を扱います。TrueTypeやOpenTypeといったフォントセットもUnicodeに対して字形を割り当てています。実際にはWindowsにも各言語版がありますが、全体では同じ文字は同じコードポイント(文字を表す数値と思ってください)で扱っています。

さて、いわゆる「全角スペース」はU+3000というコードポイントが割り当てられています。この字形(形なんかないですが、あえて字形と呼びます)は、和文、中文、漢文などのフォントセットでは定義されていますが、そのほかのフォントセットでは定義されていません。Windowsの規定の動作では、どうやらU+3000を持ってない場合は「似てる文字」であるU+0020、いわゆる「半角スペース」相当の字形で代替表示しているようです(確かではありません。もしかすると他の間隔を表す字形かもしれないです。このへんWindowsの内部動作になってしまうので)。この手の変換に関してはこちらに記事があります(ただし、Windowsの機構そのものを説明してるわけではないと思うので、詳細な動作は異なるはずです)。

ちなみにArialって基本的には欧文フォントで、和文は定義されてないですよね。しかし日本語環境では、日本語文字は日本語文字で見えますし、欧文文字はArialのフォントで見えます。これはWindowsの持つFontLinkという機構が働いています。詳細はリンク先をご参照ください。この機能を活用すれば、他国語環境でも全角スペース(U+3000)を表示できます。単純にArialを指定しても、Arial Unicode MS(こちらはUnicodeのコードポイントの大半の文字がある)が表示側のWindows PC上にあると、Arialにない文字をそこから補う動作も行う可能性があります。このフォントはMicrosoft Officeに付属しています。

さて、では「いろんな環境で見る可能性がある場合に、全角スペース程度のアケを表現する場合にどうしたらいいのか?」というと、HTML/XHTMLの文書でしたら、単純に実体参照を使えばよいでしょう。一覧はこちら。私なら、m文字幅スペース(活字体のmと同じ幅のスペースを取る)、すなわち を使うでしょう。

◎質問者からの返答

原因について、大変参考になりました。

但し、質問には記載しなかったのですが、当現象はSAP社製品のエディタに定義するテキストをWebページに出力する際に発生しているので、実体参照などはちょっと厳しいようです。


2 ● fonya3
●27ポイント

全角スペースではなく、実態参照の半角スペース2個に

変えてみたらどうですか。2バイト文字の表示が出来ない

ブラウザの2バイト文字の表示を考えるのは無理があります。

http://wiki.harunaru.com/nob/Character.html

◎質問者からの返答

1.の返信に記載した通り、SAP社製品のエディタに定義することが前提です。

ご指摘の半角スペース2個ですが、複数個の半角スペースはWebページ表示の際に自動的に詰まってしまい対応不可です。

CSSは設定可能ですが、半角スペースを詰めない設定はあるのでしょうか?


3 ● fonya3
●26ポイント

> 半角スペース2個ですが、複数個の半角スペースはWebページ表示の際に自動的に詰まってしまい対応不可

ただの半角スペースの連続は確かにひとつの半角スペースとして

しか表示されませんが、 (便宜上2バイト文字で記述)

はいくつ連続して記述してもちゃんとその数の分だけスペースが入ります。

SAP社のエディタが何を表すのか分かりませんが、ABAPエディタ

で書いたWRITE命令で書き出される半角スペースも に

変換してから出力すればHTML的に見たときにちゃんと複数個の

スペースとして表示されるのではないでしょうか。ABAPからのHTML出力は経験が

ありませんのでなんとも言えませんが半角スペースを 

に変換してからHTMLへ出力するのはWebアプリ的には常識です。

たぶん、ABAPの場合はGUI向けの表示とHTML表示の折り合い

をどう付けるかが悩みどころかと思いますが、折り合いが

付かないなら妥協することも必要でしょう。例えば、preタグ

でフォーマットするとか。。。

データ上の半角スペースはHTMLでは に変換してから

出力する、これは定石とお考えください。

http://www.2ones.com/bidders+/index.php?tag=%E5%85%A8%E3%81%...

◎質問者からの返答

SAP社のエディタは、Bexクエリデザイナというエディタで、パラメータ設定によるクエリ作成ツールです。

従って言語でコーディングする手のモノではなく、パラメータ設定や、単純なテキスト入力にしか対応してません。

手を入れられるとすれば、CSSくらいと思っていますが・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ