• ベストアンサー

全角半角含めて等幅で表示したい

文字の等幅表示で困っています。 例えば次のような文で、右端の「|」が揃うようにしたいのですが、うまくいきません。 1234567812345678| llllMMMMIIIIAAAA| MMMMMMMM漢字AAAA| IIIIIIII| MMM<B>MM</B>MMM漢字AAAA| MMM<a href="">MM</a>MMM漢字AAAA| <tt>、<pre>、font-familyで等幅のフォントやmonospaceを選択しても、全角文字が半角文字より少し小さくなったりします。 IE6だけでも良いので揃えたいのですが、有効な方法をご存じの方がいらっしゃいましたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

Win2000+IE6、解像度1280*1024です。 興味深いので実験してみましたら、面白いことを発見しました。 <pre style="font-size:12pt;"> void main { printf("hello\n"); /* この3行のコメントと */ printf("こんちわ\n"); /* このコメントが  */ /* ずれないようにしたい */ } </pre> のように書いて(上ではインデントは消えていると思いますが、半角スペースでprintfの頭とコメントの始端終端を揃えています)、font-sizeの値をいろいろ変えて、それぞれ試してみました。 その結果、このような事実が判明しました。 ・サイズをemで指定……1emだと揃う。それ以外(0.9emとか1.2emとか)だとずれる。 ・サイズをpxで指定……偶数値なら揃う。奇数値はずれる。 ・サイズをptで指定……12ptなら揃う。 ・サイズを%で指定……揃わない。 ※em、%に関しては、ブラウザの文字サイズ指定を最小~大まで変えて確認しています。 どうしてこうなるのか全くわからないのですが、ご参考になれば。解像度を変えるとまた違ってくるかもしれませんが……

spinach-chicken
質問者

お礼

わざわざ調べて頂いてありがとうございます。 すごく参考になりました。

すると、全ての回答が全文表示されます。

その他の回答 (9)

noname#107580
noname#107580
回答No.10

No.9のyayopixです。 よく読んでみるとぜんぜん意味が違いましたね。 失礼しました・・・。 とんちんかんついでに・・ 次のも、無視して下さい・・。 途中からこれも意味が違うことに気づいたのですが・・ <body> <p>void main<BR> {<BR> printf("hello\n");<span style="margin-left:50px;">/* この3行のコメントと */</span><BR> printf("こんちわ\n");<span style="margin-left:21px;">/* このコメントが */</span><br> <span style="margin-left:159px;">/* ずれないようにしたい */</span><BR> } </p> </body> これで終わりにします・・ 最後まで失礼しました・・・m(_ _)m

すると、全ての回答が全文表示されます。
noname#107580
noname#107580
回答No.9

