X のフォント設定は一般相対論より難解である

このエントリーをはてなブックマークに追加
1Einsteinの弟子:02/02/24 11:08 ID:RvI1cUc4
Xのフォントの仕組みがサパーリ分からん。
なんであんなにフォント名が長いんだ?

俺は、一般相対論は理解できたが、Xのフォント設定は理解不能。
未だにemacsのフォントすら変えれない。

OSAKAフォントはどうしたら使えますか?
2login:Penguin:02/02/24 11:12 ID:O8/hz44l
そんじゃー、レヴィ=チヴィタ記号について説明してよ。
そしたらフォントについても教えてやる。
3login:Penguin:02/02/24 11:12 ID:+1yyvfgV
ん?
4A.E:02/02/24 12:46 ID:bwKYvHAo
イタリアではスパゲッティとレヴィ・チヴィタ!
5login:Penguin:02/02/24 13:04 ID:FW1fjWuC
-*
でいいじゃん。だめ?
6login:Penguin:02/02/24 13:08 ID:dxMhhAda
特殊相対論でしょ、どうせ。
7login:Penguin:02/02/24 13:09 ID:GHl5YzyI
(´ι _`  ) あっそ
81:02/02/24 13:32 ID:aIpzkLzX
>>2

なんか曲がった空間にベクトルAがあって、
そいつをdxだけ平行移動するとするやん。
そしたら、AはA+dAになるんやけど、
dAはまあ、dxにも比例するやろうし、Aにも比例するわな。
なので、
dA=ΓAdx
Γは比例係数ね。このΓをレビ・チビタの接続係数と
呼んでるわけです。

注)添字は全部省略。

ところで、なんでXのフォント名はあんなに長いわけ?

というか、.Xdefaults に書く、


Emacs*FontSetList: 12,14
Emacs*FontSet-12:-*-fixed-medium-r-normal--12-*-iso8859-1,\
-*-fixed-medium-r-normal--12-*-jisx0208.1983-*,\
-*-fixed-medium-r-normal--12-*-jisx0201.1976-*
Emacs*FontSet-14:-*-fixed-medium-r-normal--14-*-iso8859-1,\
-*-fixed-medium-r-normal--14-*-jisx0208.1983-*,\
-*-fixed-medium-r-normal--14-*-jisx0201.1976-*

の意味がさっぱり分かりません。教えて下さい。
9既出:02/02/24 13:53 ID:PmG6gmlH
10login:Penguin:02/02/24 14:47 ID:232wOHeE
>>8
で、レビ・チビタの接続係数の意味は?
11Nanashi@Emacs:02/02/24 19:16 ID:pgbQYgwo
で、何をちびったのれすか?

アインシュタイン先生は単純な問題に
単純な回答を与えたところがすごいのれす。

Xは三流学者が作ったので難しいのれすよ。
12login:Penguin:02/02/24 21:45 ID:tZVHJKXp
>>10
なんか>>2が痛々しいな・・・
無理難題をふっかけたつもりが、あっさり答えられて
必死になってますな(w
13login:Penguin:02/02/25 08:49 ID:UAD+9PfK
>>12=1
だな。
141:02/02/25 12:52 ID:2AGVHPfO
違います。
152:02/02/25 15:18 ID:cVt6bD2V
あはは、たしかに、あっさり答えたのには参ったね。10 はおれじゃねーぞ。

で、やくそくどおり
Xのフォント名 (X Logical Font Description, XLFD ともいう) が
なぜこんなに長いかということだが、

MacやWinと違って、X ではたとえ字体が同じでも
サイズやスタイルが違うと別々のフォントとして扱われる。
だからフォントの種類を指定するときは、字体だけでなく
傾き(イタリックかどうか)、ウェイト(太さ)、サイズ、解像度、
行間、文字セットの種類 (使用する言語) なども同時に指定する必要がある。
これらのものを全部「フォント名」の枠組みで表現しようとしているから、
XLFD は長いの。

たとえば -*-fixed-medium-r-normal--12-*-jisx0208.1983-* が表すのは
「ファミリー:なんでもいい、字体: fixed、太さ: medium、傾き: r(regular)、
字間: normal, ピクセル数: 12, ポイント数とか解像度とか: なんでもいい、
文字セット: jisx0208.1983」のフォント、って意味ね。

で、文字セットが違うだけでフォント名が変わるってのはやってらんないので
(英語と日本語でフォントを別々に指定しなきゃなんない)、複数の文字セットを
まとめたものが FontSet。>>8 であんたが書いてたやつだ。

あとは xfontsel を実行していじってみるといいよ。だいたい感覚つかめると思う。
あるいは man X して、FONT NAMES の項を参照。

こんなもんでいいか?
16Nanashi@Emacs:02/02/25 18:01 ID:jULA09to
>>15

で、X のフォント設定は簡単になるのか?
17login:Penguin:02/02/25 20:22 ID:yeNNgtGX
フォントネームの意味がわかって、fotnselなどのツールの使い方がわかれば
さほど難しくないだろ?
181:02/02/26 02:46 ID:9YB7Balj
>>15
ありがとうございます。少しだけ分かる様になりました。
FontSetとはそういう意味だったのですね。
Mac,Winを使っててフォント名を一つ選んで、
大きさやウエイトを自由に変えるのに慣れていたので、
文字サイズが違えば、フォントが違うと言うのはちょっと難しいです。

>>10
結局、レビチビタ記号は計量テンソル(重力テンソル)で表されるので、
空間の曲がりの度合いを示したもの?ですかね。
というか、レビチビタ記号って一般相対論の用語では無いんじゃ無いですか?
物理ではアフィン係数っていうんじゃなかったでしたっけ。
#だんだんぼろが出てきはじめた。。。

それから、フォントの設定で、ウエブで検索すると
Emacs.Font
と書いてある場合と、
Emacs*Font
と書いてある場合があるのですが、同じですか?
19login:Penguin:02/02/26 03:42 ID:kl9zFEjV
TeXの文法は一般相対論より難解である。
202:02/02/26 05:19 ID:iF0z6vHk
>>1

> Mac,Winを使っててフォント名を一つ選んで、
> 大きさやウエイトを自由に変えるのに慣れていたので、
> 文字サイズが違えば、フォントが違うと言うのはちょっと難しいです。

そうでしょうね。
ぼくもフォントの扱いに関しては Mac や Win のほうがまともだと思いますよ。
X だと、字体によってはイタリックはあるけどボールドはないとか、
そんなことがしょっちゅう起こるので使いにくい。

> それから、フォントの設定で、ウエブで検索すると
> Emacs.Font
> と書いてある場合と、
> Emacs*Font
> と書いてある場合があるのですが、同じですか?

Emacsの場合はほぼ同じと考えていいんじゃないですか。
アプリケーションによっては違う。

もともと、X では (建前上は) アプリケーションの各部分ごとに
設定 (フォントとか色とかボタンの大きさとか) を変えられるようになってたのよ。

たとえば Kterm なんかだと
KTerm.VT100.Font: なんとか
という指定は端末の表示部分のフォントだけを変えるけど、
KTerm*Font: なんとか
とやると、kterm のメニューを含めた全ての部分のフォントが変わる。

ただ、こういう「部分ごとの指定」をサポートするかどうかってのは
アプリケーションによって違って、X のお手本に素直に従ってる
アプリ (kterm とか) はちゃんとやってるけど、Emacs みたいなアプリは
いいかげんにしか見てないみたいと思う。だからたぶんどっちの指定でも同じ。

このへんに興味があるなら editres というアプリケーションを
いじってみるとよい。ドキュメントなら、くどいようだが X(7) の RESOURCES 参照。

Xの設定がわかりにくいというのは全面的に同意。
21login:Penguin:02/02/26 05:46 ID:otLhicz3
そもそも、ユーザにXLFDでフォントを指定させるアプリが間違ってるだけでしょ。
22login:Penguin:02/02/26 15:44 ID:T2TlhCY/
Emacs は Emacs.font って書け。っていわれてた気がする。
23login:Penguin:02/03/14 17:14 ID:kloKDB7p
>1がチヴィタ記号に答えられたからこその良スレage
24login:Penguin:02/03/15 06:39 ID:DP7Wu5U7
なにげに良スレやね。
ということでうんちくをひとつ。

X のフォント名があんなにアレなことになっているのは、歴史的経緯による。
もともと X11R4 までは、非常に単純なフォント名でしかフォントが
指定できなかった。"5x7" とか "8x13bold" とかそんなかんじだ。

それはあんまりだということで、もう少し論理的にフォントを指定できる
ようにするために、XLFD が考え出された。素直にプロトコル拡張すれば
よさそうなものだが、過去互換性のために、文字列で各パラメータを表記
するという仕様になってしまった。

理論的には、文字列指定でも、別に Win とかに遜色があるわけではない。
パースが面倒なだけだ。ところが、実際の実装がタコだった。とりあえず
存在するフォントのXLFDを内部で一覧でもって、それにマッチング
しなかったらフォントが存在しないとエラーを返すような実装になって
いる。15が言ってるように、フォント名とフォントが1対1になって
しまっているわけだ。これは今でも基本的に変わってない。

これは XLFD の仕様ではなく、Xのサンプル実装の仕様であることに注意されたい。
指定して(例:bold)、存在しなければ「代替」(例の場合なら重ねて疑似boldとか)
をでっちあげて返してくれるような仕様になっていてもXの仕様的にはOK
だったりする。ただ、そんな仕様の X は存在しない。X-TT が内部的には
実はそーいうことをしているが、フォント名のインターフェースは現在の
実装のものにあわせてしまったので、全部フォント名をあらかじめ
指定する必要があったりする
25login:Penguin:02/03/15 06:56 ID:DP7Wu5U7
せっかくだからもうひとつ。

実は Emacs のフォント指定は、Xlib的な意味での「FontSet」では無い。
Emacs 独自のものだ。まあ、概念は同じだし、指定の書式もほぼ同じだ。
ただ、XLFD のパースのアルゴリズムが Xlib とは違うので、Xlibだと
通る書式でも、Emacs では通らなかったりするので注意が必要だ。

XFont 単独だと、単一の文字集合しか扱うことができないので、複数の
文字集合をまぜて使う。これが Xlib の FontSet の概念だ。FontSet の
表記では、文字集合部 (JISX0208 とかの部分)を省略すると、一括で
フォント名を指定できるし、個別に細かく指定もできるようになっている。

Xlib の FontSet は locale 依存で、その locale で使える文字集合のみ指定できる。
Emacs の FontSet は独自のもので、Emacs で扱えるあらゆる文字集合を指定する
KTerm も独自で「FontList」と読んでいる。書式はだいたい同じだが、これまた
アルゴリズムの問題で、表記が通らなかったりするので注意。
Motif も独自で、これも「FontList」と読んでいる。書式はほかと全然違う。
セミコロン区切りだし、コロンで各種オプション指定がついている。
gtk(国際化)は昔は Xlib の FontSet を使っていたから書式も同じだったと
記憶しているが、今はどうなっているか知らない。

まあ、よーするに、全部アプリケーションによってばらばらってこった。
一般的な指定方法は存在しない。
26login:Penguin:02/03/15 10:53 ID:qyR6hP/g
>>24-25
なるほど、そういう経緯があったのね。サンクスコ。
>指定して(例:bold)、存在しなければ「代替」(例の場合なら重ねて疑似boldとか)
>をでっちあげて返してくれるような仕様になっていてもXの仕様的にはOK
>だったりする。ただ、そんな仕様の X は存在しない。X-TT が内部的には
てことは、そういうフォントサーバをでっちあげれば代替とかもできるってこと?
ヘタレなんで、どこまで互換性が保たれるかはよく分からないけど。
27login:Penguin:02/03/15 13:16 ID:DP7Wu5U7
>>26
できる。
ただ、対応したアプリケーションが無い現状では意味があるかどうか…

スケーラブルフォントが、フォントリスト上では(xlsfonts で見れるやつね)、
たとえば

-sun-minchou-bold-r-normal--0-0-75-75-c-0-jisx0208.1983-0

といったように、サイズ指定部分三ヶ所が 0 になっているのはみんな
知ってるだろう。この 0 の部分に任意の値をいれてフォントを呼び出す
ことができるわけだ。

同様に、フォントリスト上で、

-sun-minchou-0-0-0--0-0-75-75-c-0-jisx0208.1983-0

といったように、変更可能な部分が 0 になったフォントが提供できる。

これを多態フォント(polymorphic font)と呼び、フォントを呼び出すとき
には、該当部分に bold とか normal とか具体的なパラメータを指定
することになる。指定して意味があるパラメータはフォントプロパティに持つ。
詳しくは X に付属しているXLFD の仕様書を読んでくれ。

ただ、俺の知る限り、多態フォントに対応してるアプリケーションは
存在しない。まあ、そもそも多態フォントを提供する X Server も
Font Server も無いのだから、存在しても意味が無いわけだ。

だいたい、真の意味でスケーラブルなフォントに対応している
アプリケーションすらほとんど無いのが現実だ。部分ごとに絶対サイズで
フォントを指定するものが大半だろう。GUI に本気でとりくむのなら、
サイズ指定はすべてシステム規定の基本サイズに対する相対にして、
全アプリケーションのフォントサイズ指定を一気に変更できるように
するぐらいでないといけないのだが。

もし多態に対応したX server/Font Serverを作るなら、過去アプリケーションの
互換性を配慮して、多態の一部を組み合わせ爆発で破綻しない程度には
展開してフォントリストにのせるように作ることになるだろうと思う。
X-TT が手動でやってることね。
28login:Penguin:02/03/15 16:37 ID:AzdJrTpv
> gtk(国際化)は昔は Xlib の FontSet を使っていたから書式も同じだったと
> 記憶しているが、今はどうなっているか知らない。

GTK+ 1 では Xlib の wrapper として font と fontset が違ってて、fontset
を使わないアプリが多かったため、いちいちパッチ作らんといけないことが
多かった。

GTK+ 2 からは Pango http://www.pango.org/ というレイヤがフォントの処理は
やってる。普通のプログラムでは XLFD だけではなく、Sans 10 とかいった、
「フォント名」「大きさ」、などを組あわせた言語に関係ない名前で指定できる
ようにもなった。

実際にはそれが内部的に適当な XLFD に変換されたり、Xft や FreeType 経由で
TrueTypeフォントなどにマップされたりする。font と fontset の区別をしなく
ていいので、GTK+ 2 対応をうたっているアプリであれば、そのあたりのパッチ
は必要なくなったかもしれない。でも、内部が UTF-8 化されてるので、外界
(ファイル名とかいろいろ)とのやりとりの部分でややこしいところが出たりも
するが、それはまた別の話。
29login:Penguin:02/03/15 17:24 ID:CqMWzl2o
何だかんだ言ってもemacsの
多国語対応が最高であると
思ってしまう今日この頃。。。

あ、x font の設定とは直接関係無いやね。。。
30 :02/03/16 17:25 ID:uls+lBzH
のーまるりらてぶせおりーがわかるのに
どーしてあのフォント名がわからんのだろうか・・・
あんなもん博物学だっちゅーに
xfontsel使って体感すりゃ一発だろーに。
31名無しさん@Emacs:02/04/09 23:38 ID:1Nmz+c13
保全age
32login:Penguin:02/04/09 23:39 ID:fwxJqDLV
>>30
> のーまるりらてぶせおりー
って何?(藁
33login:Penguin:02/04/09 23:51 ID:Z1j+F8wo
いやー、xfontselの場合「マッチするフォントすべて表示する」ならば、
直観的だとおもうんだけど、一つしか表示してくれないから、
そこがちょっと...fontsetにも対応してほしぃなぁ。
341:02/04/10 15:10 ID:I4m7O7XU
久しぶりに見にきましたら、勉強になりました。
歴史が興味深いですね。
あれからいろいろ勉強して、emacsのフォントを変えれるように
なりました。私の .Xresources はこんな感じです。

!Emacs.font: fontset-16
Emacs.font: fontset-14
!Emacs.font: fontset-kaname12

Emacs.Fontset-0: -*-fixed-*-r-normal--16-*-*-*-*-*-fontset-16,\
ascii:-*-fixed-*-r-normal--16-*-*-*-*-*-iso8859-1,\
japanese-jisx0208.1983:-*-fixed-*-r-normal--16-*-*-*-*-*-jisx0208.1983-0,\
japanese-jisx0201.1976:-*-fixed-*-r-normal--16-*-*-*-*-*-jisx0201.1976-0

Emacs.Fontset-1: -*-fixed-*-r-*--*-*-*-*-*-*-fontset-kaname12,\
ascii:-*-fixed-*-r-semicondensed--13-*-*-*-*-*-iso8859-1,\
japanese-jisx0208.1983:-mnkaname-fixed-*-r-normal--12-110-75-75-c-120-jisx0208.1983-0,\
japanese-jisx0201.1976:-mnkaname-fixed-*-r-normal--12-110-75-75-c-60-jisx0201.1976-0

Emacs.Fontset-2: -*-fixed-*-r-normal--14-*-*-*-*-*-fontset-14,\
ascii:-*-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
japanese-jisx0208.1983:-*-fixed-*-r-normal--14-*-*-*-*-*-jisx0208.1983-0,\
japanese-jisx0201.1976:-*-fixed-*-r-normal--14-*-*-*-*-*-jisx0201.1976-0


それにしても、日本語化とフォントの複雑さを解決しなければ
一般人への普及は難しいような気がします。
35 :02/04/10 19:00 ID:MgHuxlF3
つーか、国にフリーのTTフォントでうんときれいなやつを創って欲しいな。
IT振興とかアプロダとかの前に。

難解さは変わらんけど。
36login:Penguin:02/04/10 20:21 ID:1uTG5f/7
>>32
多分最近ではじぇねらるとはいわなくなった・・・
のか?

ごめんね、フツーで
37login:Penguin:02/04/10 22:45 ID:0R+FyI4H
すまんが漏れは相対をそうつい(dual)と読む分野の人間だ。
でもこのスレは勉強になる。
38login:Penguin:02/04/11 02:33 ID:N7y4BsPY
>>36
そんなことは無いですよ。

30は、special じゃ無い方は normal と呼ばれているとでも思ったんでしょう。
本当は、general なんですけどね。
39login:Penguin:02/04/12 23:36 ID:5O8BHksI
フォントはふぉんとに難しいね。


さーて信でくるか。
40login:Penguin:02/04/14 00:50 ID:2uPwuXuD
>>37
そうついは双対でない?分野によって違うのかな。
41login:Penguin:02/04/14 14:32 ID:Qf8F2SQo
>40
まぁ dual って意味の「そうつい」は双対だよね。
相対って書くことはあんまり(ぜんぜん)ないなぁ。
数学では双対が普通。
4237:02/04/15 10:23 ID:J/FiORKi
>>37-38さんご指摘ありがとう。
「相対」なんて書いてるのはうちの教授のレジュメだけだった。
ちゃんと「双対」になってる部分もあるから単なる誤植ね。
漏れそんなことも知らずに修論出してたよ。ショック。
論文は英語だからセーフだけど、「相対」って書いたレジュメ配って
プレゼンしちまった。レジュメが早くあぼーんされますように。
43login:Penguin:02/04/24 23:33 ID:M9dfdirp
ちょいと質問いいですか。
/usr/X11R6/lib/X11/locale/xx/XLC_LOCALEと
fontのregistryの関係なんですけど。

(Xの勉強を兼ねて)自力でハングルを出そうとmzsm16h.pcf.gzなどフォントを拾って来て、
/usr/X11R6/lib/X11/fonts/miscにおき、
mkfontdir; xset fp rehash
で設定後、

LANG=ko_KR gnome-appli (ハングル文字コードのテキストを読んで、表示するプログラム)
を実行すると、
GDK-WARNING: missing charset in a FontSet creation:
で KCS5601.1987-0 というcharsetが無いといわれていしまう。

そもそも、
ここでいうcharsetはlocale/xx/XLC_LOCALEで設定されたものだと思うんだけど、
この"KCS5601.1987-0"と
フォントのregistryの"ksc5601.1987-0"って、どこで対応付られてんだろう?
知っている人いますか。
#フォントレジストリ名を大文字に変換しただけなんていうと、手がかりが無くなって逆に困るんだけど。

あ、xlsfontsでフォントが設定されていることは確認してます。

ちなみに、以下はfonts.dirの入れたフォントの部分。
mzsm16h.pcf.gz -misc-saemmul-medium-r-normal--16-160-75-75-c-160-ksc5601.1987-0


44login:Penguin:02/04/25 00:22 ID:7eVoc7o0

メンテage
45login:Penguin:02/04/25 00:26 ID:pkXD29aW
>>43
実は、gtk+の設定だったり、とか
/etc/gtkrc.ko (場所は違うかもしれない)

style "gtk-default-ko" {
fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,\
-*-gulim-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,\
-*-kodig-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,\
-*-*-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,*"
}
class "GtkWidget" style "gtk-default-ko"
ってあるし。

うちではとくに設定しなくても。
setenv LANG ko_KR
unsetenv XMODIFIERS
gedit
とかで、メニューにハングルが表示された。RedHat7.2
46login:Penguin:02/04/25 00:52 ID:lomWPWM4
>>43
xeditとかktermで表示できるかどうか確認してみるのは?
47login:Penguin:02/04/25 01:19 ID:Xm9mC4p2
>> 45
早速のレス、ありがとうございます。

Xを疑っているのは、GDK-WARNINGを出しているのが、gdk_fontset_load()のなかの、
XCreateFontset()だったから。
#gdk_fontset_load()はgtk_init()から呼ばれている。

試しに~/.gtkrcに/etc/gtk/gtkrc.ko_KRの内容をコピーして
(includeでもよかったけどさ。)
アプリを実行したけど、結果はダメ。同じGDK-WARNING。

やっぱり、XLC_LOCALEについて調べないといけないような。


#libX11がXLOCALEを認識できないわけでもない。
#XLC_LOCALEにでたらめなcharset名を入れると、WARNINGもそのでたらめな名前ででる。
#つまり、XLC_LOCALEを見るようにコンパイルされているんだよな。
#ああ、分かんない。

48login:Penguin:02/04/25 01:25 ID:Xm9mC4p2
>> 46
えーー、
ktermでやってみました。LANGは効かなかった。
kterm -fk font-name
ならOK。


49login:Penguin
ktermはなんか日本語に特化していそうな感じもする。
EUC,SJIS,JISのモードがあるし、-fkなんてオプションもあるし。

xeditのほうがいいかも。
xedit*international: true
をいれて。