including fonts

Phil Race philip.race at oracle.com
Mon Jan 4 19:43:13 UTC 2016


Hi,

I can't speak authoritatively on the CSS implementation because I am not
familiar with it but here are some thoughts and observations that might 
help.

Suppose you have :
@font-face {
   font-family: RobotoMedium
   src: url("robotomedium.ttf"
}

My reading of the W3C spec. is that the name you specify as font-family
is used by CSS as the family name regardless of the *actual* name of the 
font
but I don't think FX can be working like that if it ignores font-family.

If CSS is ignoring everything except src that seems like
you then need to know for sure yourself what the family + style of the 
font is
and per that bug then use it via fx-font using the actual name+style.
This suggests CSS is loading the font into the list of fonts available 
to be used
by creating fonts directly from JavaFX API.
This seems to be confirmed by you seeing that Font.getFontNames()
reports these.

So you'd need to do the following for both font files
ie.

@font-face {
   font-family: BlahBlahDoesNotMatterApparently
   src: url("robotomedium.ttf")
}


@font-face {
   font-family: BlahBlahDoesNotMatterEither
   src: url("robotomediumitalic.ttf")
}

and reference as :

-fx-font: normal normal 12 "Roboto Medium"
-fx-font: italic normal 12 "Roboto Medium"

If this does not work then I don't know what CSS might be doing in its 
lookup.
The comment about only the last one loaded being available does not add 
up to me
unless CSS is doing some buggy filtering or remembering of its own.
Perhaps explicitly specifying "normal" will fix that.

-phil.

On 01/04/2016 12:08 AM, Tom Eugelink wrote:
> No problem, thanks for the suggestion!
>
> What I expect to be the cause is that the attributes in @font-face, 
> specifying if a font is italic or not, are not supported. And they 
> probably aren't populated based on the TTF metadata either. But before 
> I dive too deep, maybe someone can prevent me from swimming in the 
> wrong direction.
>
> Tom
>
>
> On 4-1-2016 00:02, cogmission (David Ray) wrote:
>> I guess I was assuming the "ideal"/expected behavior applied? Sorry...
>>
>> On Sun, Jan 3, 2016 at 10:14 AM, Tom Eugelink <tbee at tbee.org 
>> <mailto:tbee at tbee.org>> wrote:
>>
>>     Hi David,
>>
>>     Which would assume that if I specify no keywords, then it should 
>> take the normal version. It does not. Whatever version is loaded last 
>> is used.
>>
>>     Tom
>>
>>
>>
>>     On 3-1-2016 17:09, cogmission (David Ray) wrote:
>>
>>         Hi Tom,
>>
>>         I Believe in CSS, once you establish the family you can 
>> access the sub-types via type keywords?
>>         ...via
>>
>>         -fx-font-weight: bold,bolder etc.
>>         -fx-font-style: plain, italic
>>
>>         Cheers,
>>         David
>>
>>         On Sun, Jan 3, 2016 at 8:52 AM, Tom Eugelink <tbee at tbee.org 
>> <mailto:tbee at tbee.org> <mailto:tbee at tbee.org <mailto:tbee at tbee.org>>> 
>> wrote:
>>
>>             Addendum:
>>
>>             If I list the font families using Font.getFamilies() I 
>> get "Roboto Medium" once, given that both TTF files are added using 
>> @font-face. But if I examine Font.getFontNames() I get separate 
>> entries for "Roboto Medium" and "Roboto Medium Italic". Closer 
>> examination of the font loading reveals that indeed each font has its 
>> own distinct name and some fonts shared the same family name. That 
>> makes sense.
>>
>>             The thing is that in CSS -as far as I can see- fonts can 
>> only accessed through its family name, not its own name.
>>
>>             Tom
>>
>>
>>
>>             On 3-1-2016 11:21, Tom Eugelink wrote:
>>
>>                 I'm currently including Google's Roboto font in 
>> JFXtras and making it easily available to other users. I noticed that 
>> the font-family attribute in font-face is ignored, and you have to 
>> use the name as it is specified in the TTF file. I found 
>> https://bugs.openjdk.java.net/browse/JDK-8094516 which says "/Please 
>> note that all @font‑face descriptors are ignored except for the src 
>> descriptor./" That pretty much explains what is going on.
>>
>>                 Now, Roboto comes in different styles, condensed, 
>> bold, etc, but also italic. However, italic is a separate TTF file, 
>> so you have a Roboto-Medium.ttf and a Roboto-MediumItalic.ttf. The 
>> name of the font inside these two TTF files is the same, so when I 
>> use "font-family: 'Roboto Medium'" whatever ever font is defined last 
>> by font-face is used, and the other is not accessible.
>>
>>                 My question is: is the way Roboto does Italic, with 
>> the same font name in the TTF file, a bug of Roboto, or is this common?
>>
>>                 Tom
>>
>>
>>
>>
>>
>>         --         /With kind regards,/
>>         David Ray
>>         Java Solutions Architect
>>         *Cortical.io <http://cortical.io/>*
>>         Sponsor of: HTM.java <https://github.com/numenta/htm.java>
>>         d.ray at cortical.io <mailto:d.ray at cortical.io> 
>> <mailto:d.ray at cortical.io <mailto:d.ray at cortical.io>>
>>         http://cortical.io <http://cortical.io/>
>>
>>
>>
>>
>>
>> -- 
>> /With kind regards,/
>> David Ray
>> Java Solutions Architect
>> *Cortical.io <http://cortical.io/>*
>> Sponsor of: HTM.java <https://github.com/numenta/htm.java>
>> d.ray at cortical.io <mailto:d.ray at cortical.io>
>> http://cortical.io <http://cortical.io/>
>



More information about the openjfx-dev mailing list