Hi list, I'm looking to import a font with medium and light weights (in this case Roboto) and define font alternatives so one can quickly switch to light text just as one would switch to bold text. There is a stackexchange answer from Wolfgang (https://tex.stackexchange.com/questions/303648/context-font-weights) which details a solution to this problem for ConTeXt MkIV but despite my best efforts I haven't been able to get things to work for me. There is the Roboto typescript example on ConTeXt garden but it isn't exactly what I'm looking for as for the document I'm making I would prefer to be able to treat the font weights as alternatives rather than separate families since I will be switching often. One can download the exact set of fonts I am using from https://fonts.google.com/specimen/Roboto Here is my code: \definefontalternative[lf] % light \definefontalternative[li] % lightitalic \definefontalternative[md] % medium \definefontalternative[mi] % mediumitalic \starttypescript [sans] [roboto] \definefontsynonym [SansLight] [file:Roboto-Light] [features=default] \definefontsynonym [SansLightItalic] [file:Roboto-LightItalic] [features=default] \definefontsynonym [Sans] [file:Roboto-Regular] [features=default] \definefontsynonym [SansItalic] [file:Roboto-Italic] [features=default] \definefontsynonym [SansMedium] [file:Roboto-Medium] [features=default] \definefontsynonym [SansMediumItalic] [file:Roboto-MediumItalic] [features=default] \definefontsynonym [SansBold] [file:Roboto-Bold] [features=default] \definefontsynonym [SansBoldItalic] [file:Roboto-BoldItalic] [features=default] \definefontsynonym [SansCaps] [file:Roboto-Sans] [features=smallcaps] \stoptypescript \starttypescript [sans] [roboto] \definebodyfont [default] [rm] [lf=SansLight sa 1, li=SansLightItalic sa 1, tf=Sans sa 1, it=SansItalic sa 1, md=SansMedium sa 1, mi=SansMediumItalic sa 1, bf=SansBold sa 1, bi=SansBoldItalic sa 1, sc=SansCaps sa 1] \stoptypescript \definetypeface[roboto][rm][sans][roboto][default] \setupbodyfont[roboto] \starttext \lf Light \li LightItalic \tf Regular \it Italic \md Medium \mi MediumItalic \bf Bold \bi BoldItalic \sc SmallCaps \stoptext - The result is entirely in the regular weight default font: What I've tried: 1. I've tried a great deal of alternative \definefontsynonym arguments such as specifying by name, including the full path to each ttf file 2. I played around with different two character \definefontalternative arguments to ensure there was no overlap with existing commands (as far as I am aware the existing set are otherwise undefined) A few things to note: 1. My current version of ConTeXt is 2022.12.09 16:34 2. For portability I have included the ttf files for Roboto in a directory within my project directory and while setting things up I set OSFONTDIR to include this directory and run `mtxrun --script fonts --reload --force` 3. `mtxrun --script fonts --list --all --pattern=Robo` yields: identifier familyname fontname filename subfont instances roboto roboto robotoregular ./fonts/Roboto/Roboto-Regular.ttf robotoblack roboto robotoblack ./fonts/Roboto/Roboto-Black.ttf robotoblackitalic roboto robotoblackitalic ./fonts/Roboto/Roboto-BlackItalic.ttf robotobold roboto robotobold ./fonts/Roboto/Roboto-Bold.ttf robotobolditalic roboto robotobolditalic ./fonts/Roboto/Roboto-BoldItalic.ttf robotoitalic roboto robotoitalic ./fonts/Roboto/Roboto-Italic.ttf robotolight roboto robotolight ./fonts/Roboto/Roboto-Light.ttf robotolightitalic roboto robotolightitalic ./fonts/Roboto/Roboto-LightItalic.ttf robotomedium roboto robotomedium ./fonts/Roboto/Roboto-Medium.ttf robotomediumitalic roboto robotomediumitalic ./fonts/Roboto/Roboto-MediumItalic.ttf robotonormal roboto robotoregular ./fonts/Roboto/Roboto-Regular.ttf robotoregular roboto robotoregular ./fonts/Roboto/Roboto-Regular.ttf robotothin roboto robotothin ./fonts/Roboto/Roboto-Thin.ttf robotothinitalic roboto robotothinitalic ./fonts/Roboto/Roboto-ThinItalic.ttf 4. Using `\definedfont[name:robotomedium*default] hello` and `\definedfont[file:Roboto-Thin*default] hello` (for example) work exactly as expected I hope this isn't a silly question, I'm very new to ConTeXt and have been struggling for a while so thought I may as well ask in case there's something I'm missing, would appreciate any guidance :) Regards, Matt
On 12/13/2022 9:15 AM, Matthew McCabe via ntg-context wrote:
Hi list,
I'm looking to import a font with medium and light weights (in this case Roboto) and define font alternatives so one can quickly switch to light text just as one would switch to bold text. There is a stackexchange answer from Wolfgang (https://tex.stackexchange.com/questions/303648/context-font-weights https://tex.stackexchange.com/questions/303648/context-font-weights) which details a solution to this problem for ConTeXt MkIV but despite my best efforts I haven't been able to get things to work for me. There is the Roboto typescript example on ConTeXt garden but it isn't exactly what I'm looking for as for the document I'm making I would prefer to be able to treat the font weights as alternatives rather than separate families since I will be switching often. take a look at type-imp-plex.mkiv (just remove the \s! in your case)
basically you define two typefaces: normal and light and then just switch between these, as in: at the top of your document you say \usebodyfont[plex] % preloads \usebodyfont[plex-light] % preloads \setupbodyfont[plex] % enables main font and after that {\switchtobodyfont[plex-light] .... } will do a consistent switch Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 13 Dec 2022, at 7:53 pm, Hans Hagen via ntg-context
wrote: On 12/13/2022 9:15 AM, Matthew McCabe via ntg-context wrote:
Hi list, I'm looking to import a font with medium and light weights (in this case Roboto) and define font alternatives so one can quickly switch to light text just as one would switch to bold text. There is a stackexchange answer from Wolfgang (https://tex.stackexchange.com/questions/303648/context-font-weights https://tex.stackexchange.com/questions/303648/context-font-weights) which details a solution to this problem for ConTeXt MkIV but despite my best efforts I haven't been able to get things to work for me. There is the Roboto typescript example on ConTeXt garden but it isn't exactly what I'm looking for as for the document I'm making I would prefer to be able to treat the font weights as alternatives rather than separate families since I will be switching often. take a look at type-imp-plex.mkiv (just remove the \s! in your case)
basically you define two typefaces: normal and light and then just switch between these, as in:
at the top of your document you say
\usebodyfont[plex] % preloads \usebodyfont[plex-light] % preloads
\setupbodyfont[plex] % enables main font
and after that
{\switchtobodyfont[plex-light] .... }
will do a consistent switch
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context webpage : https://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.net ___________________________________________________________________________________
Thanks for the reply and your help Hans, ok so if I understand correctly the canonical way to integrate light weight font is to define two typefaces. I wrote up a typescript for (Sans) Roboto based on the example typescript from ConTeXt garden using only the Sans variants and it’s working well. For anyone else looking to do something similar, since the typescript is just a tex file it seems if one places it in one’s local directory it will be accessible when ConTeXt generates the pdf. I saved it as type-imp-roboto.tex in my local directory and used ‘\usebodyfont[roboto]’ and ‘\usebodyfont[roboto-light]’ to preload the fonts as recommended (\usetypescriptfile didn’t seem to be required). Here is my typescript, for the Sans Roboto font, pretty much picked out of the context garden example typescript for Roboto: \definefontfeature[robotofeatures][ mode=node, ccmp=yes, % character composition liga=yes, tlig=yes, % ligatures pnum=yes, cpsp=yes, % capital spacing kern=yes, language=dflt, protrusion=quality, expansion=quality, ] \definefontfeature[smallcaps][ % use with \addff smcp=yes, % smallcaps % c2sc=yes, % caps to smallcaps ] \starttypescript[sans][roboto,robotosans] \definefontsynonym[Roboto-Regular][name:robotoregular] \definefontsynonym[Roboto-Black][name:robotoblack] \definefontsynonym[Roboto-BlackItalic][name:robotoblackitalic] \definefontsynonym[Roboto-Bold][name:robotobold] \definefontsynonym[Roboto-BoldItalic][name:robotobolditalic] \definefontsynonym[Roboto-Italic][name:robotoitalic] \definefontsynonym[Roboto-Light][name:robotolight] \definefontsynonym[Roboto-LightItalic][name:robotolightitalic] \definefontsynonym[Roboto-Medium][name:robotomedium] \definefontsynonym[Roboto-MediumItalic][name:robotomediumitalic] \definefontsynonym[Roboto-Italic][name:robotoitalic] \definefontsynonym[Roboto-Regular][name:robotoregular] \definefontsynonym[Roboto-Thin][name:robotothin] \definefontsynonym[Roboto-ThinItalic][name:robotothinitalic] \stoptypescript \starttypescript[sans][roboto,robotosans][name] \definefontsynonym [SansThin] [Roboto-Thin] [features=robotofeatures] \definefontsynonym [SansThinItalic] [Roboto-ThinItalic] [features=robotofeatures] \definefontsynonym [SansThinSlanted] [Roboto-ThinItalic] [features=robotofeatures] \definefontsynonym [SansLight] [Roboto-Light] [features=robotofeatures] \definefontsynonym [SansLightItalic] [Roboto-LightItalic] [features=robotofeatures] \definefontsynonym [SansLightSlanted] [Roboto-LightItalic] [features=robotofeatures] \definefontsynonym [Sans] [Roboto-Regular] [features=robotofeatures] \definefontsynonym [SansItalic] [Roboto-Italic] [features=robotofeatures] \definefontsynonym [SansSlanted] [Roboto-Italic] [features=robotofeatures] \definefontsynonym [SansCaps] [Roboto-Regular] [features={robotofeatures,smallcaps}] \definefontsynonym [SansMedium] [Roboto-Medium] [features=robotofeatures] \definefontsynonym [SansMediumItalic] [Roboto-MediumItalic][features=robotofeatures] \definefontsynonym [SansMediumSlanted][Roboto-MediumItalic][features=robotofeatures] \definefontsynonym [SansBold] [Roboto-Bold] [features=robotofeatures] \definefontsynonym [SansBoldItalic] [Roboto-BoldItalic] [features=robotofeatures] \definefontsynonym [SansBoldSlanted] [Roboto-BoldItalic] [features=robotofeatures] \definefontsynonym [SansBlack] [Roboto-Black] [features=robotofeatures] \definefontsynonym [SansBlackItalic] [Roboto-BlackItalic] [features=robotofeatures] \definefontsynonym [SansBlackSlanted] [Roboto-BlackItalic] [features=robotofeatures] \stoptypescript \starttypescript[sans][roboto-light][name] \definefontsynonym [Sans] [Roboto-Light] [features=robotofeatures] \definefontsynonym [SansItalic] [Roboto-LightItalic] [features=robotofeatures] \definefontsynonym [SansSlanted] [Roboto-LightItalic] [features=robotofeatures] \definefontsynonym [SansCaps] [Roboto-Light] [features={robotofeatures,smallcaps}] \definefontsynonym [SansBold] [Roboto-Medium] [features=robotofeatures] \definefontsynonym [SansBoldItalic] [Roboto-MediumItalic] [features=robotofeatures] \definefontsynonym [SansBoldSlanted] [Roboto-MediumItalic] [features=robotofeatures] \stoptypescript \starttypescript[sans][roboto-medium][name] \definefontsynonym [Sans] [Roboto-Medium] [features=robotofeatures] \definefontsynonym [SansItalic] [Roboto-MediumItalic] [features=robotofeatures] \definefontsynonym [SansSlanted] [Roboto-MediumItalic] [features=robotofeatures] \definefontsynonym [SansCaps] [Roboto-Medium] [features={robotofeatures,smallcaps}] \definefontsynonym [SansBold] [Roboto-Black] [features=robotofeatures] \definefontsynonym [SansBoldItalic] [Roboto-BlackItalic] [features=robotofeatures] \definefontsynonym [SansBoldSlanted] [Roboto-BlackItalic] [features=robotofeatures] \stoptypescript \starttypescript[roboto] \definetypeface [roboto] [ss] [sans] [roboto] [default] \stoptypescript \starttypescript[roboto-light] \definetypeface [roboto-light] [ss] [sans] [roboto-light] [default] \stoptypescript \starttypescript[roboto-medium] \definetypeface [roboto-medium] [ss] [sans] [roboto-medium] [default] \stoptypescript
On 12/14/2022 11:49 AM, Matthew McCabe wrote:
For anyone else looking to do something similar, since the typescript is just a tex file it seems if one places it in one’s local directory it will be accessible when ConTeXt generates the pdf. I saved it as type-imp-roboto.tex in my local directory and used ‘\usebodyfont[roboto]’ and ‘\usebodyfont[roboto-light]’ to preload the fonts as recommended (\usetypescriptfile didn’t seem to be required). you can also put the definitions in the style (depends on how often you reuse it)
Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Dear Matthew,
I wrote you off the list in connection to the other thread where Hans helped me with using Roboto Flex. I used your typescript definitions but the font is not embedded in the document. ** I've copied all the ttf font files to the recommended directory structure under: texmf-local/fonts/truetype. ** I've created a type-imp-roboto.mkiv file and saved it in the recommended location under: texmf-local/tex/.../mkiv/. Using: \usetypescript or \usetypescriptfile or \usebodyfont [roboto] with setuphead does not work. I use the following simplest setup command: \setuphead[chapter][style={\switchtobodyfont[roboto,20pt]\ss}] I will be glad to join forces and create the typescript file but maybe missing something obvious. While I could use an inline definition suggested by Hans in the other thread, Roboto is a great font and I or other people would like to use it as a shared resource. All the best and thanks for help and feedback, Pawel
Am 19.04.23 um 16:53 schrieb Pawel Urbanski via ntg-context:
Dear Matthew, I wrote you off the list in connection to the other thread where Hans helped me with using Roboto Flex. I used your typescript definitions but the font is not embedded in the document.
** I've copied all the ttf font files to the recommended directory structure under: texmf-local/fonts/truetype. ** I've created a type-imp-roboto.mkiv file and saved it in the recommended location under: texmf-local/tex/.../mkiv/. Using: \usetypescript or \usetypescriptfile or \usebodyfont [roboto] with setuphead does not work.
Did you run mtxrun --generate ? And did you check with mtxrun --script fonts --list --all --pattern=roboto ? If ConTeXt can’t find the files, nothing meaningful will happen. Hraban
Yes, I did - all the files are listed. I can attach my files if that can be of any help - in case when someone wants to be generous with time and wisdom.
Am 19.04.23 um 16:53 schrieb Pawel Urbanski via ntg-context:
Dear Matthew, I wrote you off the list in connection to the other thread where Hans helped me with using Roboto Flex. I used your typescript definitions but the font is not embedded in the document.
** I've copied all the ttf font files to the recommended directory structure under: texmf-local/fonts/truetype. ** I've created a type-imp-roboto.mkiv file and saved it in the recommended location under: texmf-local/tex/.../mkiv/. Using: \usetypescript or \usetypescriptfile or \usebodyfont [roboto] with setuphead does not work.
I use the following simplest setup command: \setuphead[chapter][style={\switchtobodyfont[roboto,20pt]\ss}]
\switchtobodyfont[roboto,ss,20pt] is better than what you have; don’t know if it makes a difference. Does \setupbodyfont[roboto] work for the main (i.e. body) font? Hraban
Dear Hraban, No, it does not. I am attaching hte type file and the short test document. Here are the links where one can download the fonts: https://github.com/googlefonts/roboto/releases https://fonts.google.com/specimen/Roboto+Slab I am wondering if 'hinted' or 'unhinted' release of Roboto found at Github matters. Trust me, that your time ahd help if very much appriciated. I know how much time it may take to debug such issue - just for rewriting the files with small changes.
I've found the following Github repository with the typscripts definitions: https://github.com/r3n4ud/roboto-context When I use this type-imp-roboto.mkiv file fonts are used and embedded when using Roboto in thes \setupbodyfont[]. When I use ebgaramond as the body font but use: \switchtobodyfont[roboto,20pt] in the \setuphead[] call the font is not embedded and seems to be not used. I am more optimistic but still confused what can be wrong.
Matthew McCabe via ntg-context schrieb am 13.12.2022 um 09:15:
Hi list,
I'm looking to import a font with medium and light weights (in this case Roboto) and define font alternatives so one can quickly switch to light text just as one would switch to bold text. There is a stackexchange answer from Wolfgang (https://tex.stackexchange.com/questions/303648/context-font-weights) which details a solution to this problem for ConTeXt MkIV but despite my best efforts I haven't been able to get things to work for me. There is the Roboto typescript example on ConTeXt garden but it isn't exactly what I'm looking for as for the document I'm making I would prefer to be able to treat the font weights as alternatives rather than separate families since I will be switching often.
One can download the exact set of fonts I am using from https://fonts.google.com/specimen/Roboto
Here is my code:
[...]
\starttypescript [sans] [roboto] \definebodyfont [default] [rm]
Replace [rm] with [ss]: \definebodyfont [default] [ss]
[lf=SansLight sa 1, li=SansLightItalic sa 1, tf=Sans sa 1, it=SansItalic sa 1, md=SansMedium sa 1, mi=SansMediumItalic sa 1, bf=SansBold sa 1, bi=SansBoldItalic sa 1, sc=SansCaps sa 1] \stoptypescript
\definetypeface[roboto][rm][sans][roboto][default]
Replace [rm] with [ss]: \definetypeface [roboto] [ss] [sans] [roboto] [default] Wolfgang
participants (5)
-
Hans Hagen
-
Henning Hraban Ramm
-
Matthew McCabe
-
Pawel Urbanski
-
Wolfgang Schuster