■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
美麗な文字の出力方法
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 01:47
システムにインストールされてあるフォントを用いて
美麗な文字を出力するためにはどうすれば良いのでしょうか?
文字精度が命のプログラムを作っているので、
以下のコードでフォントを作成してもボコボコで気になるのです。
LOGFONT lf;
lf.lfHeight = 33; lf.lfWidth = 0;
lf.lfEscapement = 0; lf.lfOrientation = 0;
lf.lfWeight = FW_NORMAL; lf.lfItalic = 0;
lf.lfUnderline = 0; lf.lfStrikeOut = 0;
lf.lfCharSet = SHIFTJIS_CHARSET;
lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
lf.lfQuality = PROOF_QUALITY;
lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
フェース名はシステムにインストールされてあるTrueTypeフォントを
列挙して使っています。
一応、パラメータを色々かえてやってみたのですがうまくいきません。
限界ならばあきらめきれるのですが、
どこかのフリーウェアで非常に綺麗な文字を出力しているのを見ると
なんらかの方法があるようなのであきらめきれません。
知っている方、お願いします。
最後に長文すいません。


2 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 02:57
状況がよくわからないんで頓珍漢なこといってるかもしれんけども
倍サイズくらいで持ってきて自前でアンチエイリアスとかしながら
縮小して描画するのはドウよ?



3 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 03:04
>2
縮小したらまた崩れるんじゃないの?
一文字だけならともかく汎用的にはつかえないだろうね。

>1
自作フォントじゃ駄目?


4 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 03:11
WindowsのTTFのエッジの処理って結構汚いよ。
読めればいいってとこならば問題ないけど
グラフィック系アプリでは時間かかってもやっぱし自前でやることになる。
アンチエイリアスの方法も用途によっていろいろあるしね。


5 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 03:42
1じゃないけど質問。
TrueTypeフォントの各制御点(ベジエ曲線の頂点)を取得するAPIってないの?


6 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 17:09
最近、趣味でゲームを作り出して、ゲームのことを勉強してるのですが、
エヴァンゲリオンのタイピングゲームは文字表示を見てみたら、アンチ
エイリアシングしてましたね。
なにか軽い処理でアンチエイリアシングする方法があるのだとは思いますが...。


7 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 17:16
ゲーム用のフォントはPhotoShopなんかでつくって
BMPで保存してテクスチャで表示というのが一般的。
リアルタイムに綺麗にアンチエイリアシングするのは厳しいかも。


8 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 17:45
使うフォントが少なければ、あらかじめアンチエイリアス
かけとくって手もあるんだろうが・・・。
日本語じゃそういうわけにいかんか。



9 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 18:51
>7
背景の絵が変化するような所で、アンチエ処理をやってるんで、
リアルタイムにやってると思います。


10 名前: 7 投稿日: 2000/10/21(土) 18:58
すいません。
今確認してみたら、背景とは関係無しにアンチエしてるようでした。


11 名前: >9 投稿日: 2000/10/21(土) 18:58
文字のテクスチャと背景との合成は
ビデオボードのレンダラがやってるんじゃないかな?



12 名前: 10 投稿日: 2000/10/21(土) 18:59
間違えました。
10の名前はは7ではなくて9です。


13 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 20:06
背景と合成する必要があるならば、アンチエイリアス用の
マスクだけをあらかじめ用意しておきます。
これならリアルタイムでもそんなに重くありません。
(もちろんアンチエイリアスしないよりは重いけど)

小さい文字をきれいにアンチエイリアスするのはけっこう面倒です。


14 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/21(土) 23:36
自分の場合、
あらかじめスーパーサンプリングでアンチフォント作って
4bppで持っておく方法つかってます。
表示は16bitColorなんで、[16][32768]のテーブル使ってます。


15 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/22(日) 03:18
[16][32768]のテーブルってどういう意味なんですか?


16 名前: 395 投稿日: 2000/10/30(月) 21:56
 ∧ ∧
( ′∇`)


17 名前: 395 投稿日: 2000/10/30(月) 22:01
      
  ∧ ∧     ___________
\( ´∀`)/

_____________________