digitalmars.D.learn - Resource availability: fonts
- Tyro[a.c.edwards] (3/3) May 05 2009 One cannot necessarily rely on particular font being available on a syst...
- Daniel Keep (11/15) May 05 2009 That depends. What are you using the font for?
- Tyro[a.c.edwards] (4/19) May 06 2009 When I do this, how do I ensure that the program is able to locate the
- John C (2/5) May 06 2009 I think AddFontResource from the SDK will do that. http://msdn.microsoft...
- Tyro[a.c.edwards] (2/7) May 06 2009 That was it... Aswesome! Thank you all very much for your assistance.
- grauzone (2/2) May 05 2009 Use
- Lars T. Kyllingstad (6/8) May 05 2009 That is so cool.
- grauzone (3/3) May 06 2009 http://digitalmars.com/d/1.0/expression.html#ImportExpression
- Rainer Deyke (5/9) May 06 2009 The file could also contain non-utf8 text, which should also not be
- Tyro[a.c.edwards] (6/8) May 06 2009 This will take care of making sure the font is available. How do you
One cannot necessarily rely on particular font being available on a system, and for security reasons asminsistrators restrict instalation of fonts (among other things) onto systems in a network. I would like to know if it is possible to embed a font into my code so that I know that it will always be there, or can I provide it with the exe but not have to rely on it being "installed" (i.e. use it from the same folder in which the exe resides)? Thanks, Andrew
May 05 2009
Tyro[a.c.edwards] wrote:One cannot necessarily rely on particular font being available on a system, and for security reasons asminsistrators restrict instalation of fonts (among other things) onto systems in a network. I would like to know if it is possible to embed a font into my code so that I know that it will always be there, or can I provide it with the exe but not have to rely on it being "installed" (i.e. use it from the same folder in which the exe resides)? Thanks, AndrewThat depends. What are you using the font for? If you're using a library that requires a family name, then probably not. If you're using a library that can accept a file name, then probably yes. Remember that the system doesn't care if you append crap to the end of an executable. One trick you can use is to just append whatever files you want to the end of the executable, and then have a little 1K block at the end that tells you where the files are and how big they are; you can then extract the files at run time and delete them when you terminate. -- Daniel
May 05 2009
On 5/6/2009 12:30 PM, Daniel Keep wrote:Tyro[a.c.edwards] wrote:I'm using DFL which uses family names (eg. "Times New Roman").One cannot necessarily rely on particular font being available on a system, and for security reasons asminsistrators restrict instalation of fonts (among other things) onto systems in a network. I would like to know if it is possible to embed a font into my code so that I know that it will always be there, or can I provide it with the exe but not have to rely on it being "installed" (i.e. use it from the same folder in which the exe resides)? Thanks, AndrewThat depends. What are you using the font for? If you're using a library that requires a family name, then probably not. If you're using a library that can accept a file name, then probably yes.Remember that the system doesn't care if you append crap to the end of an executable. One trick you can use is to just append whatever files you want to the end of the executable, and then have a little 1K block at the end that tells you where the files are and how big they are; you can then extract the files at run time and delete them when you terminate.When I do this, how do I ensure that the program is able to locate the font after extraction without "installing" it?-- Daniel
May 06 2009
Tyro[a.c.edwards] Wrote:When I do this, how do I ensure that the program is able to locate the font after extraction without "installing" it?I think AddFontResource from the SDK will do that. http://msdn.microsoft.com/en-us/library/dd183326(VS.85).aspx
May 06 2009
On 5/6/2009 9:50 PM, John C wrote:Tyro[a.c.edwards] Wrote:That was it... Aswesome! Thank you all very much for your assistance.When I do this, how do I ensure that the program is able to locate the font after extraction without "installing" it?I think AddFontResource from the SDK will do that. http://msdn.microsoft.com/en-us/library/dd183326(VS.85).aspx
May 06 2009
Use ubyte[] fontbytes = cast(ubyte[])import("yourfont.ttf");
May 05 2009
grauzone wrote:Use ubyte[] fontbytes = cast(ubyte[])import("yourfont.ttf");That is so cool. I've seen the import() expression mentioned here on the NG before. It returns a string containing the imported source file, right? Is it mentioned anywhere in the docs? I can't seem to find it. -Lars
May 05 2009
http://digitalmars.com/d/1.0/expression.html#ImportExpression It returns a char[], which is a misdesign, because the loaded file can be binary data as well. I think.
May 06 2009
grauzone wrote:http://digitalmars.com/d/1.0/expression.html#ImportExpression It returns a char[], which is a misdesign, because the loaded file can be binary data as well. I think.The file could also contain non-utf8 text, which should also not be stored in a char[]. char[] is for utf-8 only. -- Rainer Deyke - rainerd eldwood.com
May 06 2009
On 5/6/2009 1:39 PM, grauzone wrote:Use ubyte[] fontbytes = cast(ubyte[])import("yourfont.ttf");This will take care of making sure the font is available. How do you instruct the library (DFL in this case) that this variable contains the font or that after you write it back to the hard drive to refer to the file? A font that is not installed, but instead, simply residing in a folder of your choosing?
May 06 2009