[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: iOS Default font is wrong
From:       Stephen F Northover <steve.x.northover () oracle ! com>
Date:       2013-10-30 22:10:18
Message-ID: 527183CA.6030007 () oracle ! com
[Download RAW message or body]

Eh?  Just create a bogus native control, query the font and throw the 
control away.  No text node necessary.

Stege

On 2013-10-30 4:27 PM, Richard Bair wrote:
> The only problem is that the CSS requires a UI control, so just putting a Text node \
> up gets the wrong size. Also the API we have to say get the default font will be \
> wrong. We could just hard-code in a hack for iOS maybe? 
> Richard
> 
> On Oct 30, 2013, at 12:41 PM, Felipe Heidrich <felipe.heidrich@oracle.com> wrote:
> 
> > Could we call UIFont using Objective-C Runtime
> > 
> > Something like:
> > id class_UIFont = objc_getClass("UIFont");
> > SEL sel_labelFontSize = sel_registerName("labelFontSize");
> > float size = objc_msgSend_fpret(class_UIFont, sel_labelFontSize);
> > 
> > ?
> > Anyway, we are back to the original question: What font to use.
> > Reading Richard's original request we are still not getting the recommend font \
> > which is bold. 
> > I start to think the answer to get this right in the CSS…
> > 
> > Felipe
> > 
> > 
> > On Oct 30, 2013, at 10:14 AM, Oldrich Maticka <oldrich.maticka@oracle.com> wrote:
> > 
> > > Hi,
> > > 
> > > CTFontCreateUIFontForLanguage() returns fonts with same sizes for both iOS and \
> > > Mac OS X. See table below. 
> > > Unfortunately I made a mistake when I wrote 15.0 for \
> > > CTFontCreateUIFontForLanguage(kCTFontPushButtonFontType) font size, \
> > > unfortunately it is 13.0. Other sizes reported were correct (I have verified it \
> > > yet once). 
> > > 
> > > iPad3 (iOS7.0)	MacOSX 10.8
> > > kCTFontUserFontType	12	12
> > > kCTFontUserFixedPitchFontType	10	10
> > > kCTFontSystemFontType	13	13
> > > kCTFontEmphasizedSystemFontType	13	13
> > > kCTFontSmallSystemFontType	11	11
> > > kCTFontSmallEmphasizedSystemFontType	11	11
> > > kCTFontMiniSystemFontType	9	9
> > > kCTFontMiniEmphasizedSystemFontType	9	9
> > > kCTFontViewsFontType	12	12
> > > kCTFontApplicationFontType	13	13
> > > kCTFontLabelFontType	10	10
> > > kCTFontMenuTitleFontType	14	14
> > > kCTFontMenuItemFontType	14	14
> > > kCTFontMenuItemMarkFontType	14	14
> > > kCTFontMenuItemCmdKeyFontType	14	14
> > > kCTFontWindowTitleFontType	13	13
> > > kCTFontPushButtonFontType	13	13
> > > kCTFontUtilityWindowTitleFontType	11	11
> > > kCTFontAlertHeaderFontType	13	13
> > > kCTFontSystemDetailFontType	9	9
> > > kCTFontEmphasizedSystemDetailFontType	9	9
> > > kCTFontToolbarFontType	11	11
> > > kCTFontSmallToolbarFontType	10	10
> > > kCTFontMessageFontType	13	13
> > > kCTFontPaletteFontType	11	11
> > > kCTFontToolTipFontType	11	11
> > > kCTFontControlContentFontType	12	12
> > > 
> > > Oldrich
> > > 
> > > On 10/30/13 4:38 PM, Felipe Heidrich wrote:
> > > > Hi,
> > > > 
> > > > Correct me if I'm wrong, to use UIWhatever or NSWhatever we will need \
> > > > Objective-C (or use the ugly objc_msgSend). That is more work as we don't \
> > > > have Objective-C in native font code. Besides, creating a Button requires, \
> > > > usually,  a lot more boilerplate code. We will also have to link to UIKit \
> > > > frameworks, etc. 
> > > > Now, creating a CTFont using  \
> > > > CTFontCreateUIFontForLanguage(kCTFontPushButtonFontType) would be a very easy \
> > > > change. 
> > > > Oldrich, could you please prepare a table with the fontSize for all values on \
> > > > CTFontUIFontType for MacOSX and iOS ? 
> > > > Thanks
> > > > 
> > > > 
> > > > On Oct 30, 2013, at 6:38 AM, Stephen F Northover \
> > > > <steve.x.northover@oracle.com> wrote: 
> > > > > Let's use UIButton as this seems to match the stack overflow discussion.
> > > > > 
> > > > > Steve
> > > > > 
> > > > > On 2013-10-30 7:51 AM, Oldrich Maticka wrote:
> > > > > > I have tried simple app with several controls. Fonts in Interface Builder \
> > > > > > - 
> > > > > > UIButton - System 15.0
> > > > > > UILabel  - System 17.0
> > > > > > UITextField - System 14.0
> > > > > > UITextView - System 14.0
> > > > > > 
> > > > > > Same fontsize - 15.0 has UIButton's label created at runtime.
> > > > > > 
> > > > > > UIFont class methods for getting system font information return:
> > > > > > + labelFontSize             17.0
> > > > > > + buttonFontSize          18.0
> > > > > > + smallSystemFontSize 12.0
> > > > > > + systemFontSize         14.0
> > > > > > 
> > > > > > 
> > > > > > In fx Java_com_sun_javafx_font_MacFontFinder_getSystemFontSize returns \
> > > > > > 13.0 
> > > > > > We can use different CTFontUIFontType in this method to return something \
> > > > > > "better" than 13.0 - e.g. with kCTFontPushButtonFontType as an argument \
> > > > > > to CTFontCreateUIFontForLanguage() it returns 15.0, but we need to \
> > > > > > decide, what we want to use as default. Should be our system default the \
> > > > > > size same as for UIButton, UILabel or other control? 
> > > > > > 
> > > > > > I was using iPad3 (iOS 7.0, Xcode 5.0).
> > > > > > 
> > > > > > Olda
> > > > > > 
> > > > > > On 10/29/13 7:32 PM, Stephen F Northover wrote:
> > > > > > > I was going to create a dummy control (say a Button) and ask for the \
> > > > > > > font.  Just an idea. 
> > > > > > > Steve
> > > > > > > 
> > > > > > > On 2013-10-29 2:18 PM, Felipe Heidrich wrote:
> > > > > > > > The code Richard sent is creating a dummy font and asking for its \
> > > > > > > > size. 
> > > > > > > > The problem is that there are about 3 thousand different fonts on the \
> > > > > > > > Mac ;-) 
> > > > > > > > Here we are creating a CTFont. For Mac OS X most native apps probably \
> > > > > > > > would be using a NSFont (cause that is what cocoa controls take). \
> > > > > > > > Likewise on iOS I think the "common" font is UIFont (cause I think \
> > > > > > > > that is what UIKIt controls take). 
> > > > > > > > Could anyone fire up Xcode, create a dummy iOS app, create a UIFont \
> > > > > > > > and see what is the size ? 
> > > > > > > > Felipe
> > > > > > > > 
> > > > > > > > 
> > > > > > > > On Oct 29, 2013, at 8:40 AM, Stephen F Northover \
> > > > > > > > <steve.x.northover@oracle.com> wrote: 
> > > > > > > > > If the OS is reporting the wrong value for the default a classic \
> > > > > > > > > trick is to create a dummy control that normally has the font we \
> > > > > > > > > want and query that. 
> > > > > > > > > Steve
> > > > > > > > > 
> > > > > > > > > On 2013-10-29 11:21 AM, Richard Bair wrote:
> > > > > > > > > > Hi guys,
> > > > > > > > > > 
> > > > > > > > > > The default font for iOS is supposed to be System Bold 15 \
> > > > > > > > > > (according to \
> > > > > > > > > > http://stackoverflow.com/questions/17325152/what-size-font-is-the-title-in-a-default-uibutton \
> > > > > > > > > > anyway), and it does look more correct to me. Our code is getting \
> > > > > > > > > > to this native method in MacFontFinder.c 
> > > > > > > > > > JNIEXPORT jfloat JNICALL \
> > > > > > > > > > Java_com_sun_javafx_font_MacFontFinder_getSystemFontSize (JNIEnv \
> > > > > > > > > > *env, jclass obj) {
> > > > > > > > > > CTFontRef font = CTFontCreateUIFontForLanguage(
> > > > > > > > > > kCTFontSystemFontType,
> > > > > > > > > > 0.0, //get system font with default size
> > > > > > > > > > NULL);
> > > > > > > > > > jfloat systemFontDefaultSize = (jfloat) CTFontGetSize (font);
> > > > > > > > > > CFRelease(font);
> > > > > > > > > > return systemFontDefaultSize;
> > > > > > > > > > }
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > However it appears the return value is 13 instead of 15 (and I \
> > > > > > > > > > don't know what the actual default font family / weight is that \
> > > > > > > > > > we're returning). It is possible the answer coming from this \
> > > > > > > > > > native API call is "wrong". Any ideas? 
> > > > > > > > > > Richard


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic