Kan iemand me uitleggen hoe ik de system fonts in luatex kan gebruiken? Mijn systeem is Ubuntu linux. Ik ben heel blij met de komst van luatex, vooral omdat er van gezegd wordt dat het heel makkelijk gebruik kan maken van de system fonts. Terwijl het altijd heel lastig is geweest om fonts te installeren in tex, en juist makkelijk in windows of linux. Zo heb ik zojuist een paar honderd fonts (afm/pfb/tfm/inf files) in directory ~/.fonts gecopieerd, en na opnieuw inloggen waren ze allemaal prachtig bruikbaar in bijv. OpenOffice. Zo makkelijk! Wat betreft system fonts en luatex vond ik alleen info op contextgarden.net. Stap 1 was makkelijk: export OSFONTDIR=$HOME/.fonts Daarna iets over een mtxrun script dat ik niet in luatex heb. Lijkt me weer een obscurerende factor, maar het wordt ook als optioneel genoemd. Het wordt ook aanbevolen om een lijst van fonts te tonen, maar dat kan ik zelf ook, zie verder. Dan heb ik het volgende luatex document gebouwd om te zien welke fonts luatex "ziet", en onder welke naam: % luatex_list_fonts.tex Roland Kwee 7 may 2011 fonts accessible by luatex are: \directlua{ for i,v in font.each() do psname="" if v.psname then psname=" psname "..v.psname end fname="" if v.fullname then fname=" fullname "..v.fullname end tex.print("fontnr "..i.." fontname "..v.name..psname..fname) tex.print([[ ]]) end } \bye (NB: v.psname en v.fullname zijn niet altijd gevuld, vandaar de if-blokken) Helaas toont dit alleen een lijst van tex fonts, en geen van de fonts die linux aantreft in ~/.fonts :-( Graag jullie hulp in het gebruik van de unieke eigenschappen van luatex. Groet, Roland Kwee
On 8-5-2011 10:44, Roland Kwee wrote:
export OSFONTDIR=$HOME/.fonts
klopt
Daarna iets over een mtxrun script dat ik niet in luatex heb. Lijkt me weer een obscurerende factor, maar het wordt ook als optioneel genoemd. Het wordt ook aanbevolen om een lijst van fonts te tonen, maar dat kan ik zelf ook, zie verder.
als je latex gebruikt heeft mtxrun geen zin hier; de latex font code in luatex gebruikt de context code, maar heeft zijn eigen font database variant als je plain gebruikt dan kun je inderdaad mtxrun gebruiken om een font database te maken; mtxrun is de runner voor context (en gerelateerde scripts)
Dan heb ik het volgende luatex document gebouwd om te zien welke fonts luatex "ziet", en onder welke naam:
als je font definities filenamen gebruiken dan is geen database nodig, voor een open type font gebruik je dan: \font\whatever=file:somename enz. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Hans Hagen wrote:
als je font definities filenamen gebruiken dan is geen database nodig, voor een open type font gebruik je dan:
\font\whatever=file:somename
enz.
Hans
Misschien raadde ik de syntax niet goed, maar ik probeerde als volgt, met de volle naam van op mijn systeem bestaande font files, zoals gevonden met "fc-list -v": \font\whatever={/usr/share/fonts/truetype/freefont/FreeSans.ttf} \font\whatever=file:{/usr/share/fonts/truetype/freefont/FreeSans.ttf} \font\whatever=file:/usr/share/fonts/truetype/freefont/FreeSans.ttf \whatever Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do \bye Helaas gaf elk van de drie \font commands dezelfde foutmelding: ! Font \whatever=file:/home/roland/.fonts/adobe/type-on-call/950-00/iuw.pfb not loadable: metric data not found or bad. Ik probeerde ook nog het voorbeeld uit de luatex reference manual (section 4.4.2 loading Open/TrueType file), met: \directlua{ font = fontloader.open('/usr/share/fonts/truetype/freefont/FreeSans.ttf') myfont = fontloader.to_table(font) fontloader.close(font) } \font\f={myfont} Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do \bye Dit gaf dezelfde luatex foutmelding. Wel las ik in de ref-manual nog dat de return value van fontloader.to_table() niet zonder meer gebruikt kan worden, maar waar naar section 7 verwezen wordt kon ik geen info vinden over hoe dat probleem op te lossen. Blijft dus de vraag hoe in luatex de system fonts te gebruiken. Vanwege de nieuwigheidsfactor graag zo concreet mogelijke voorbeelden. Tevens rijst de vraag of, als font files met volledig pad worden ingevoerd, de OSFONTDIR env variable nog wel nodig is. Of gaat het om twee alternatieve methoden om fonts aan te roepen?
On 9-5-2011 8:59, Roland Kwee wrote:
Misschien raadde ik de syntax niet goed, maar ik probeerde als volgt, met de volle naam van op mijn systeem bestaande font files, zoals gevonden met "fc-list -v":
\font\whatever={/usr/share/fonts/truetype/freefont/FreeSans.ttf} \font\whatever=file:{/usr/share/fonts/truetype/freefont/FreeSans.ttf} \font\whatever=file:/usr/share/fonts/truetype/freefont/FreeSans.ttf
\font\whatever=file:FreeSans.ttf zou moeten werken als osfontdir goed is.
\whatever Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do \bye
Helaas gaf elk van de drie \font commands dezelfde foutmelding:
! Font \whatever=file:/home/roland/.fonts/adobe/type-on-call/950-00/iuw.pfb not loadable: metric data not found or bad.
je kunt geen pfb laden (in context kun je een een afm laden maar niet in de generieke versie; dit omdat de meeste paketten uitgaan van tfm metrics); bovendien is type1 min of meer obsolete
Ik probeerde ook nog het voorbeeld uit de luatex reference manual (section 4.4.2 loading Open/TrueType file), met:
\directlua{ font = fontloader.open('/usr/share/fonts/truetype/freefont/FreeSans.ttf') myfont = fontloader.to_table(font) fontloader.close(font) } \font\f={myfont} Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do \bye
Dit gaf dezelfde luatex foutmelding. Wel las ik in de ref-manual nog dat de return value van fontloader.to_table() niet zonder meer gebruikt kan worden, maar waar naar section 7 verwezen wordt kon ik geen info vinden over hoe dat probleem op te lossen.
ja, want wat is {myfont}? gewoon een string die lua fontloader werkt alleen in combinatie met een callback die \font overload
Blijft dus de vraag hoe in luatex de system fonts te gebruiken. Vanwege de nieuwigheidsfactor graag zo concreet mogelijke voorbeelden.
ik weet dat het in context mkiv werkt (latex laat ik aan anderen over want dat gebruik ik niet en fonts in plain is zowieso een verhaal apart) ik neem aan dat je hebt gekeken in luatex-test (dat bij luatex-plain komt)
Tevens rijst de vraag of, als font files met volledig pad worden ingevoerd, de OSFONTDIR env variable nog wel nodig is. Of gaat het om twee alternatieve methoden om fonts aan te roepen?
tex gebruik tds, een vastliggende structuur voor files; osfontdir past daarin ik kan niet op je systeem kijken; je zou naar de ntg bijeenkomst kunnen komen zodat er daar even gekeken kan worden wat je probleem is Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Mon, May 09, 2011 at 08:59:15PM +0200, Roland Kwee wrote:
Hans Hagen wrote:
Met xetex werkt het volgende zonder verdere voorbereiding: \font\test="DejaVu Serif" at 30pt \test Hello DejaVu Serif!! \bye Met luatex werkte dit niet, ook niet na het draaien van mkluatexfontdb. Ik heb de oorspronkelijke vraag niet bij de hand, dus sorry als dit antwoord niet ter zake doet. -- Siep Kroonenberg
On 10-5-2011 4:31, Siep Kroonenberg wrote:
On Mon, May 09, 2011 at 08:59:15PM +0200, Roland Kwee wrote:
Hans Hagen wrote:
Met xetex werkt het volgende zonder verdere voorbereiding:
\font\test="DejaVu Serif" at 30pt \test Hello DejaVu Serif!!
\bye
Met luatex werkte dit niet, ook niet na het draaien van mkluatexfontdb.
Klopt, en dat zal ook nooit werken. Luatex heeft een (uitgebreide) font machinery maar implementeert zelf geen interface (alleen al omdat er meerdere mogelijkheden zijn). Dat doet men in aanvullende code, zoals in. Dus, in het geval van \font\test="DejaVu Serif" at 30pt kan men "DejaVu Serif" onderscheppen in een callback en in lua code het font laden en vervolgens doorgeven aan tex. Er is generieke context code die dat doet, maar een macropakket kan er een eigen sausje overheen leggen. In latex wordt bv een xetex achtige interface gebruikt en is er een fontspec laag, terwijl context een andere laag heeft en andere (extra) features biedt. De gebruiker merkt er in de regel weinig van want die gebruik een macropakket dat dat afhandelt. Dus zal men daar zonder verdere voorbereiding dat soort dingen kunnen doen. In plain kan dat ook, als men eerst wat code laadt, zoals beschreven in http://www.tug.org/TUGboat/tb30-2/tb95hagen-opentype.pdf Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On 05/08/2011 10:44 AM, Roland Kwee wrote:
Kan iemand me uitleggen hoe ik de system fonts in luatex kan gebruiken? Mijn systeem is Ubuntu linux.
Ik ben heel blij met de komst van luatex, vooral omdat er van gezegd wordt dat het heel makkelijk gebruik kan maken van de system fonts.
Het kan ook zonder luatex, als je xelatex gebruikt. Attached is mijn testfiletje om fonts uit te proberen. -- Wybo
participants (4)
-
Hans Hagen
-
Roland Kwee
-
Siep Kroonenberg
-
Wybo Dekker