L
i
nux.org.ua
Головна
Форум
Довідка
Правила
Пошук
Увійти
Реєстрація
Linux.org.ua
»
Технічні питання
»
Прикладні програми
»
Debian/Ubuntu
»
Шрифти (іксові, не freetype) та ion3
« попередня гілка
наступна гілка »
Відповісти
Друк
Сторінки:
1
Автор
Гілка: Шрифти (іксові, не freetype) та ion3 (Прочитано 1988 раз)
Михайло Даниленко
Гість
Шрифти (іксові, не freetype) та ion3
«
:
2008-05-09 17:43:33 »
Цитата
Ion3 на відміну від ion2 нормально сприймає кирилицю у заголовках вікон та меню, отож я перейшов на нього (поточна деб'янівська збірка ion3 сильно недороблена у порівнянні зі збіркою ion2, тому довелося добряче покопатися у конфігах).
У темі оформлення я попрописував шрифт '-misc-fixed-medium-r-*-*-13-*-*-*-*-60-iso10646-*'
Ось як він виглядає у xfontsel:
і у xterm -font ...:
Але ось як виглядає меню ion:
[isbear:~] uname -a
Linux lair 2.6.24-1-686 #1 SMP Sat Apr 19 00:37:55 UTC 2008 i686 GNU/Linux
[isbear:~] aptitude search fonts | /bin/grep '^i'
i A gsfonts - Fonts for the Ghostscript interpreter(s)
i A gsfonts-x11 - Make Ghostscript fonts available to X11
i A toilet-fonts - collection of TOIlet fonts
i A xfonts-75dpi - 75 dpi fonts for X
i A xfonts-75dpi-transcoded - 75 dpi fonts for X (transcoded from ISO 10
i A xfonts-base - standard fonts for X
i xfonts-cyrillic - Cyrillic fonts for X
i xfonts-efont-unicode - /efont/ Unicode fonts for X which cover va
i xfonts-efont-unicode-ib - /efont/ Unicode fonts for X (italic and bo
i A xfonts-encodings - Encodings for X.Org fonts
i A xfonts-utils - X Window System font utility programs
Власне, я з шрифтами досі не стикався близько, тому не розумію, що, власне, відбувається...
P.S. Хоча завдяки проблемам із налаштуванням ion я за останні три дні багато чого дізнався цікавого у цій царині. Viva problems!
P.P.S. З релігійних міркувань ion не використовує згладжування й не користується freetype1/2.
Записаний
Михайло Даниленко
Гість
Re: Шрифти (іксові, не freetype) та ion3
«
Відповідей #1 :
2008-05-09 17:47:18 »
Цитата
Тьфу, версію ядра навів (хоча воно тут ні до чого - думав там є щось про реліз деб'яна), а це забув:
[isbear:~] cat /etc/debian_version
lenny/sid
[isbear:~] Xorg -version
This is a pre-release version of the X server from The X.Org Foundation.
It is not supported in any way.
Bugs may be filed in the bugzilla at
http://bugs.freedesktop.org/
.
Select the "xorg" product for bugs you find in this release.
Before reporting bugs in pre-release versions please check the
latest version in the X.Org Foundation git repository.
See
http://wiki.x.org/wiki/GitPage
for git access instructions.
X.Org X Server 1.4.0.90
Release Date: 5 September 2007
X Protocol Version 11, Revision 0
Build Operating System: Linux Debian (xorg-server 2:1.4.1~git20080131-4)
Current Operating System: Linux lair 2.6.24-1-686 #1 SMP Sat Apr 19 00:37:55 UTC 2008 i686
Build Date: 29 April 2008 08:24:00PM
Before reporting problems, check
http://wiki.x.org
to make sure that you have the latest version.
Module Loader present
Записаний
Михайло Даниленко
Гість
Re: Шрифти (іксові, не freetype) та ion3
«
Відповідей #2 :
2008-05-09 17:58:26 »
Цитата
Угу, fontconfig він теж не використовує з релігійних причин, але xfontsel теж їх не використовує...
Записаний
Михайло Даниленко
Гість
Re: Шрифти (іксові, не freetype) та ion3
«
Відповідей #3 :
2008-07-15 03:50:54 »
Цитата
Так, вдалося репродукувати проблему:
(зідрано із basicwin (десь знайшов в неті), додано роботу через fontset)
#include <stdio.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
int main ( int argc, char **argv )
{
int screen;
Display *display;
Window win;
GC gc;
XEvent report;
XFontSet fs;
XSizeHints size_hints;
unsigned int width, height, display_width, display_height;
int x = 0, y = 0;
unsigned int border_width = 4;
char *display_name = NULL;
char *fontname = "-misc-fixed-medium-r-*-*-15-*-*-*-*-*-iso10646-1";
char *string1 = "Hello! Я віконце, а ти хто? イースビル?";
char **missing;
int missingnum;
char *def_str = "-";
unsigned long valuemask = 0;
XGCValues values;
if ( ! setlocale ( LC_ALL, "uk_UA.UTF-8" ) ) {
fprintf ( stderr, "Setlocale failed\n" );
}
if ( XSupportsLocale () != True ) {
fprintf ( stderr, "Locale is not supported\n" );
}
if ( ! XSetLocaleModifiers ( "" ) ) {
fprintf ( stderr, "Set Modifiers failed" );
}
if ( ( display = XOpenDisplay ( display_name ) ) == NULL ) {
fprintf ( stderr, "X Open Display Failed (%s)\n", XDisplayName ( display_name ) );
exit ( -1 );
}
screen = DefaultScreen ( display );
display_width = DisplayWidth ( display, screen );
display_height = DisplayHeight ( display, screen );
width = display_width / 3;
height = display_height / 4;
win = XCreateSimpleWindow ( display, RootWindow ( display, screen ), x, y, width, height, border_width,
BlackPixel ( display, screen ), WhitePixel ( display, screen ) );
size_hints.flags = PPosition | PSize | PMinSize;
size_hints.x = x;
size_hints.y = y;
size_hints.width = width;
size_hints.height = height;
size_hints.min_width = 350;
size_hints.min_height = 250;
XSetStandardProperties ( display, win, "Test", NULL, (Pixmap) NULL, argv, argc, &size_hints );
XSelectInput ( display, win, ExposureMask | KeyPressMask | ButtonPressMask | StructureNotifyMask );
fs = XCreateFontSet ( display, fontname, &missing, &missingnum, &def_str );
if ( ! fs ) {
fprintf ( stderr, "Create Font Set failed\n" );
exit ( 1 );
} else if ( missingnum ) {
char **a = missing;
fprintf ( stderr, "Missing Font Set strings:\n" );
while ( missingnum-- ) {
fprintf ( stderr, "'%s'\n", *a++ );
}
XFreeStringList ( missing );
}
gc = XCreateGC ( display, win, valuemask, &values );
XSetForeground ( display, gc, BlackPixel ( display, screen ) );
XMapWindow ( display, win );
while ( 1 ) {
XNextEvent ( display, &report );
switch ( report.type ) {
case Expose:
while ( XCheckTypedEvent ( display, Expose, &report ) );
XmbDrawString ( display, win, fs, gc, 100, 20, string1, strlen(string1) );
break;
case ConfigureNotify:
width = report.xconfigure.width;
height = report.xconfigure.height;
break;
case ButtonPress:
case KeyPress:
XFreeFontSet ( display, fs );
XFreeGC ( display, gc );
XCloseDisplay ( display );
exit ( 1 );
break;
default:
break;
}
}
}
Іще одне питання - є у мене конвертований із консольного фонт у форматі bdf. (параметр ENCODING виставлено у юнікодівський номер символа у десятковій формі, назви символів взято із Adobe Glyph List For New Fonts).
Xterm та xfontsel його сприймають нормально.
Через неюнікодівські функції ця програма теж нормально виводила англійську частину тексту.
А через юнікодівські - все, що мені вдалося від неї добитися - це українська літера "і", одна на весь рядок.
Що не так із шрифтом? Чи що не так із програмою?
Записаний
Михайло Даниленко
Гість
Re: Шрифти (іксові, не freetype) та ion3
«
Відповідей #4 :
2008-07-15 08:43:17 »
Цитата
О, знайшов. Треба через XDrawString16 робити. Тільки рядок доведеться конвертувати у юнікод. Залишилося іон пропатчити.
P.S. До біса ж там цих функцій друку... а різниця яка - незрозуміло.
Записаний
Михайло Даниленко
Гість
Re: Шрифти (іксові, не freetype) та ion3
«
Відповідей #5 :
2008-07-15 12:42:33 »
Цитата
Є. Тільки іще з mod_query розібратися треба буде - неправильно довжину рахує.
Записаний
Михайло Даниленко
Гість
Re: Шрифти (іксові, не freetype) та ion3
«
Відповідей #6 :
2008-07-15 13:27:32 »
Цитата
Є. То було typo.
Записаний
Відповісти
Друк
Сторінки:
1
« попередня гілка
наступна гілка »
Linux.org.ua
»
Технічні питання
»
Прикладні програми
»
Debian/Ubuntu
»
Шрифти (іксові, не freetype) та ion3