including fonts

Philip Race philip.race at oracle.com
Tue Jan 5 16:11:01 UTC 2016


Hi,
That was a bit too vague for me to know what you mean.

Also there is no relationship with "AWT" (actually "Java 2D") fonts.
The Java FX API and implementation is completely independent of
anything in the core Java SE platform.

One point that might not have been clear enough is that you
shouldn't expect (for example) DirectWrite or CoreText to
understand the semantics of CSS and directly support accepting
CSS style parameters and managing CSS contexts. All of that
needs to belong to an "application layer" which is what the brower 
really  is,
and sits on top of those platform APIs.
And in this case the equivalent is the FX CSS implementation which sits
on top of the FX font API.

-phil.

On 1/5/16, 5:35 AM, Tom Eugelink wrote:
> It should, but it does not. It seems the whole font management is 
> based on AWT Font and that is missing a lot of CSS features.
>
> Tom
>
> On 4-1-2016 22:46, Phil Race wrote:
>> Hi,
>>
>> I'm not certain I understand what it is that is missing.
>> I don't think Font.loadFont would need to accept the CSS parameters
>> and do the CSS-style lookup. @font-face should populate a CSS table
>> of names and styles. I expect that is what browsers do.
>> The CSS lookup code would then consult this internal table of fonts 
>> loaded
>> for the current CSS context and then ask the font system to use the one
>> that corresponds. If there is no match then it would be assumed it is a
>> request for a system provided font.
>>
>> One thing that might be missing in Font.loadFont() is a way to keep 
>> the CSS
>> loaded fonts partioned. And there's a need for deriving a font with 
>> different attributes
>> as simple as a different size.
>>
>>
>> -phil.
>>
>>
>> On 01/04/2016 01:36 PM, David Grieve wrote:
>>> The reason CSS ignores everything but src is that there is no public 
>>> API in Font for providing the additional information.
>>>
>>> CSS uses Font.loadFont to load a font from a @font-face src url. See 
>>> com/sun/javafx/css/StyleManager.java
>>>
>>> On 1/4/16 2:43 PM, Phil Race wrote:
>>>> 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