これUbuntu Nerdフォントシステムにすでにインストールされています。
xfontsel
フォントを定義します。スクリーンショットに示すように、キリル文字が正しく表示されます(最後の行)。
man iso_8859-5
私のエンコーディングの1つまたは別の文字を取得できるコードを教えてください。
Xresources
構成ファイルでキリル文字の順序を指定しました。
...
Xlogin*titleMessage: \260\261\262\263\264\265\266
xlogin*greeting: \260\261\262\263\264\265\266
xlogin*namePrompt: Username:\040
xlogin*passwdPrompt: Password:\040
xlogin*fail: Authentication failed
...
xlogin*greetFont: -*-ubuntu nerd font-*-r-normal-*-17-120-100-100-*-*-iso8859-5
xlogin*font: -*-ubuntu nerd font-*-r-normal-*-17-120-100-100-*-*-iso8859-5
xlogin*promptFont: -*-ubuntu nerd font-*-r-normal-*-17-120-100-100-*-*-iso8859-5
xlogin*failFont: -*-ubuntu nerd font-*-r-normal-*-17-120-100-100-*-*-iso8859-5
xlogin*greetFace: Ubuntu Nerd Font-14:bold
xlogin*face: Ubuntu Nerd Font-10
xlogin*promptFace: Ubuntu Nerd Font-12:bold
xlogin*failFace: Ubuntu Nerd Font-10:bold
ただし、起動時にxdm
設定ファイルに無効な文字が指定されました。
何が問題なのでしょうか?
さまざまなソリューションを試しました。locale
お好みのエンコーディングに設定してください。ファイルXresources
もUTF-8形式です。私はすべてを試しました。ただし、結果としてテキストを出力すると、各キリル文字はダブルバイトで表されます。xdm
UTF-8を理解していないようです。
アップデート1:
Unicode出力なし
Xlogin*titleMessage: Добро пожаловать
xlogin*greeting: Добро пожаловать
xlogin*namePrompt: Пользователь:\040
xlogin*passwdPrompt: Пароль:\040
xlogin*fail: Ошибка аутентификации
xlogin*greetFont: -*-ubuntumono nerd font mono-*-r-normal-*-17-120-100-100-m-*-iso8859-5
xlogin*font: -*-ubuntumono nerd font mono-*-r-normal-*-17-120-100-100-m-*-iso8859-5
xlogin*promptFont: -*-ubuntumono nerd font mono-*-r-normal-*-17-120-100-100-m-*-iso8859-5
xlogin*failFont: -*-ubuntumono nerd font mono-*-r-normal-*-17-120-100-100-m-*-iso8859-5
xlogin*greetFace: Ubuntumono Nerd Font-14:bold:italic
xlogin*face: Ubuntumono Nerd Font-10
xlogin*promptFace: Ubuntumono Nerd Font-12:bold
xlogin*failFace: Ubuntumono Nerd Font-10:bold
アップデート2:
もう一つの設定オプションです。xdm
指定されたフォントが見えないようです。
xlogin*titleMessage: Добро пожаловать
xlogin*greeting: Добро пожаловать
xlogin*namePrompt: Пользователь:\040
xlogin*passwdPrompt: Пароль:\040
xlogin*fail: Ошибка аутентификации
xlogin*greetFont: -*-ubunt nerd font-*-r-*-*-*-*-*-*-*-*-*-uni
xlogin*font: -*-ubunt nerd font-*-r-*-*-*-*-*-*-*-*-*-uni
xlogin*promptFont: -*-ubunt nerd font-*-r-*-*-*-*-*-*-*-*-*-uni
xlogin*failFont: -*-ubunt nerd font-*-r-*-*-*-*-*-*-*-*-*-uni
xlogin*greetFace: Ubuntu Nerd Font-14:bold:italic
xlogin*face: Ubuntu Nerd Font-10
xlogin*promptFace: Ubuntu Nerd Font-12:bold
xlogin*failFace: Ubuntu Nerd Font-10:bold
答え1
xdmのウェルカムプログラム(Debianおよび派生製品)はXftを使用して文字列を描画します(参照:ソースコード):
# define DRAW_STRING(f, x, y, m, l) \
/* Debug("DRAW_STRING(%s, %d, %d, %s, %d)\n", #f, x, y, m, l); */ \
XftDrawString8 (w->login.draw, &w->login.f##color, w->login.f##Face, \
x, y, (FcChar8 *) (m), l)
Xftはさまざまな文字列描画バリエーションを提供します(参照:手動):
Families of Functions
Xft provides groups of drawing functions which differ according to the
way the data is encoded, e.g., 8-bit (ISO-8859-1) versus UTF-8. Here
is a summary of these related functions:
Encoding XftDrawString* XftTextExtents* XftTextRender*
-------------------------------------------------------------------------
8 XftDrawString8 XftTextExtents8 XftTextRender8
16 XftDrawString16 XftTextExtents16 XftTextRender16
16BE XftDrawString16 XftTextExtents16 XftTextRender16BE
16LE XftDrawString16 XftTextExtents16 XftTextRender16LE
32 XftDrawString32 XftTextExtents32 XftTextRender32
32BE XftDrawString32 XftTextExtents32 XftTextRender32BE
32LE XftDrawString32 XftTextExtents32 XftTextRender32LE
UTF-8 XftDrawStringUtf8 XftTextExtentsUtf8 XftTextRenderUtf8
UTF-16 XftDrawStringUtf16 XftTextExtentsUtf16 XftTextRenderUtf16
挨拶する人が使うgreetFont
Xft以外の構成の場合(参照)ソースコード):
#ifndef USE_XFT
{XtNfont, XtCFont, XtRFontStruct, sizeof (XFontStruct *),
offset (textFont), XtRString, "*-new century schoolbook-medium-r-normal-*-180-*"},
{XtNpromptFont, XtCFont, XtRFontStruct, sizeof (XFontStruct *),
offset (promptFont), XtRString, "*-new century schoolbook-bold-r-normal-*-180-*"},
{XtNgreetFont, XtCFont, XtRFontStruct, sizeof (XFontStruct *),
offset (greetFont), XtRString, "*-new century schoolbook-bold-i-normal-*-240-*"},
{XtNfailFont, XtCFont, XtRFontStruct, sizeof (XFontStruct *),
offset (failFont), XtRString, "*-new century schoolbook-bold-r-normal-*-180-*"},
#else /* USE_XFT */
{XtNface, XtCFace, XtRXftFont, sizeof (XftFont *),
offset (textFace), XtRString, "Serif-18"},
{XtNpromptFace, XtCFace, XtRXftFont, sizeof (XftFont *),
offset (promptFace), XtRString, "Serif-18:bold"},
{XtNgreetFace, XtCFace, XtRXftFont, sizeof (XftFont *),
offset (greetFace), XtRString, "Serif-24:italic"},
{XtNfailFace, XtCFace, XtRXftFont, sizeof (XftFont *),
offset (failFace), XtRString, "Serif-18:bold"},
{XtNforeground, XtCForeground, XtRXftColor, sizeof(XftColor),
offset(textcolor), XtRString, XtDefaultForeground},
{XtNpromptColor, XtCForeground, XtRXftColor, sizeof(XftColor),
offset(promptcolor), XtRString, XtDefaultForeground},
{XtNgreetColor, XtCForeground, XtRXftColor, sizeof(XftColor),
offset(greetcolor), XtRString, XtDefaultForeground},
{XtNfailColor, XtCForeground, XtRXftColor, sizeof (XftColor),
offset(failcolor), XtRString, XtDefaultForeground},
#endif
xdmのマンページでは、この違いについて説明します。
xlogin.Login.greetFace
The face used to display the greeting when built with Xft sup‐
port. The default is ‘‘Serif‐24:italic’’.
xlogin.Login.greetFont
The font used to display the greeting when not built with Xft
support.
フォントが設定されていないため、グリーティングはデフォルトのフォントを使用します(Xftのドキュメントによると、ISO-8859-1やISO-8859-5などの8ビットエンコーディングに制限されています)。