Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
September 05, 2013 [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
I am searching the right way to find fonts folder for each platforms (Windows, linux, macOS X) On Windows it's generally "C:\Windows\Fonts" but a direct access seems brutal, it's certainly expected to retrieve this path by using some register keys? Is someone know how it works for linux and/or macOS X? I need to be able to retrieve fastest as possible the right file from the font and family name. |
September 05, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flamaros | On Thu, 05 Sep 2013 21:48:03 +0200, Flamaros wrote: > I am searching the right way to find fonts folder for each platforms > (Windows, linux, macOS X) > > On Windows it's generally "C:\Windows\Fonts" but a direct access seems brutal, it's certainly expected to retrieve this path by using some register keys? > > Is someone know how it works for linux and/or macOS X? > > I need to be able to retrieve fastest as possible the right file from the font and family name. For linux, see fontconfig: http://en.wikipedia.org/wiki/Fontconfig http://www.freedesktop.org/software/fontconfig/fontconfig-user.html |
September 05, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Justin Whear | On Thursday, 5 September 2013 at 19:59:20 UTC, Justin Whear wrote:
> On Thu, 05 Sep 2013 21:48:03 +0200, Flamaros wrote:
>
>> I am searching the right way to find fonts folder for each platforms
>> (Windows, linux, macOS X)
>>
>> On Windows it's generally "C:\Windows\Fonts" but a direct access seems
>> brutal, it's certainly expected to retrieve this path by using some
>> register keys?
>>
>> Is someone know how it works for linux and/or macOS X?
>>
>> I need to be able to retrieve fastest as possible the right file from
>> the font and family name.
>
>
> For linux, see fontconfig:
> http://en.wikipedia.org/wiki/Fontconfig
> http://www.freedesktop.org/software/fontconfig/fontconfig-user.html
Thx
|
September 06, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flamaros | On 2013-09-05 21:48, Flamaros wrote: > I am searching the right way to find fonts folder for each platforms > (Windows, linux, macOS X) > > On Windows it's generally "C:\Windows\Fonts" but a direct access seems > brutal, it's certainly expected to retrieve this path by using some > register keys? > > Is someone know how it works for linux and/or macOS X? > > I need to be able to retrieve fastest as possible the right file from > the font and family name. The paths used for fonts on Mac OS X are the ones listed in this table: http://support.apple.com/kb/HT2435 To programmatically work with fonts, have a look at these API's: https://developer.apple.com/library/mac/documentation/Carbon/Reference/CTFontRef/Reference/reference.html https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CGFont/Reference/reference.html https://developer.apple.com/library/mac/documentation/TextFonts/Conceptual/CocoaTextArchitecture/FontHandling/FontHandling.html#//apple_ref/doc/uid/TP40009459-CH5-SW1 That last link describes an Objective-C API. -- /Jacob Carlborg |
September 06, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flamaros | On Thursday, 5 September 2013 at 19:48:07 UTC, Flamaros wrote: > I am searching the right way to find fonts folder for each platforms (Windows, linux, macOS X) > > On Windows it's generally "C:\Windows\Fonts" but a direct access seems brutal, it's certainly expected to retrieve this path by using some register keys? > > Is someone know how it works for linux and/or macOS X? > > I need to be able to retrieve fastest as possible the right file from the font and family name. Windows: call SHGetKnownFolderPath with FOLDERID_Fonts as rfid. http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188%28v=vs.85%29.aspx |
September 06, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tourist | On Friday, 6 September 2013 at 16:05:43 UTC, Tourist wrote:
> On Thursday, 5 September 2013 at 19:48:07 UTC, Flamaros wrote:
>> I am searching the right way to find fonts folder for each platforms (Windows, linux, macOS X)
>>
>> On Windows it's generally "C:\Windows\Fonts" but a direct access seems brutal, it's certainly expected to retrieve this path by using some register keys?
>>
>> Is someone know how it works for linux and/or macOS X?
>>
>> I need to be able to retrieve fastest as possible the right file from the font and family name.
>
> Windows: call SHGetKnownFolderPath with FOLDERID_Fonts as rfid.
>
> http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188%28v=vs.85%29.aspx
Nice, thx.
Do you know if there is a table of fonts and there family, or need open all font file my self?
|
October 15, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flamaros | On Friday, 6 September 2013 at 20:54:53 UTC, Flamaros wrote: > On Friday, 6 September 2013 at 16:05:43 UTC, Tourist wrote: >> On Thursday, 5 September 2013 at 19:48:07 UTC, Flamaros wrote: >>> I am searching the right way to find fonts folder for each platforms (Windows, linux, macOS X) >>> >>> On Windows it's generally "C:\Windows\Fonts" but a direct access seems brutal, it's certainly expected to retrieve this path by using some register keys? >>> >>> Is someone know how it works for linux and/or macOS X? >>> >>> I need to be able to retrieve fastest as possible the right file from the font and family name. >> >> Windows: call SHGetKnownFolderPath with FOLDERID_Fonts as rfid. >> >> http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188%28v=vs.85%29.aspx > > Nice, thx. > > Do you know if there is a table of fonts and there family, or need open all font file my self? I need to do some more tests, but scanning the registry seems working under Windows. Here is my test code : string fontPathFromName(in string name, in Font.Family family = Font.Family.Regular) { version(Windows) { import std.windows.registry; string fontPath = "C:/Windows/Fonts/"; string fontFileName; Key fontKey; fontKey = Registry.localMachine().getKey("Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"); if (family == Font.Family.Regular) fontFileName = fontKey.getValue(name ~ " (TrueType)").value_EXPAND_SZ(); else if (family == Font.Family.Bold) fontFileName = fontKey.getValue(name ~ " Bold (TrueType)").value_EXPAND_SZ(); else if (family == Font.Family.Italic) fontFileName = fontKey.getValue(name ~ " Italic (TrueType)").value_EXPAND_SZ(); else if (family == (Font.Family.Bold | Font.Family.Italic)) fontFileName = fontKey.getValue(name ~ " Bold Italic (TrueType)").value_EXPAND_SZ(); return fontPath ~ fontFileName; } } unittest { assert(fontPathFromName("Arial") == "C:/Windows/Fonts/arial.ttf"); assert(fontPathFromName("arial") == "C:/Windows/Fonts/arial.ttf"); // Test with wrong case assert(fontPathFromName("Arial", Font.Family.Bold | Font.Family.Italic) == "C:/Windows/Fonts/arialbi.ttf"); } |
November 08, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flamaros | On Tuesday, 15 October 2013 at 23:10:32 UTC, Flamaros wrote:
> On Friday, 6 September 2013 at 20:54:53 UTC, Flamaros wrote:
>> On Friday, 6 September 2013 at 16:05:43 UTC, Tourist wrote:
>>> On Thursday, 5 September 2013 at 19:48:07 UTC, Flamaros wrote:
>>>> I am searching the right way to find fonts folder for each platforms (Windows, linux, macOS X)
>>>>
>>>> On Windows it's generally "C:\Windows\Fonts" but a direct access seems brutal, it's certainly expected to retrieve this path by using some register keys?
>>>>
>>>> Is someone know how it works for linux and/or macOS X?
>>>>
>>>> I need to be able to retrieve fastest as possible the right file from the font and family name.
>>>
>>> Windows: call SHGetKnownFolderPath with FOLDERID_Fonts as rfid.
>>>
>>> http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188%28v=vs.85%29.aspx
>>
>> Nice, thx.
>>
>> Do you know if there is a table of fonts and there family, or need open all font file my self?
>
> I need to do some more tests, but scanning the registry seems working under Windows.
> Here is my test code :
>
> string fontPathFromName(in string name, in Font.Family family = Font.Family.Regular)
> {
> version(Windows)
> {
> import std.windows.registry;
>
> string fontPath = "C:/Windows/Fonts/";
> string fontFileName;
> Key fontKey;
>
> fontKey = Registry.localMachine().getKey("Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts");
>
> if (family == Font.Family.Regular)
> fontFileName = fontKey.getValue(name ~ " (TrueType)").value_EXPAND_SZ();
> else if (family == Font.Family.Bold)
> fontFileName = fontKey.getValue(name ~ " Bold (TrueType)").value_EXPAND_SZ();
> else if (family == Font.Family.Italic)
> fontFileName = fontKey.getValue(name ~ " Italic (TrueType)").value_EXPAND_SZ();
> else if (family == (Font.Family.Bold | Font.Family.Italic))
> fontFileName = fontKey.getValue(name ~ " Bold Italic (TrueType)").value_EXPAND_SZ();
> return fontPath ~ fontFileName;
> }
> }
>
> unittest
> {
> assert(fontPathFromName("Arial") == "C:/Windows/Fonts/arial.ttf");
> assert(fontPathFromName("arial") == "C:/Windows/Fonts/arial.ttf"); // Test with wrong case
> assert(fontPathFromName("Arial", Font.Family.Bold | Font.Family.Italic) == "C:/Windows/Fonts/arialbi.ttf");
> }
I did some progress with fontconfig under linux, I'll try to use it for Windows too.
|
November 12, 2013 Re: [Font] Getting font folder on all platforms | ||||
---|---|---|---|---|
| ||||
Posted in reply to Flamaros | Le 08/11/2013 21:05, Flamaros a écrit : > On Tuesday, 15 October 2013 at 23:10:32 UTC, Flamaros wrote: >> On Friday, 6 September 2013 at 20:54:53 UTC, Flamaros wrote: >>> On Friday, 6 September 2013 at 16:05:43 UTC, Tourist wrote: >>>> On Thursday, 5 September 2013 at 19:48:07 UTC, Flamaros wrote: >>>>> I am searching the right way to find fonts folder for each >>>>> platforms (Windows, linux, macOS X) >>>>> >>>>> On Windows it's generally "C:\Windows\Fonts" but a direct access >>>>> seems brutal, it's certainly expected to retrieve this path by >>>>> using some register keys? >>>>> >>>>> Is someone know how it works for linux and/or macOS X? >>>>> >>>>> I need to be able to retrieve fastest as possible the right file >>>>> from the font and family name. >>>> >>>> Windows: call SHGetKnownFolderPath with FOLDERID_Fonts as rfid. >>>> >>>> http://msdn.microsoft.com/en-us/library/windows/desktop/bb762188%28v=vs.85%29.aspx >>>> >>> >>> Nice, thx. >>> >>> Do you know if there is a table of fonts and there family, or need >>> open all font file my self? >> >> I need to do some more tests, but scanning the registry seems working >> under Windows. >> Here is my test code : >> >> string fontPathFromName(in string name, in Font.Family family = >> Font.Family.Regular) >> { >> version(Windows) >> { >> import std.windows.registry; >> >> string fontPath = "C:/Windows/Fonts/"; >> string fontFileName; >> Key fontKey; >> >> fontKey = >> Registry.localMachine().getKey("Software\\Microsoft\\Windows >> NT\\CurrentVersion\\Fonts"); >> >> if (family == Font.Family.Regular) >> fontFileName = fontKey.getValue(name ~ " >> (TrueType)").value_EXPAND_SZ(); >> else if (family == Font.Family.Bold) >> fontFileName = fontKey.getValue(name ~ " Bold >> (TrueType)").value_EXPAND_SZ(); >> else if (family == Font.Family.Italic) >> fontFileName = fontKey.getValue(name ~ " Italic >> (TrueType)").value_EXPAND_SZ(); >> else if (family == (Font.Family.Bold | Font.Family.Italic)) >> fontFileName = fontKey.getValue(name ~ " Bold Italic >> (TrueType)").value_EXPAND_SZ(); >> return fontPath ~ fontFileName; >> } >> } >> >> unittest >> { >> assert(fontPathFromName("Arial") == "C:/Windows/Fonts/arial.ttf"); >> assert(fontPathFromName("arial") == >> "C:/Windows/Fonts/arial.ttf"); // Test with wrong case >> assert(fontPathFromName("Arial", Font.Family.Bold | >> Font.Family.Italic) == "C:/Windows/Fonts/arialbi.ttf"); >> } > > I did some progress with fontconfig under linux, I'll try to use it for > Windows too. I find a way to make it work under Windows. I also bind almost all fontconfig API in a similar way of Derelict. If someone is interested look font.d at : https://github.com/D-Quick/DQuick PS : I took fontconfig dll from GTK packages |
Copyright © 1999-2021 by the D Language Foundation