Portál AbcLinuxu, 7. května 2025 07:24

Dotaz: Má absence Xorg na server vliv na renderování písma?

16.7.2015 22:28 Olaf
Má absence Xorg na server vliv na renderování písma?
Přečteno: 270×
Odpovědět | Admin
Zdarec, už mě zase dožral Matplotlib, nejde diakritika: resp. blbne diakritika na serveru (openSUSE), na lokále s OS X je vše OK. Než začnu projekt přetahovat na další notebook, kde mám desktop openSUSE, zajímá mě, jestli ty obrázky generované na serveru mohou být ovlivněny tím, že tam není X server. Matplotlib prostě generguje grafy, které se ukládají jako PNG obrázky. Použitá písma v systému jsou: ale může chybět něco, co se špatnou diakritikou souvisí a co je vázáno na Xorg?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.7.2015 22:36 chrono
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Čo znamená "blbne diakritika"? A nie, X server nie je nutný pre správne fungovanie freetype knižnice.
16.7.2015 22:47 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Matplotlib má odjakživa problém s diakritikou. Nevím, jak je nastaven defaultně, ale aby titulek, osy, legenda atd. ukazovaly všechna písmena, je třeba zadat název písma či rodinu. Na Macu (i na druhém desktopu s openSUSE) dám jednoduše matplotlib.rc('font', family='Verdana'). A vše je OK. Na serveru s openSUSE to nic neudělá, resp. ščřž jsou ok, místo ě, ť, ď se zobrazí jen []. Dokonce jsem do openSUSE nahrál i základní písma z Macu, abych měl jistotu, že jsou stejná. Nic. Trošku pomáhá toto:
import matplotlib.font_manager as fm
fp = fm.FontProperties(fname="/usr/share/fonts/truetype/Verdana.ttf") 
# matplotlib.rcParams['font.family'] = fp.get_name()
matplotlib.rc('font', family=fp.get_name())
a pak postupně u každého grafu psát plt.title(_title, fontproperties=fp). Jenže problém je, že toto není podporováno u legendy ani labelů u sloupcových grafů.

Až přenastavím nastavení projektu na desktopu s openSUSE, tak budu vědět trošku víc, jestli to je jen chyba na tom serveru, nebo to souvisí s openSUSE jako takovým... Nejde mi do hlavy, proč to na Macu jde a na SUSE ne.
16.7.2015 22:58 chrono
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
locale je nastavené rovnako? (hlavne asi časť, ktorá udáva kódovanie)
16.7.2015 23:02 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Vše asi OK.

Mac:
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_CTYPE="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_ALL=
Server s openSUSE:
LANG=cs_CZ.UTF-8
LC_CTYPE="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_PAPER="cs_CZ.UTF-8"
LC_NAME="cs_CZ.UTF-8"
LC_ADDRESS="cs_CZ.UTF-8"
LC_TELEPHONE="cs_CZ.UTF-8"
LC_MEASUREMENT="cs_CZ.UTF-8"
LC_IDENTIFICATION="cs_CZ.UTF-8"
LC_ALL=
16.7.2015 23:19 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Tak jsem tu aplikaci spustil na openSUSE desktopu a diakritika funguje bezchybně jako v OS X. Takže, hmm, chyba je v openSUSE na produkčním serveru. Kde ji ale hledat? Nějaké knihovny související s fonty? :(
16.7.2015 23:29 chrono
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Ten program by mal používať fontconfig, takže by som vyskúšal fc-match verdana aké písmo to vypíše.
16.7.2015 23:48 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Na SUSE desktopu DejaVuSans.ttf: "DejaVu Sans" "Book", na SUSE serveru Verdana.ttf: "Verdana" "Normal", ale to je tím, že jsem tam fláknul Verdanu z Macu. Teď odstraňuji písma ze serveru a kopíruju je ze SUSE desktopu. Uvidíme, co to udělá. Možná je to nějakým vadným configem písma? Dochází k inicializaci všech potřebných configů, když se nespouští desktopové aplikace, protože xorg není přítomen?
16.7.2015 23:58 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Tak bohužel, diakritika pořád na serveru blbne.
17.7.2015 00:01 chrono
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
V SUSE sa Verdana inštaluje pomocou balíčka fetchmsttfonts. Ten skript len stiahne a rozbalí tie súbory s písmami a spustí fonts-config, aby sa obnovila cache (každopádne podľa toho výpisu fc-match nie je problém s tým, že by sa to písmo nenašlo).
17.7.2015 00:06 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Jo, to jsem tam nahodil také. Já nelpím na Verdaně. Zvolil jsem ji jen proto, aby fungovala diakritika. :-) Teď jsem tam místo Verdany nastavil DejaVu Sans, ale stejně nic. Nejde ě, ť, ď... Skutečně divné. Jak říkám, na desktopovém openSUSE to funguje korektně jako v OS X.
17.7.2015 03:00 Olaf
Rozbalit Rozbalit vše Re: Má absence Xorg na server vliv na renderování písma?
Taaaak, po N promr..haných hodinách konečně řešení. Díky za hinty, protože bych bez nich neuvažoval racionálně. Takže řešení, pokud se s tím někdo setká také: nechal jsem si při běhu té webové aplikace vypsat cestu cache Matplotlibu, jako titulek grafu. Protože já blbec mazal slepě cache pod rootem. A server fakt jako root neběží. Takže výsledek fm.cachedir je var/lib/wwwrun/.cache/matplotlib. V tomtéž adresáři .cache je i podadresář fontconfig... Oboje smazáno a diakritika s nově načtenými fonty jede. Tolik hodin a taková blbost.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.