CGI-BBS > 電子掲示板 > 簡易BBS > 「表示処理」で、フォント指定をしたいのですが・・・。


カレッヂ
カレッヂ


質問者 Coyote  投稿日 2/13(水) 18:11:48
こんにちは。「簡易マルチBBS - MiniBBS-kit」を利用させていただいています。

本文に書かれた文章を他のフォント(Century)で表示させたいのですが、
「表示処理」中の記事一覧をいろいろいじっていましたができません。

------------------------------------------------------------------------
        # ↓記事一覧
                print <<"EOF";
                <table cellpadding=0 cellspacing=1 border=0 width=100%>
                <tr><td bgcolor=$cellcolor><font face=century size=+0 color=$subject_color> <font size=0>Title: <font size=3>$title</font></td>
                </tr></table>
                <font size=-1 color=$info_color> <font size=0>Name:</font> <font size=2> $name <font size=0>- $date  $delsw</font><font face=century><p>
<BLOCKQUOTE><font face=century size=+1>
EOF
                if ($link) { # URLをリンクする

                        $value =~ s/&gt;/\t/g;
                        $value =~ s/(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<font face=century><a href=\"$1\:$2\" target=\"_blank\">$1\:$2<\/a>/ig;
                        $value =~ s/\t/&gt;/g;
                }

                if ($mode == 0) { print "<font face=Century><pre><tt>"; } # 図/表モード(0)

                if ($mode == 0) { print $value; } # 図/表モード(0)
                elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print $value; } # 改行有効(1)
                else { $value =~ s/\r//g; print $value; } # 改行無効(2)

                if ($mode == 0) { print "</tt></pre><p><font face=Century>\n"; } # 図/表モード(0)

                print "</BLOCKQUOTE><p>\n";
        }

------------------------------------------------------------------------

強引に<font face=century>とタグを入れて、リンクのフォントをCenturyにかえることは
できましたが、通常の文章がcenturyフォントで出てくれません。
どこをいじればよいのでしょうか?
お願いします。


回答者 しあわせのツボ  [削除]  投稿日 2/13(水) 19:59:09
font face指定よりもttの方が優先されるためではないでしょうか。
ttは等幅フォントを使う指定なので、プロポーショナルフォント(ですよね?)のCenturyは使えない、とブラウザが判断しているのでしょう。
# preも自動的に等幅フォントになるので、ttの重複指定は不要だと思うのですが…。

fontは将来廃止予定のタグですので、CSSで指定することをおすすめします。
そうでなければ、元に戻した状態から
if ($mode == 0) { print $value; } # 図/表モード(0)
elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print $value; } # 改行有効(1)
else { $value =~ s/\r//g; print $value; } # 改行無効(2)
の部分を
if ($mode == 0) { print $value; } # 図/表モード(0)
elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print "<font>$value</font>"; } # 改行有効(1)
else { $value =~ s/\r//g; print "<font>$value</font>"; } # 改行無効(2)
として下さい。

図表モードは等幅フォントの利用が前提なので、どちらにしてもCenturyは使えません。


あと、ごく基本的なことですが。
読むマシンにそのフォントが入っていなければ、どんなにきちんと指定してもデフォルトのフォントで表示されます。
指定するのは自由ですが、あてにはならないことをお忘れなく。
質問者 Coyote  [削除]  投稿日 2/13(水) 22:21:30
お返事ありがとうございます。感謝しています。
おっしゃるとおりに、

if ($mode == 0) { print $value; } # 図/表モード(0)
elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print "<font>$value</font>"; } # 改行有効(1)
else { $value =~ s/\r//g; print "<font>$value</font>"; } # 改行無効(2)

と書き換え、加えてフォントも上記内部で入れてみましたが、どういうわけか、変化しません。
(タイトルなどは変化するので、フォントは入っています。)

わがままですいませんが、「改行無効」と「図/表モード」は必要ないため、
たとえば、Writeformのなかの

下記の部分を削除:
        <input type=radio name="MODE" value="2">改行無効
        <input type=radio name="MODE" value="1" checked>改行有効
        <input type=radio name="MODE" value="0">図/表\モード</font><br>

してみますと、modeは0(ゼロ)として認識されてしまい、図/表モードとして
処理されてしまうのでしょうか?
mode=1と指定する記述はあるのでしょうか?

いずれにせよ、上記部分を残したままで、mode=1 の「改行有効」のままであっても、
なぜか、表示処理ではフォントが認識してくれませんでした。

>CSSで指定することをおすすめします。

無知な質問ですいませんが、CSSで指定するとは、具体的にはどのように指定すれば
よいのでしょうか?

回答者 しあわせのツボ  [削除]  投稿日 2/14(木) 00:33:16
まず確認を。
if ($mode == 0) { print $value; } # 図/表モード(0)
elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print "<font>$value</font>"; } # 改行有効(1)
else { $value =~ s/\r//g; print "<font>$value</font>"; } # 改行無効(2)
の所の<font>は<font face=Century>に書き換えましたよね?

>  下記の部分を削除:
>          <input type=radio name="MODE" value="2">改行無効
>          <input type=radio name="MODE" value="1" checked>改行有効
>          <input type=radio name="MODE" value="0">図/表\モード</font><br>
>  してみますと、modeは0(ゼロ)として認識されてしまい、図/表モードとして
>  処理されてしまうのでしょうか?
>  mode=1と指定する記述はあるのでしょうか?
上記3行を削除し、かわりに
<input type=hidden name="MODE" value="1">
と書いて下さい。

  >CSSで指定することをおすすめします。

  無知な質問ですいませんが、CSSで指定するとは、具体的にはどのように指定すれば
  よいのでしょうか?

Kitだとズバリの場所指示ができませんね…。
<head>タグを出力している所を探し、</head>の直前に
<style type="text/css"><!--
td {font-family:Century}
--></style>
をprintするよう書き足してください。
質問者 Coyote  [削除]  投稿日 2/14(木) 07:37:14
なぜか、このBBSに質問が反映されないので、2度目の投稿です。
返信ありがとうございます。

if ($mode == 0) { print $value; } # 図/表モード(0)
elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print "<font>$value</font>"; } # 改行有効(1)
else { $value =~ s/\r//g; print "<font>$value</font>"; } # 改行無効(2)

の部分を変えてみましたが、(century指定)変化がありません。

CCSで指定するとは、具体的にどうすればよろしいのでしょうか?

実際、図/表モードは必要ないので、「改行有効」だけで、加えて他のフォントが
つかえるといいのですが。どうしてもできません。なぜだろう?


私あてのメイルで直接いただければうれしいとおもいます。

返信(回答)する


Web裏技