こんにちは! 回答のやり取りを読んでいるとどちらのことか解らなくなってしまったので、両方書いておきます。 <head> <style type="text/css"> <!-- .haba25 { text-align:justify; text-justify:distribute-all-lines; width:25em; --> </style></head> <body> <p class="haba25">Windows版IEの5~6のみの対応です。</p> <p class="haba25">Mac版のIEにも対応していません。</p> <p class="haba25">1234567812345678</p> <p class="haba25">llllMMMMIIIIAAAA </p> <p class="haba25">MMM<b>MMMMM</b>漢字AAAA</p> <p class="haba25">MMM<a href="untitled4.htm">MMK</a>MMM漢字AAAA</p> <p style="text-align:justify; text-justify:distribute-all-lines; width:16em;">1234567812345678</p> <p style="text-align:justify; text-justify:distribute-all-lines; width:16em;">llllMMMMIIIIAAAA</p> <p style="text-align:justify; text-justify:distribute-all-lines; width:8em;">IIIIIIII</p> <p style="text-align:justify; text-justify:distribute-all-lines; width:15em;">MMM<b>MMK</b>MMM漢字AAAA</p> <p style="text-align:justify; text-justify:distribute-all-lines; width:14em;">MMM<a href="#">MM</a>MMM漢字AAAA</p> </body> 上6行がすべて同じ幅になります。 <head>内のCSSで制御しています。 幅の広さは width:25em の数字で決めます。 下5行が等幅?です。 それぞれの<p>タグ内にCSSを入れています。 それぞれの行のwidth:**em の数字に文字数を入れています。 どちらも違うかな~・・ いずれもWinIEの5~6のみの対応です。

spinach-chicken
質問者

お礼

質問の仕方が悪くて申し訳ありませんでした。 ご返答ありがとうございました。

すると、全ての回答が全文表示されます。
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.8

なぜ固定幅フォントを使っているのにずれるのか? ということに関しては、こちら http://support.microsoft.com/default.aspx?scid=kb;ja;417434 もっとも確実な解決策は、 <pre style="font-size:16px;"> のようにフォントサイズに偶数のピクセル数値を指定することです。 奇数のピクセル数は2で割り切れないので縦横の比がちょうど2:1になりません。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;417434
spinach-chicken
質問者

お礼

自分で探してみたときは見つけることができませんでしたが、やはりマイクロソフトのサポートにありましたか… dpiが関係しているんですね。 情報ありがとうございます。

すると、全ての回答が全文表示されます。
回答No.7

#6の補足です。 さらにfont-weight:boldの指定も加えて試してみましたが、太字のでもずれないフォントサイズはさすがに見つかりませんでした。

すると、全ての回答が全文表示されます。
noname#176215
noname#176215
回答No.5

「|」を全部頭につけておいて left で移動させる のは邪道ですか? <STYLE type="text/css"><!-- .left {left: 400px; position: relative; } --></STYLE> 「400px」の部分は適当に変えて下さい。 <SPAN class="left">|</SPAN>1234567812345678 <SPAN class="left">|</SPAN>llllMMMMIIIIAAAA

spinach-chicken
質問者

お礼

すみません。例が悪かったです。 やりたい事は「|」を揃える事ではなく、 全角半角の混じった文章を、全角1文字=半角2文字となるよう、 等幅で綺麗に表示する事でした。 現状、WinXPなら、太字を除けばpreタグで綺麗に揃うという所まで教えて頂きました。 お手数をお掛けしました。ありがとうございます。

すると、全ての回答が全文表示されます。
回答No.4

完全にそろえるのは無理な気がします。 そろえたい部分を画像データにしてしまえば確実なのですが、hrefの部分をクリッカブルマップにするとか面倒ですね。 いいやり方を僕も知りたいです。。

spinach-chicken
質問者

お礼

> 完全にそろえるのは無理な気がします。 そのようです。 もし他で情報などありましたら是非お教え下さい。 よろしくお願いします。

すると、全ての回答が全文表示されます。
  • vitadai
  • ベストアンサー率75% (6/8)
回答No.3

WinXP SP2 IE6+Opera7+NN7.1+Firefoxで試してみましたがズレはありませんでした。フォントサイズ小~大でも変わらず。 ただ、太字にすると文字の大きさ自体が大きくなるので、ずれるのは仕方がないと思います。

spinach-chicken
質問者

お礼

知り合いはWinXPなのですが、XPなら大丈夫でした… Win2000だとフォントサイズによってずれるようですね。 太字に関してはletter-spacingでがんばってみます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • vitadai
  • ベストアンサー率75% (6/8)
回答No.2

テキストエディタ等で、半角スペースを使って整えて、<per>できちんと表示されませんか?フォントを指定しなくても、デフォルトスタイルシートでは<pre>は等幅フォントになっていると思います。 それとも、コメントの前には半角スペースを1つしか入れないのかな?

spinach-chicken
質問者

補足

(nakachie様への返答の例は半角スペースを入れていたのですが、消えてしまったようです。ちゃんと確認すれば良かった…すみません。) テキストエディタ上ではちゃんと整えているのですが、 preタグを使うと、MSゴシック、monospaceの場合、 全角文字がほんの数ドット小さくなってしまいます。 特にボールドを使うとぐっとずれます。 さらに面白いことに私の環境(Win2K+IE6)だと、ブラウザの文字のサイズを大または小にするとずれませんが、それ以外(最小、中、最大)にするとずれます… もしかして他の環境なら大丈夫なんでしょうか?(汗) ちょっと知り合いに送って試して貰ってみます。

すると、全ての回答が全文表示されます。
  • nakachie
  • ベストアンサー率33% (12/36)
回答No.1

<table>タグで各セルに埋め込むのはやってみましたか? 例で行けば、2列6行の表を作り、1列目を文字、2列目を|にするのはダメでしょうか。。

spinach-chicken
質問者

お礼

やりたいことは、「|」を揃える事ではなく、全角半角混じった分を等幅で出すことです。 具体的にはソースコードなどインデントとコメントが付いた文章をHTML化する事です。 【例】 void main { printf("hello\n"); /* この3行のコメントと */ printf("こんちわ\n"); /* このコメントが */ /* ずれないようにしたい */ } ですので位置合わせしたい部分を全てtableタグで書くのはちょっと難しいです… 質問の仕方が悪かったですね。すみません。

すると、全ての回答が全文表示されます。

関連するQ&A